插入SQLite时出错

时间:2011-09-01 09:34:20

标签: android sqlite

09-01 14:59:09.177: ERROR/Database(5654): **Error inserting GuestName=q**
09-01 14:59:09.177: ERROR/Database(5654): android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed
09-01 14:59:09.177: ERROR/Database(5654):     at android.database.sqlite.SQLiteStatement.native_execute(Native Method)
09-01 14:59:09.177: ERROR/Database(5654):     at android.database.sqlite.SQLiteStatement.execute(SQLiteStatement.java:55)
09-01 14:59:09.177: ERROR/Database(5654):     at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1549)
09-01 14:59:09.177: ERROR/Database(5654):     at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1410)
09-01 14:59:09.177: ERROR/Database(5654):     at com.ezee.app.DatabaseHelper.AddFeedback(DatabaseHelper.java:164)
09-01 14:59:09.177: ERROR/Database(5654):     at com.ezee.app.user.Btn_Addfeedback(user.java:122)
09-01 14:59:09.177: ERROR/Database(5654):     at java.lang.reflect.Method.invokeNative(Native Method)
09-01 14:59:09.177: ERROR/Database(5654):     at java.lang.reflect.Method.invoke(Method.java:521)
09-01 14:59:09.177: ERROR/Database(5654):     at android.view.View$1.onClick(View.java:2067)
09-01 14:59:09.177: ERROR/Database(5654):     at android.view.View.performClick(View.java:2408)
09-01 14:59:09.177: ERROR/Database(5654):     at android.view.View$PerformClick.run(View.java:8816)
09-01 14:59:09.177: ERROR/Database(5654):     at android.os.Handler.handleCallback(Handler.java:587)
09-01 14:59:09.177: ERROR/Database(5654):     at android.os.Handler.dispatchMessage(Handler.java:92)
09-01 14:59:09.177: ERROR/Database(5654):     at android.os.Looper.loop(Looper.java:123)
09-01 14:59:09.177: ERROR/Database(5654):     at android.app.ActivityThread.main(ActivityThread.java:4627)
09-01 14:59:09.177: ERROR/Database(5654):     at java.lang.reflect.Method.invokeNative(Native Method)
09-01 14:59:09.177: ERROR/Database(5654):     at java.lang.reflect.Method.invoke(Method.java:521)
09-01 14:59:09.177: ERROR/Database(5654):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-01 14:59:09.177: ERROR/Database(5654):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-01 14:59:09.177: ERROR/Database(5654):     at dalvik.system.NativeStart.main(Native Method)
09-01 14:59:09.206: ERROR/Database(5654): **Error inserting GuestName=q Address=w**
09-01 14:59:09.206: ERROR/Database(5654): android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed
09-01 14:59:09.206: ERROR/Database(5654):     at android.database.sqlite.SQLiteStatement.native_execute(Native Method)
09-01 14:59:09.206: ERROR/Database(5654):     at android.database.sqlite.SQLiteStatement.execute(SQLiteStatement.java:55)
09-01 14:59:09.206: ERROR/Database(5654):     at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1549)
09-01 14:59:09.206: ERROR/Database(5654):     at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1410)
09-01 14:59:09.206: ERROR/Database(5654):     at com.ezee.app.DatabaseHelper.AddFeedback(DatabaseHelper.java:166)
09-01 14:59:09.206: ERROR/Database(5654):     at com.ezee.app.user.Btn_Addfeedback(user.java:122)
09-01 14:59:09.206: ERROR/Database(5654):     at java.lang.reflect.Method.invokeNative(Native Method)
09-01 14:59:09.206: ERROR/Database(5654):     at java.lang.reflect.Method.invoke(Method.java:521)
09-01 14:59:09.206: ERROR/Database(5654):     at android.view.View$1.onClick(View.java:2067)
09-01 14:59:09.206: ERROR/Database(5654):     at android.view.View.performClick(View.java:2408)
09-01 14:59:09.206: ERROR/Database(5654):     at android.view.View$PerformClick.run(View.java:8816)
09-01 14:59:09.206: ERROR/Database(5654):     at android.os.Handler.handleCallback(Handler.java:587)
09-01 14:59:09.206: ERROR/Database(5654):     at android.os.Handler.dispatchMessage(Handler.java:92)
09-01 14:59:09.206: ERROR/Database(5654):     at android.os.Looper.loop(Looper.java:123)
09-01 14:59:09.206: ERROR/Database(5654):     at android.app.ActivityThread.main(ActivityThread.java:4627)
09-01 14:59:09.206: ERROR/Database(5654):     at java.lang.reflect.Method.invokeNative(Native Method)
09-01 14:59:09.206: ERROR/Database(5654):     at java.lang.reflect.Method.invoke(Method.java:521)
09-01 14:59:09.206: ERROR/Database(5654):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-01 14:59:09.206: ERROR/Database(5654):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-01 14:59:09.206: ERROR/Database(5654):     at dalvik.system.NativeStart.main(Native Method)
表中的

