Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:更新数据_Android_Sqlite - Fatal编程技术网

Android:更新数据

Android:更新数据,android,sqlite,Android,Sqlite,我的代码在更新数据时有问题。在更新类中,id是错误的,我已经在DatabaseHelper类中声明了它,但它仍然是错误的。请检查我的密码 My DatabaseHelper class: public boolean updateData(long id, String new_question, String new_ans1, String new_ans2, String new_ans3, String new_ans4, SQLiteDatabase sqLiteDataba

我的代码在更新数据时有问题。在更新类中,id是错误的,我已经在DatabaseHelper类中声明了它,但它仍然是错误的。请检查我的密码

My DatabaseHelper class:


   public boolean updateData(long id, String new_question, String new_ans1, String new_ans2, String new_ans3, String new_ans4, SQLiteDatabase sqLiteDatabase )
        {
        ContentValues contentValues = new ContentValues();

            contentValues.put(AdminContact.Question.COLUMN_QUESTION, new_question);
            contentValues.put(AdminContact.Question.COLUMN_ANSWER1, new_ans1);
            contentValues.put(AdminContact.Question.COLUMN_ANSWER2, new_ans2);
            contentValues.put(AdminContact.Question.COLUMN_ANSWER3, new_ans3);
            contentValues.put(AdminContact.Question.COLUMN_ANSWER4, new_ans4);

           // String selection = AdminContact.Question.TABLE_QUIZ + " LIKE ?";
            //String[] selection_arg = {new_question};
           int i = sqLiteDatabase.update(AdminContact.Question.TABLE_QUIZ, contentValues, AdminContact.Question.ID + "=" + id, null);
            return i > 0;

        }



    upgrade class:

     public void updateData(View view)
        {
        helper = new DatabaseHelper(this);
            sqLiteDatabase = helper.getWritableDatabase();

            String question, ans1, ans2, ans3, ans4;

            question = New_Question.getText().toString();
            ans1 = New_Ans1.getText().toString();
            ans2 = New_Ans2.getText().toString();
            ans3 = New_Ans3.getText().toString();
            ans4 = New_Ans4.getText().toString();
            helper.updateData(id,question,ans1,ans2,ans3,ans4,sqLiteDatabase);
            Toast.makeText(getApplicationContext()," Successfully Updated", Toast.LENGTH_LONG).show();
            finish();

        }

    }

您可以使用查询语言在数据库上运行简单查询。这里有一个例子

SQLiteDatabase db;
db.execSQL("create table if not exists "
                + "user"
                + "(_id integer primary key autoincrement, name text not null,  number text not null, "
                + "address text not null, status integer not null, date integer not null)");

是的,还有很多其他方法可以进行数据库操作。但对于初学者,我认为这种方法更简单。

在代码的下一行用列名替换表名

String selection = AdminContact.Question.TABLE_QUIZ + " LIKE ?";
取代

String selection = AdminContact.Question.COLUMN_QUESTION + " LIKE ?";

看看你的代码,你正在做一个单一的更新,然后不要想

String selection = AdminContact.Question.TABLE_QUIZ + " LIKE ?";`
将是最好的方式,你应该使用一个id代替,我已经修改了代码。你可以去看看。我还注释掉了代码的一部分

public int updateData(String new_question, String new_ans1, String new_ans2, String new_ans3, String new_ans4, SQLiteDatabase sqLiteDatabase ) {

ContentValues contentValues = new ContentValues();
contentValues.put(AdminContact.Question.COLUMN_QUESTION, new_question);
contentValues.put(AdminContact.Question.COLUMN_ANSWER1, new_ans1);
contentValues.put(AdminContact.Question.COLUMN_ANSWER2, new_ans2);
contentValues.put(AdminContact.Question.COLUMN_ANSWER3, new_ans3);
contentValues.put(AdminContact.Question.COLUMN_ANSWER4, new_ans4);

//  String selection = AdminContact.Question.TABLE_QUIZ + " LIKE ?";
//  String[] selection_arg = {new_question};

int count = sqLiteDatabase.update(AdminContact.Question.TABLE_QUIZ,   contentValues, KEY_ROWID + "=" + rowId, null);

return count;
}

我添加了
KEY_ROWID+“=”+ROWID
,其中ROWID是要更新的特定内容的id。您也可以通过函数将其传递给

更新数据时出现的错误。.当我单击“更新”按钮时,它只会返回到上一页,并且数据不会发生任何更改。在您的选择字符串中,我认为一定有一些列名称。.而不是表名称。.您能举个例子吗?先生???请检查我的答案。.先生Reaz mproject可以添加、查看、删除和搜索。唯一的问题是更新方法。请尝试使用类似的方法<代码>db.rawQuery(“更新”+表格单词+“设置”+关键字单词+“=””+单词.getWord()+“,”+关键字单词定义+“=”+单词.getDefinition()+”,其中“+关键字单词ID+”=”+单词.getID(),null)我应该把这些Sir??sqLiteDatabase.rawQuery(“更新问题\u表集ques='新问题',ans1='答案1',ans2='答案2',ans3='答案3',ans4='答案4'其中id=yourid',null)Sir Ibukin KEY\u ROWID+“=”+ROWID,这些是id列的名称吗?这是我的表Sir私有静态最终字符串CREATE\u QUERY=“创建表格”+AdminContact.Question.TABLE_Quike+”(“+AdminContact.Question.ID+”整型主键不为空“+AdminContact.Question.COLUMN_Question+”文本不为空“+AdminContact.Question.COLUMN_ANSWER1+”文本不为空“+AdminContact.Question.COLUMN_ANSWER3+”文本不为空,“+AdminContact.Question.COLUMN_ANSWER4+”文本不为空);”;是,它是行ID,与AdminContact.Question.ID相同。在表中创建行时,它返回一个ID(lond类型)。你需要传入它来替换我指定的rowID变量,除非你没有传入正确的ID。它应该可以工作,因为这是我在大多数需要数据库更新的应用程序中使用的。那么,你如何查询数据库中唯一的行?这和你用的身份证是一样的