2017-02-04 3 views
0

Я пытаюсь создать две таблицы в одной БД в Android. Но все же у меня есть одна ошибка и я не знаю, что делать.Две таблицы в Android (SQLite)

Вот мой 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);

ответ

1

изменить запрос:

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

спасибо, что он работает сейчас :) – erikkockar

+0

вы можете проголосовать, если ваша проблема решена –

-1

Используйте этот метод, чтобы создать две таблицы в одной базе данных.

public static final String DATABASE_NAME = "sy_call_logs"; 
public static final int DATABASE_VERSION = 4; 


public static final String TABLE_NAME_PHONE_CALL_LOG = "phone_call_log"; 
public static final String COLUMN_PHONE_CALL_LOG_ID = "id"; 
public static final String COLUMN_PHONE_CALL_LOG_NUMBER = "number"; 
public static final String COLUMN_PHONE_CALL_LOG_CALL_TYPE = "callType"; 
public static final String COLUMN_PHONE_CALL_LOG_START_TIME = "startTime"; 
public static final String COLUMN_PHONE_CALL_LOG_ACTUAL_START_TIME = "actualStartTime"; 
public static final String COLUMN_PHONE_CALL_LOG_END_TIME = "endTime"; 
public static final String COLUMN_PHONE_CALL_LOG_CALL_DURATION = "callDuration"; 
public static final String COLUMN_PHONE_CALL_LOG_CALL_STATUS = "callStatus"; 
public static final String COLUMN_PHONE_CALL_LOG_CALL_RECORD = "callRecord"; 


public static final String TABLE_NAME_PHONE_RECORDABLE = "phone_recordable"; 
public static final String COLUMN_PHONE_RECORDABLE_ID = "id"; 
public static final String COLUMN_PHONE_RECORDABLE_NUMBER = "contact_number"; 


public static final String CREATING_TABLE = " CREATE TABLE " + TABLE_NAME_PHONE_CALL_LOG + 
     "(" + COLUMN_PHONE_CALL_LOG_ID + " INTEGER PRIMARY KEY, " + 
     COLUMN_PHONE_CALL_LOG_NUMBER + " INTIGER, " + COLUMN_PHONE_CALL_LOG_CALL_TYPE + " TEXT, " 
     + COLUMN_PHONE_CALL_LOG_START_TIME + " TIMESTAMP, " + 
     COLUMN_PHONE_CALL_LOG_ACTUAL_START_TIME + " TIMESTAMP, " + COLUMN_PHONE_CALL_LOG_END_TIME + " TIMESTAMP, " + 
     COLUMN_PHONE_CALL_LOG_CALL_DURATION + " TIMESTAMP, " + COLUMN_PHONE_CALL_LOG_CALL_STATUS + " TEXT, " + 
     COLUMN_PHONE_CALL_LOG_CALL_RECORD + " TEXT " + ") "; 

public static final String CREATE_SELECTED_CONTACT = " CREATE TABLE " + TABLE_NAME_PHONE_RECORDABLE + 
     "(" + COLUMN_PHONE_RECORDABLE_ID + " INTEGER PRIMARY KEY, " 
     + COLUMN_PHONE_RECORDABLE_NUMBER + " TEXT" + ")"; 


SQLiteDatabase sqLiteDatabase; 


public DbHelper(Context context) { 

    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
} 

@Override 
public void onCreate(SQLiteDatabase sqLiteDatabase) { 


    sqLiteDatabase.execSQL(CREATING_TABLE); 

    sqLiteDatabase.execSQL(CREATE_SELECTED_CONTACT); 

    Log.e("Database OPERATIONS", "Table created..."); 
} 

@Override 
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) { 

    sqLiteDatabase.execSQL(" DROP TABLE IF EXISTS " + TABLE_NAME_PHONE_CALL_LOG); 
    sqLiteDatabase.execSQL(" DROP TABLE IF EXISTS " + TABLE_NAME_PHONE_RECORDABLE); 
    onCreate(sqLiteDatabase); 

} 
Смежные вопросы