Italian Errore compilazione in programma di gestione per database

Discussion in 'Italian Forum' started by Sberla, Apr 16, 2015.

  1. Sberla

    Sberla Active Member Licensed User

    Salve, sto scrivendo un programma per basic4android che gestisce un database;
    nell'insert ho incontrato un errore di compilazione a cui non trovo soluzione, qui il codice e l'errore.

    69 Sub Button1_Click
    70 sql1.ExecNonQuery("INSERT INTO table1 VALUES('id', 'cognome', 'nome')")
    71 sql1.ExecNonQuery2("INSERT INTO table1 VALUES(NULL,?, ?)", Array As
    Object(EditText2.Text,EditText3.Text))
    72 End Sub

    Errore:
    Error occurred on line: 70 (main)
    android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed
    at android.database.sqlite.SQLiteStatement.native_execute(Native Method)
    at android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:92)
    at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1899)
    at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1839)
    at anywheresoftware.b4a.sql.SQL.ExecNonQuery(SQL.java:67)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at anywheresoftware.b4a.shell.Shell.runVoidMethod(Shell.java:680)
    at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:308)
    at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:238)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:121)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:175)
    at anywheresoftware.b4a.BA.raiseEvent(BA.java:171)
    at anywheresoftware.b4a.objects.ViewWrapper$1.onClick(ViewWrapper.java:77)
    at android.view.View.performClick(View.java:3511)
    at android.view.View$PerformClick.run(View.java:14109)
    at android.os.Handler.handleCallback(Handler.java:605)
    at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:4424)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    at dalvik.system.NativeStart.main(Native Method)
     
  2. klaus

    klaus Expert Licensed User

    Have you tried to remove line 70.
     
  3. gyruss68

    gyruss68 Member Licensed User

    Ciao,
    che formato hanno i campi della tabella ?
    id è intero ? tu lo stai inserendo come stringa.
     
  4. LucaMs

    LucaMs Expert Licensed User

    Ha ragione Klaus (come sempre ;)) la riga 70 è sbagliata e superflua (l'errore ricevuto è perché id sarà stato dichiarato intero con autoincremento e il valore passato è testo - 'id').

    Io penso che @Sberla ritenesse necessario indicare anche i nomi dei campi; questo si può fare in un'unica query:

    INSERT INTO NomeTabella (campo1, campo2, campo3,...campoN)
    VALUES (valore1, valore2, valore3,...valoreN)
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice