java - Android中如何检查id是否存在?

标签 java android android-sqlite

我想检查 SQLite DB 中是否存在 id,然后更新该 id,如果 SQLite 中不存在 id,则插入该 id。我怎样才能做到这一点。有人可以帮助如何使用。感谢欣赏。

这是我的 Activity 代码

 public void saveResult()
    {
        AnswerOptions = (RadioButton) findViewById(Options_RadioGroup.getCheckedRadioButtonId());
        String str_AnswerOptions = AnswerOptions.getText().toString().trim();
        System.out.println("rbVal = " + str_AnswerOptions);
        if (str_AnswerOptions.equals(((Datastructure) Vectore_mquestionDatabaseStructure .get(StaticClass.QuestionNumber)).Answer))
        {
            if (!StaticClass.isTest)
            {
                try 
                {
                    DatabaseHelper databaseHelper = new DatabaseHelper(this.getApplicationContext());
                    sqdb = databaseHelper.getWritableDatabase();
                    String strCountQuery = "SELECT question_id, question_type , question_no FROM question_answers where question_id = " + convertVector ; 
                    Cursor cur = sqdb.rawQuery(strCountQuery , null);
                    if (cur.moveToFirst())
                    {
                        int iCount = cur.getCount();
                        System.out.println("iCount = " + iCount);

                        if(cur.getCount() <= 0 )
                        {
                            String strstrqueType = txtViewQuestiontype.getText().toString().trim();
                            String str_que = txtViewQuestion.getText().toString().trim();
                            String str_marks = "1";

                            databaseHelper.insertQueDetails(strQueLimit, strstrqueType, str_que, str_AnswerOptions, str_marks  , strOption_Id);
                            System.out.println("strQueLimit = " + strQueLimit + ", strstrqueType = " + strstrqueType +" , str_que = " + str_que + " , str_AnswerOptions = " + str_AnswerOptions + ", str_marks = " + str_marks + ", strOption_Id = " + strOption_Id);
                            Toast.makeText(this, " Right Answer ", Toast.LENGTH_LONG).show();


                        }
                        else 
                        {
                             cur.moveToFirst();  
                             qid = cur.getInt(cur.getColumnIndex("question_id"));
                             String strQue_Type = cur.getString(cur.getColumnIndex("question_type"));
                             String strQue_Nomber = cur.getString(cur.getColumnIndex("question_no"));

                             System.out.println("qid in checkUpdateTable() = " + qid);
                             System.out.println("strQue_Type in checkUpdateTable() = " + strQue_Type);
                             System.out.println("strQue_Nomber in checkUpdateTable()= " + strQue_Nomber);
                             QueId = qid;

                             databaseHelper.updateAnswerRow(qid, str_AnswerOptions);
                        }

                    }

                }
                catch (SQLiteException se )
                {
                    Log.e(getClass().getSimpleName(), "Could not create or Open the database");
                } 

                finally 
                {   if (sqdb != null) { sqdb.close();} }
            }
        }
    }

最佳答案

您需要在表上设置约束以触发“冲突”,然后通过替换来解决该冲突:

CREATE TABLE data   (id INTEGER PRIMARY KEY, question_id  INTEGER, question_type  TEXT, question_no TEXT);
CREATE UNIQUE INDEX data_idx ON data(question_id);

然后你可以发出:

INSERT OR REPLACE INTO data VALUES (NULL, 1, 2, 3);
INSERT OR REPLACE INTO data VALUES (NULL, 2, 2, 3);
INSERT OR REPLACE INTO data VALUES (NULL, 1, 2, 5);

关于java - Android中如何检查id是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26459527/

相关文章:

Android Toast 崩溃

android - SQLite 跨表跨列排序

android - 使用 SQL COUNT 和 SUM 的复杂查询

java - String.length() 和 String.getBytes().length 之间的区别

java - Hibernate/JPA 混合 ID 生成策略

java - 为什么我不能在 Hibernate/Struts 中访问新创建的记录?

android - 输入字符串错误 : "12" Android studio

android - 无法解析 R.id。安卓。

java - SQLite 数据库到数据类

java - 如何在按下左键时检测鼠标移动?