Java Sqlite约束异常错误

Java Sqlite约束异常错误,java,android,sql,database,sqlite,Java,Android,Sql,Database,Sqlite,我最近在一个使用Sqlite Db检索和保存数据的应用程序中工作。我已经完成了整个项目。我的应用程序在第一次登录时运行良好。当我使用不同的用户id登录时,它抛出sqlite约束异常。我的Db字段与我使用userid作为唯一元素为用户获取值的位置相同 如何克服这个例外?否则我需要更改整个表结构 @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CRE

我最近在一个使用Sqlite Db检索和保存数据的应用程序中工作。我已经完成了整个项目。我的应用程序在第一次登录时运行良好。当我使用不同的用户id登录时,它抛出sqlite约束异常。我的Db字段与我使用userid作为唯一元素为用户获取值的位置相同

如何克服这个例外?否则我需要更改整个表结构

        @Override
            public void onCreate(SQLiteDatabase db) {
                db.execSQL("CREATE TABLE " + Table_variables + "(id INTEGER PRIMARY KEY ,var1 text, var2 text, var3 text, var4 text, var5 text, var6 text, var7 text, var8 text, var9 text, var10 text, userid text )");
                db.execSQL("CREATE TABLE " + Table_values + "(id INTEGER PRIMARY KEY , val1 text, val2 text, val3 text, val4 text, val5 text, val6 text, val7 text, val8 text, val9 text, val10 text ,userid text )");
                db.execSQL("CREATE TABLE " + Table_ListId + "(id INTEGER PRIMARY KEY , val1 text, val2 text, val3 text, val4 text, val5 text, val6 text, val7 text, val8 text, val9 text, val10 text,userid text )");

                db.execSQL("CREATE TABLE " + Table_PaymentOptions + "(id INTEGER PRIMARY KEY, var1 text, var2 text, var3 text, var4 text, var5 text, var6 text, var7 text, var8 text , userid text, randomID text)");
                db.execSQL("CREATE TABLE " + Table_PaymentRemider + "(id INTEGER PRIMARY KEY, plc text, agencyname text,amountDue text, datedue text, reminderNotes text, reminderDate text, reminderTime text, toggleOption text, userid text, uniqueID text)");
            }

    // TODO TO INSERT REGION DATA
         public boolean insertData(Context context, ArrayList list, ArrayList list1, ArrayList list2, String plcData, String agencyName, String userid) {

                SQLiteDatabase myDB = getWritableDatabase("my_paygov_secure_key");

                System.out.println("AGENCY_NAME_in DBHANDLER" + agencyName);
                if (list.size() == 0) {


                } else {

                    for (int i = 0; i < list.size(); i++) {
                        System.out.println("LIST-label and List-Edittext" + list.get(i));
                    }

                   boolean dbCheck = CheckIsDataAlreadyInDBorNot(Table_variables, "id", plcData, "userid", userid);

                    if (dbCheck) {
                        String query = "UPDATE " + Table_variables + " SET var2='" + list.get(0) + "',var3='" + list.get(1) + "',var4='" + list.get(2) + "',var5='" + list.get(3) + "',var6='" + list.get(4) + "',var7='" + list.get(5) + "',var8='" + list.get(6) + "',var9='" + list.get(7) + "',var10='" + list.get(8) + "'  WHERE id =' " + plcData + " ' and  userid='" + userid + "'";
                        String query1 = "UPDATE " + Table_values + " SET val2='" + list1.get(0) + "',val3='" + list1.get(1) + "',val4='" + list1.get(2) + "',val5='" + list1.get(3) + "',val6='" + list1.get(4) + "',val7='" + list1.get(5) + "',val8='" + list1.get(6) + "',val9='" + list1.get(7) + "',val10='" + list1.get(8) + "'  WHERE id =' " + plcData + " ' and  userid='" + userid + "'";
                        String query2 = "UPDATE " + Table_ListId + " SET val2='" + list2.get(0) + "',val3='" + list2.get(1) + "',val4='" + list2.get(2) + "',val5='" + list2.get(3) + "',val6='" + list2.get(4) + "',val7='" + list2.get(5) + "',val8='" + list2.get(6) + "',val9='" + list2.get(7) + "',val10='" + list2.get(8) + "'  WHERE id =' " + plcData + " ' and  userid='" + userid + "'";
                        myDB.execSQL(query);
                        myDB.execSQL(query1);
                        myDB.execSQL(query2);
                    } else {

                      String query = "INSERT INTO " + Table_variables + " VALUES('" + plcData + "', '" + agencyName + "','" + list.get(0) + "','" + list.get(1) + "','" + list.get(2) + "','" + list.get(3) + "','" + list.get(4) + "','" + list.get(5) + "','" + list.get(6) + "','" + list.get(7) + "','" + list.get(8) + "','" + userid + "');";
                        String query1 = "INSERT INTO " + Table_values + " VALUES('" + plcData + "','" + agencyName + "','" + list1.get(0) + "','" + list1.get(1) + "','" + list1.get(2) + "','" + list1.get(3) + "','" + list1.get(4) + "','" + list1.get(5) + "','" + list1.get(6) + "','" + list1.get(7) + "','" + list1.get(8) + "','" + userid + "');";
                        String query2 = "INSERT INTO " + Table_ListId + " VALUES('" + plcData + "','" + agencyName + "','" + list2.get(0) + "','" + list2.get(1) + "','" + list2.get(2) + "','" + list2.get(3) + "','" + list2.get(4) + "','" + list2.get(5) + "','" + list2.get(6) + "','" + list2.get(7) + "','" + list2.get(8) + "','" + userid + "');";

                        myDB.execSQL(query);
                        myDB.execSQL(query1);
                        myDB.execSQL(query2);
                    }

                   return true;
                }
                return false;

            }

    // TODO TO INSERT CARD DETAILS
         public boolean insertCardDetails(Context context, ArrayList list, String cardNumber, String userid, String randomID) {
                SQLiteDatabase myDB = getWritableDatabase("my_paygov_secure_key");

                //  Integer i = Integer.parseInt(cardNumber);
                long card = Long.valueOf(cardNumber).longValue();
                int ccnumber = (int) card;

              /* for (int i = 0; i < list.size(); i++) {
                   System.out.println("LIST VALUE" + i + list.get(i).toString());
               }*/

                boolean dbCheck = CheckIsDataAlreadyInDBorNot(Table_PaymentOptions, "randomID", randomID, "userid", userid);

                if (dbCheck) {
                    String query = "UPDATE " + Table_PaymentOptions + " SET var1='" + list.get(0) + "',var2='" + list.get(1) + "',var3='" + list.get(2) + "',var4='" + list.get(3) + "',var5='" + list.get(4) + "',var6='" + list.get(5) + "',var7='" + list.get(6) + "',var8='" + list.get(7) + "'   WHERE randomID ='" + randomID + "' and  userid='" + userid + "'";

                } else {
                    String query = "INSERT INTO " + Table_PaymentOptions + " VALUES('" + ccnumber + "', '" + list.get(0) + "','" + list.get(1) + "','" + list.get(2) + "','" + list.get(3) + "','" + list.get(4) + "','" + list.get(5) + "','" + list.get(6) + "','" + list.get(7) + "','" + userid + "', '" + randomID + "');";
                    myDB.execSQL(query);
                }
                return false;
            }

    // TO INSERT DATA FOR REMINDER

          public boolean myPaymentReminder(Context context, ArrayList list, int plcData, String userid) {
                SQLiteDatabase myDB = getWritableDatabase("my_paygov_secure_key");

                boolean dbCheck = CheckIsDataAlreadyInDBorNot(Table_PaymentRemider, "id", String.valueOf(plcData), "userid", userid);

                if (dbCheck) {
                    String query = "UPDATE " + Table_PaymentRemider + " SET agencyname='" + list.get(1) + "',amountDue='" + list.get(2) + "',dateDue='" + list.get(3) + "',reminderNotes='" + list.get(4) + "',reminderDate='" + list.get(5) + "',reminderTime='" + list.get(6) + "',toggleOption='" + list.get(7) + "', uniqueID='" + list.get(8) + "' WHERE id ='" + plcData + "' and  userid = '" + userid + "'";
                    myDB.execSQL(query);

                } else {
                    String query = "INSERT INTO " + Table_PaymentRemider + " VALUES('" + plcData + "', '" + list.get(0) + "','" + list.get(1) + "','" + list.get(2) + "','" + list.get(3) + "','" + list.get(4) + "','" + list.get(5) + "','" + list.get(6) + "','" + list.get(7) + "','" + userid + "','" + list.get(8) + "');";
                    myDB.execSQL(query);
                }
                System.out.println("PlcData" + plcData);


                return true;
            }


