DROP TABLE 在 sqlite 中不起作用

Posted

技术标签:

【中文标题】DROP TABLE 在 sqlite 中不起作用【英文标题】:DROP TABLE not work in sqlite 【发布时间】:2012-10-31 12:11:32 【问题描述】:

我尝试以编程方式删除表,logcat 中没有显示任何错误,但没有任何结果:

这是我的数据库助手类:

public class database1 extends SQLiteOpenHelper

    private static final String DB_Name="database";
    private static final int DB_Version=1;
    private static final String tbl_arrival1="arrival1";
    private static final String STRING_CREATE1 = "CREATE TABLE IF NOT EXISTS "+tbl_arrival1
            +" (_f_id INTEGER PRIMARY KEY AUTOINCREMENT, "
            +"f_date TEXT,"
            +"o_rder NUMERIC,"
            +"rem_com TEXT);";
    public database1 (Context ctx)
    
        super(ctx,DB_Name,null,DB_Version);
    
    @Override
    public void onCreate(SQLiteDatabase database) 
        databaseQuery.onCreate(database);
      
    public static class databaseQuery 
    
        public static void onCreate(SQLiteDatabase database)
           
            database.execSQL("DROP TABLE IF EXISTS "+tbl_arrival1);
            database.execSQL(STRING_CREATE1);
        
    

我在内容提供者中使用这个数据库助手:

database1 DBHelper ;
public Uri insert(Uri uri, ContentValues values) 
    
        long row_id;
        SQLiteDatabase sqlDB = DBHelper.getWritableDatabase();
        row_id=sqlDB.insert(tbl_arrival1, null, values);
        if(row_id>0)
        
            Uri _uri = ContentUris.withAppendedId(CONTENT_URI, row_id);
            getContext().getContentResolver().notifyChange(_uri, null);
            return _uri;
        
        throw new SQLException("Failed to insert into "+uri);
    

问题是,查询删除表不起作用!

所有建议和答案将不胜感激......

谢谢

【问题讨论】:

你试过在 OnUpdate 方法中调用 drop table 吗? 【参考方案1】:

我知道我来晚了,但这个问题对我很重要。就我而言,我尝试在单个查询中删除许多表,即。 e.

drop table if exists table_name1;
drop table if exists table_name2;
drop table if exists table_name3;

所以androidexecSQL()的实现只执行单个 sql语句

【讨论】:

我的英雄!我一直在寻找我的查询无法执行的原因,最后,有人给出了答案。你会认为他们会让 execSQL 为多个查询抛出异常或其他东西。【参考方案2】:

onCreate 在创建数据库后只会工作一次,如果对旧版本进行了任何更改,您应该使用onUpgrade() 删除表

编辑 http://www.vogella.com/articles/AndroidSQLite/article.html

【讨论】:

你能给我关于使用 onUpgrade() 的教程链接吗?我从来没有尝试过......谢谢 对我不起作用,我尝试在 onUpgrade() 中删除表,但没有结果,表保留了旧数据。我通过在 sqlExec() 方法之后放置断点来检查它,然后将数据库文件复制到我的计算机并在 sqlite 查看器程序中打开它。最重要的是,我尝试在同一个数据库上执行相同的 sql 查询,并且成功了!【参考方案3】:

您的代码似乎没问题。您正在调用 DROP TABLE 然后随后再次创建。您如何检查 DROP TABLE 不起作用?

【讨论】:

该表仍然存在旧数据

以上是关于DROP TABLE 在 sqlite 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Postgresql DROP TABLE 不起作用

Sqlite FTS5 标点符号在选择查询中不起作用

带有日期字符串的 Android SQLite rawquery 在 WHERE 子句中不起作用

table-header-group , table-footer-group 属性在 Chrome 中不起作用

bootstrap-table-filter-control 扩展在 bootstrap-table 中不起作用

与正则表达式捕获字符串一起使用时,SQLite SELECT 在 Ruby 中不起作用,但与字符串文字一起使用