Android中的两个表(SQLite)

erikkockar

我正在尝试在Android的一个数据库中创建两个表。但是我仍然有一个错误,也不知道该怎么办。

这是我的DbHelper类

private static final String DB_NAME="DBbudik";
private static final int DB_VER = 2;
//public static final String IDevent = "IDevent";
//Tabulka pre poznámky
public static final String DB_TABLE="Task";
public static final String DB_COLUMN = "TaskName";
//Tabulka pre udalosti
public static final String DB_TABLE2="DayEvent";
public static final String DB_COLUMN1="DayEventName";
public static final String DB_COLUMN2="DayEventPlace";
public static final String DB_COLUMN3="DayEventTime";
public static final String DB_COLUMN4="DayEventDate";
public static final String DB_COLUMN5="DayEventNote";



public DbHelper(Context context) {
    super(context, DB_NAME, null, DB_VER);
}

@Override
public void onCreate(SQLiteDatabase db) {
    String query = String.format("CREATE TABLE %s (ID INTEGER PRIMARY KEY AUTOINCREMENT,%s TEXT NOT NULL);",DB_TABLE,DB_COLUMN);
    String query2 = String.format("CREATE TABLE %s (ID INTEGER PRIMARY KEY AUTOINCREMENT, %s TEXT NOT NULL, %s TEXT NOT NULL, %s TEXT NOT NULL, %s TEXT NOT NULL, %s TEXT NOT NULL);",DB_TABLE2,DB_COLUMN1,DB_COLUMN2,DB_COLUMN3,DB_COLUMN4,DB_COLUMN5);
    db.execSQL(query);
    db.execSQL(query2);

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    String query = String.format("DELETE TABLE IF EXISTS %s",DB_TABLE);
    String query2 = String.format("DELETE TABLE IF EXISTS %s",DB_TABLE2);
    db.execSQL(query);
    db.execSQL(query2);
    onCreate(db);
}

出现此错误,它指向第50行:

FATAL EXCEPTION: main
    Process: studiodoublek.budik, PID: 16327
    java.lang.RuntimeException: Unable to start activity ComponentInfo{studiodoublek.budik/studiodoublek.budik.Java.kalendar}: android.database.sqlite.SQLiteException: near "TABLE": syntax error (code 1): , while compiling: DELETE TABLE IF EXISTS Task
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2464)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2524)
         android.app.ActivityThread.access$900(ActivityThread.java:154)
        aandroid.app.ActivityThread$H.handleMessage(ActivityThread.java:1391)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:234)
        at android.app.ActivityThread.main(ActivityThread.java:5526)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
     Caused by: android.database.sqlite.SQLiteException: near "TABLE": syntax error (code 1): , while compiling: DELETE TABLE IF EXISTS Task
        at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
        at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:893)
        at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:504)
        at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
        at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
        at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
        at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1674)
        at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1605)
        at studiodoublek.budik.Helper.DbHelper.onUpgrade(DbHelper.java:50)

它在那里显示错误。这是第50行

db.execSQL(query);

Divyesh模式

将查询更改为:

db.execSQL("drop table if exists  %s",DB_TABLE);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章