是插入两个数据但在ddms中显示错误。 请帮我解决这个问题..

``public class DatabaseHelper扩展了SQLiteOpenHelper {

static final String dbName = "feedback";
static final String quetypetable = "Question";
static final String colquetypeID ="QuestiontypeID";
static final String colquetype = "Questiontype";

static final String anstypetable ="Answer";
static final String colanstypeID = "AnswertypeID";
static final String colansTYPE = "Answertype";

static final String questiontable = "Mainquestions";
static final String colqueID = "QuestionID";
static final String colqueName = "QuestionName";
static final String colQue = "Questiontypeid";
static final String colans = "Answertypeid";

static final String feedbacktable = "Feedback";
static final String colfeedbackId = "FeedbackId";
static final String colguestname = "GuestName";
static final String coladdress = "Address";
static final String colphone = "Phone";
static final String colemail = "Email";
static final String colsuggestion = "suggestion";
static final String colgrievances = "grievances";



public DatabaseHelper(Context context) {
    super(context, dbName, null,33);

    // TODO Auto-generated constructor stub
}

@Override
public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub

    db.execSQL("CREATE TABLE "+quetypetable+" ("+colquetypeID+ " INTEGER PRIMARY KEY , "+colquetype+ " TEXT)");

    db.execSQL("CREATE TABLE "+anstypetable+" ("+colanstypeID+ " INTEGER PRIMARY KEY , "+colansTYPE+ " TEXT)");

    db.execSQL("CREATE TABLE "+questiontable+" ("+colqueID+" INTEGER PRIMARY KEY ,"+colqueName+" text,"+colQue+" integer NOT NULL REFERENCES "+quetypetable+" ("+colquetypeID+"),"+colans+" integer  NOT NULL REFERENCES "+anstypetable+" ("+colanstypeID+"))");

    db.execSQL("CREATE TABLE "+feedbacktable+"("+colfeedbackId+" INTEGER PRIMARY KEY,"+colguestname+" text NOT NULL,"+coladdress+" text NOT NULL,"+colphone+" text NOT NULL,"+colemail+" text NOT NULL,"+colsuggestion+" text NOT NULL,"+colgrievances+" text NOT NULL )");




        }



    @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub

}


    public void AddFeedback(String gname, String add, String mail,
            String phn, String sugg, String gre) {
        // TODO Auto-generated method stub
         SQLiteDatabase db = this.getWritableDatabase();
         ContentValues cv = new ContentValues();

         cv.put(colguestname,gname);
         db.insert(feedbacktable, colguestname, cv);
         cv.put(coladdress, add);
         db.insert(feedbacktable, coladdress, cv);           
         cv.put(colphone, phn);
         db.insert(feedbacktable, colphone, cv);
         cv.put(colemail, mail);
         db.insert(feedbacktable, colemail, cv);
         cv.put(colsuggestion, sugg);
         db.insert(feedbacktable, colsuggestion, cv);
         cv.put(colgrievances,gre);
         db.insert(feedbacktable, colgrievances, cv);
         db.close();
    }

} i called function AddFeedback.at insert time

