如何在android sqlite中添加数据?

时间:2015-08-11 17:08:52

标签: android sqlite

我想在特定的id中添加前一个中的新值,但每当我想要在新id上添加创建数据而不是添加前一个id时。

以下是我的databasehelper类的方法:

     public boolean addalldata(String value1, String value2, String value3) {

    String  previous1 = null,previous2 = null,previous3= null;
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    String myquery = "SELECT * FROM student_table WHERE id = 1";
    Cursor res = db.rawQuery(myquery, null);

    while(res.moveToNext()) {
         previous1 = res.getString(1);
         previous2 = res.getString(2);
         previous3 = res.getString(3);
    }


    contentValues.put(COL_2, value1 + previous1);
    contentValues.put(COL_3, value2 + previous2);
    contentValues.put(COL_4, value3 + previous3);
    long result = db.insert(TABLE_NAME, null, contentValues);
    if (result == -1)
        return false;
    else
        return true;}

这里是mainactivity类的方法

        private void AddAllData() {
          btnaddall.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    boolean isInserted =       myDb.addalldata(edit1.getText().toString(),
                            edit2.getText().toString(),
                            edit3.getText().toString());
                    if (isInserted = true)
                        Toast.makeText(MainActivity.this, "Data Inserted", Toast.LENGTH_LONG).show();
                    else
                        Toast.makeText(MainActivity.this, "Data not Inserted", Toast.LENGTH_LONG).show();


                }
            }
    );

}

2 个答案:

答案 0 :(得分:2)

试试这个:

public boolean addalldata(String value1, String value2, String value3) {

        String  previous1 = "0",previous2 = "0",previous3= "0";
        long result = 0;
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        String myquery = "SELECT * FROM student_table WHERE id = 1";
        Cursor res = db.rawQuery(myquery, null);
        if(res.getCount()>0){
             res.moveToFirst();
             previous1 = res.getString(1);
             previous2 = res.getString(2);
             previous3 = res.getString(3);

             try{
               contentValues.put(COL_2, Integer.parseInt(value1) + Integer.parseInt(previous1));
               contentValues.put(COL_3, Integer.parseInt(value2) + Integer.parseInt(previous2));
               contentValues.put(COL_4, Integer.parseInt(value3) + Integer.parseInt(previous3));
               result = db.update(TABLE_NAME, contentValues, "id = ?", new String[]{"1"});
             }catch(Exception e){
               result = -1;
             }


             if (result == -1)
                return false;
             else
                return true;
        }else{
           contentValues.put(COL_2, value1);
           contentValues.put(COL_3, value2);
           contentValues.put(COL_4, value3);
           result = db.insert(TABLE_NAME, null, contentValues);
           if (result == -1)
                return false;
            else
                return true;
        }

}

如果数据库中没有记录,则使用 db.insert 插入新记录,否则使用 db.update

更新现有记录

答案 1 :(得分:0)

尝试res.moveToFirst()。
这会将光标移动到第一个位置,以便从第一行开始进行更进一步的检查。