Autore Topic: Errore stringa SQLite  (Letto 605 volte)

Offline cadupper

  • Utente junior
  • **
  • Post: 81
  • Respect: 0
    • cadupper
    • Mostra profilo
  • Dispositivo Android:
    HTC Magic Tim (32A)
  • Play Store ID:
    cadupper
  • Sistema operativo:
    Ubuntu 10.04
Errore stringa SQLite
« il: 26 Maggio 2011, 20:43:57 CEST »
0
Ciao ragazzi! devo aver fatto un errore stupidissimo di sintassi.. ma non riesco a trovarlo!
Praticamente questo è il metodo che crea la mia tabella Spese:
Codice (Java): [Seleziona]
// create EXPENSESStable
        private static final String EXPENSES_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS "
                + expTable
                + " ("
               
                + expID
                + " INTEGER PRIMARY KEY AUTOINCREMENT , "
               
                + expName
                + " TEXT , "
               
//              + expEvent
//              + " INTEGER NOT NULL, FOREIGN KEY ("
//              + expEvent
//              + ") REFERENCES "
//              + eveTable + " (" + eveID + ") , "
               
                + expPrice
                + " REAL)";

Se decommento le 4 righe che definiscono la nuova colonna con la sua chiave esterna l'applicazione crasha all avvio. Questo è il logcat:
Codice: [Seleziona]
E/AndroidRuntime(  882): FATAL EXCEPTION: main
E/AndroidRuntime(  882): java.lang.RuntimeException: Unable to start activity ComponentInfo{it.unipd.dei.es1011.droidgrill/it.unipd.dei.es1011.droidgrill.Events}: android.database.sqlite.SQLiteException: near "ExpensesPrice": syntax error: CREATE TABLE IF NOT EXISTS ExpensesTable (_id INTEGER PRIMARY KEY AUTOINCREMENT , ExpensesName TEXT , ExpensesEvent INTEGER NOT NULL, FOREIGN KEY (ExpensesEvent) REFERENCES EventsTable (_id) , ExpensesPrice REAL)
E/AndroidRuntime(  882):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
E/AndroidRuntime(  882):         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
E/AndroidRuntime(  882):         at android.app.ActivityThread.access$2300(ActivityThread.java:125)
E/AndroidRuntime(  882):         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
E/AndroidRuntime(  882):         at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(  882):         at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(  882):         at android.app.ActivityThread.main(ActivityThread.java:4627)
E/AndroidRuntime(  882):         at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(  882):         at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime(  882):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
E/AndroidRuntime(  882):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
E/AndroidRuntime(  882):         at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(  882): Caused by: android.database.sqlite.SQLiteException: near "ExpensesPrice": syntax error: CREATE TABLE IF NOT EXISTS ExpensesTable (_id INTEGER PRIMARY KEY AUTOINCREMENT , ExpensesName TEXT , ExpensesEvent INTEGER NOT NULL, FOREIGN KEY (ExpensesEvent) REFERENCES EventsTable (_id) , ExpensesPrice REAL)
E/AndroidRuntime(  882):         at android.database.sqlite.SQLiteDatabase.native_execSQL(Native Method)
E/AndroidRuntime(  882):         at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1727)
E/AndroidRuntime(  882):         at it.unipd.dei.es1011.droidgrill.AppDB$DbHelper.onCreate(AppDB.java:340)
E/AndroidRuntime(  882):         at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:106)
E/AndroidRuntime(  882):         at it.unipd.dei.es1011.droidgrill.AppDB.open(AppDB.java:56)
E/AndroidRuntime(  882):         at it.unipd.dei.es1011.droidgrill.Events.onCreate(Events.java:41)
E/AndroidRuntime(  882):         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime(  882):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
E/AndroidRuntime(  882):         ... 11 more


Avete idea di dove sta l'errore? o_O
Ciao! :-P

Offline DarkPhoinix

  • Utente junior
  • **
  • Post: 133
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    HTC HD2 & Samsung Galaxy SII
  • Sistema operativo:
    LNX
Re:Errore stringa SQLite
« Risposta #1 il: 30 Maggio 2011, 10:27:41 CEST »
0
Caused by: android.database.sqlite.SQLiteException: near "ExpensesPrice": syntax error: CREATE TABLE IF NOT EXISTS ExpensesTable (_id INTEGER PRIMARY KEY AUTOINCREMENT , ExpensesName TEXT , ExpensesEvent INTEGER NOT NULL, FOREIGN KEY (ExpensesEvent) REFERENCES EventsTable (_id) , ExpensesPrice REAL)

è questo... io non le sto usando le FOREIGN