// TODO TO CHECK TABLE IS ALREADY PRESENT OR NOT

    public boolean CheckIsDataAlreadyInDBorNot(String TableName,
                                               String dbfield, String fieldValue, String dbfield1, String field1) {
        SQLiteDatabase myDB = getWritableDatabase("my_paygov_secure_key");
        String Query = "Select * from " + TableName + " where " + dbfield + " = " + fieldValue + " and " + dbfield1 + " = '" + field1 + "'";
        System.out.println("Check User id DB" + Query);
        Cursor cursor = myDB.rawQuery(Query, null);
        if (cursor.getCount() <= 0) {
            cursor.close();
            return false;
        }
        cursor.close();
        return true;
    }

THE EXCEPTION THAT I GET IN LOGCAT !

 net.sqlcipher.database.SQLiteConstraintException: UNIQUE constraint failed: PLC_DETAILS_TABLE_VARIABLES.id: INSERT INTO PLC_DETAILS_TABLE_VARIABLES VALUES('36400', 'Indiana-Dearborn County-Environmental Health','Name','Dearborn Enviro','','','','','','','','1e2332d3-cc60-48eb-bca0-8499097411bc');
@覆盖
public void onCreate(SQLiteDatabase db){
db.execSQL(“创建表”+表_变量+”(id整数主键、var1文本、var2文本、var3文本、var4文本、var5文本、var6文本、var7文本、var8文本、var9文本、var10文本、userid文本)”;
db.execSQL(“创建表”+表_值+”(id整数主键、val1文本、val2文本、val3文本、val4文本、val5文本、val6文本、val7文本、val8文本、val9文本、val10文本、userid文本)”;
db.execSQL(“创建表”+表_ListId+”(id整型主键,val1文本,val2文本,val3文本,val4文本,val5文本,val6文本,val7文本,val8文本,val9文本,val10文本,userid文本)”;
db.execSQL(“创建表”+表_PaymentOptions+”(id整数主键、var1文本、var2文本、var3文本、var4文本、var5文本、var6文本、var7文本、var8文本、用户id文本、randomID文本)”;
db.execSQL(“创建表”+表_PaymentRemider+”(id整数主键、plc文本、代理名称文本、金额到期文本、日期到期文本、提醒笔记文本、提醒日期文本、提醒时间文本、切换选项文本、用户id文本、唯一id文本)”;
}
//TODO以插入区域数据
公共布尔插入数据(上下文上下文、ArrayList列表、ArrayList列表1、ArrayList列表2、字符串plcData、字符串agencyName、字符串userid){
SQLiteDatabase myDB=getWritableDatabase(“my_paygov_secure_key”);
System.out.println(“代理名称”+代理名称);
if(list.size()==0){
}否则{
对于(int i=0;ipublic void onCreate(SQLiteDatabase db) {
            db.execSQL("CREATE TABLE " + Table_variables + "(id INTEGER PRIMARY KEY ,var1 text, var2 text, var3 text, var4 text, var5 text, var6 text, var7 text, var8 text, var9 text, var10 text, userid text )");
            db.execSQL("CREATE TABLE " + Table_values + "(id INTEGER PRIMARY KEY , val1 text, val2 text, val3 text, val4 text, val5 text, val6 text, val7 text, val8 text, val9 text, val10 text ,userid text )");
            db.execSQL("CREATE TABLE " + Table_ListId + "(id INTEGER PRIMARY KEY , val1 text, val2 text, val3 text, val4 text, val5 text, val6 text, val7 text, val8 text, val9 text, val10 text,userid text )");

            db.execSQL("CREATE TABLE " + Table_PaymentOptions + "(id INTEGER PRIMARY KEY, var1 text, var2 text, var3 text, var4 text, var5 text, var6 text, var7 text, var8 text , userid text, randomID text)");
            db.execSQL("CREATE TABLE " + Table_PaymentRemider + "(id INTEGER PRIMARY KEY, plc text, agencyname text,amountDue text, datedue text, reminderNotes text, reminderDate text, reminderTime text, toggleOption text, userid text, uniqueID text)");
        }
String query = "INSERT INTO " + Table_variables + " VALUES('" + plcData + "', '" + agencyName + "','" + list.get(0) + "','" + list.get(1) + "','" + list.get(2) + "','" + list.get(3) + "','" + list.get(4) + "','" + list.get(5) + "','" + list.get(6) + "','" + list.get(7) + "','" + list.get(8) + "','" + userid + "');";
String query1 = "INSERT INTO " + Table_values + " VALUES('" + plcData + "','" + agencyName + "','" + list1.get(0) + "','" + list1.get(1) + "','" + list1.get(2) + "','" + list1.get(3) + "','" + list1.get(4) + "','" + list1.get(5) + "','" + list1.get(6) + "','" + list1.get(7) + "','" + list1.get(8) + "','" + userid + "');";
String query2 = "INSERT INTO " + Table_ListId + " VALUES('" + plcData + "','" + agencyName + "','" + list2.get(0) + "','" + list2.get(1) + "','" + list2.get(2) + "','" + list2.get(3) + "','" + list2.get(4) + "','" + list2.get(5) + "','" + list2.get(6) + "','" + list2.get(7) + "','" + list2.get(8) + "','" + userid + "');";

try {
     myDB.execSQL(query);
     myDB.execSQL(query1);
     myDB.execSQL(query2);

} catch(SQLException se) {
     //do stuff when you catch a duplicate ID
 }