2012-10-31 36 views
2

我尝试在logcat的下降表编程没什么错误显示无法正常工作,但没有任何结果:DROP TABLE SQLite中

这里我的数据库Helper类:

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); 
    } 

问题是,查询放下表,不工作!

所有建议和答案将高度赞赏...

感谢

+0

你试过叫下降的OnUpdate方法表? – Yahor10

+0

尚未尝试!让我试试 –

回答

2

onCreate将在创建的时候,一旦数据库中创建你应该利用onUpgrade()如有更改删除表工作只有一次已经取得了旧版本

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

+0

你可以给我关于使用onUpgrade()的教程链接!我从来没有尝试过它..谢谢 –

+0

请检查我编辑的答案 –

+0

不适合我,我试图在onUpgrade()中删除表,但没有结果,表保留旧数据。我通过在sqlExec()方法之后放置断点来检查它,然后将数据库文件复制到我的计算机并在sqlite viewer程序中打开它。最重要的是,我试图在同一个数据库上执行相同的SQL查询,它工作! – theroom101

1

你的代码似乎很好。您正在调用DROP TABLE,然后再次创建。你如何检查DROP TABLE不起作用?

+1

该表仍与旧数据一起存在 –

0

我知道我有点晚了,但这个问题与我有关。在我的情况下,我试图在单个查询中删除很多表,我。即

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

因此Android的实施execSQL()只执行 SQL语句