嗨balaji我用你的代码,但我得到这样的错误

09-02 11:26:49.169: ERROR/AndroidRuntime(8248): FATAL EXCEPTION: main 09-02 11:26:49.169: ERROR/AndroidRuntime(8248): java.lang.IllegalStateException: Could not execute method of the activity 09-02 11:26:49.169: ERROR/AndroidRuntime(8248): at android.view.View$1.onClick(View.java:2072) 09-02 11:26:49.169: ERROR/AndroidRuntime(8248): at android.view.View.performClick(View.java:2408) 09-02 11:26:49.169: ERROR/AndroidRuntime(8248): at android.view.View$PerformClick.run(View.java:8816) 09-02 11:26:49.169: ERROR/AndroidRuntime(8248): at android.os.Handler.handleCallback(Handler.java:587) 09-02 11:26:49.169: ERROR/AndroidRuntime(8248): at android.os.Handler.dispatchMessage(Handler.java:92) 09-02 11:26:49.169: ERROR/AndroidRuntime(8248): at android.os.Looper.loop(Looper.java:123) 09-02 11:26:49.169: ERROR/AndroidRuntime(8248): at android.app.ActivityThread.main(ActivityThread.java:4627) 09-02 11:26:49.169: ERROR/AndroidRuntime(8248): at java.lang.reflect.Method.invokeNative(Native Method) 09-02 11:26:49.169: ERROR/AndroidRuntime(8248): at java.lang.reflect.Method.invoke(Method.java:521) 09-02 11:26:49.169: ERROR/AndroidRuntime(8248): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 09-02 11:26:49.169: ERROR/AndroidRuntime(8248): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 09-02 11:26:49.169: ERROR/AndroidRuntime(8248): at dalvik.system.NativeStart.main(Native Method) 09-02 11:26:49.169: ERROR/AndroidRuntime(8248): Caused by: java.lang.reflect.InvocationTargetException 09-02 11:26:49.169: ERROR/AndroidRuntime(8248): at com.ezee.app.user.Btn_Addfeedback(user.java:114) 09-02 11:26:49.169: ERROR/AndroidRuntime(8248): at java.lang.reflect.Method.invokeNative(Native Method) 09-02 11:26:49.169: ERROR/AndroidRuntime(8248): at java.lang.reflect.Method.invoke(Method.java:521) 09-02 11:26:49.169: ERROR/AndroidRuntime(8248): at android.view.View$1.onClick(View.java:2067) 09-02 11:26:49.169: ERROR/AndroidRuntime(8248): ... 11 more 09-02 11:26:49.169: ERROR/AndroidRuntime(8248): Caused by: java.lang.NullPointerException 09-02 11:26:49.169: ERROR/AndroidRuntime(8248): at com.android.internal.os.LoggingPrintStream.println(LoggingPrintStream.java:298) 09-02 11:26:49.169: ERROR/AndroidRuntime(8248)

2 个答案:

答案 0 :(得分:1)

   public void AddFeedback(String gname, String add, String mail,
        String phn, String sugg, String gre) {
    // TODO Auto-generated method stub
     SQLiteDatabase db = this.getWritableDatabase();
     ContentValues cv = new ContentValues();

     cv.put(colguestname,gname);
     cv.put(coladdress, add);
     cv.put(colphone, phn);
     cv.put(colemail, mail);
     cv.put(colsuggestion, sugg);
     cv.put(colgrievances,gre);
     db.insert(feedbacktable, null, cv);
     db.close();
}

答案 1 :(得分:0)

检查表的结构。根据我在表结构中的知识,您可以使用约束,如外键,整数,varchar(15)等。在插入时,您的查询不满足该约束。因此,请检查表结构和SQL查询。