如何使用android中的sqlite更新特定行中的一个字段 [英] How to update one field in specific row using sqlite in android

查看:792
本文介绍了如何使用android中的sqlite更新特定行中的一个字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Sqlite开发数据库。我创建的表的模式是 Sms_Address Sms_Body Status_Msg 。消息的初始状态为0.我通过在数据库中使用 setStatus()函数将状态更新为1。但是所有行的状态都会更新。我想只更新一个名为 Status_Msg 的字段,选中复选框。



setStatus()函数如下:



  public   String  setStatus(){
SQLiteDatabase sqldb = this .getWritableDatabase();
ContentValues values = new ContentValues();
if (Status_Msg.equals(Status_Msg)){
values.put(Status_Msg, 1 < /跨度>);
sqldb.update(DB_Table1,values, status = 0,null);
}
System.out.println( + Status_Msg);
sqldb.close();
return Status_Msg;
}





我使用 showStatusChangedData()功能。控件在此功能中正常移动。此功能不在列表视图中显示消息请检查这两个功能。



showStatusChangedData()功能如下:



  public 列表<消息> showStatusChangedData(){
SQLiteDatabase sqldb = getWritableDatabase();
列表<消息> list = new ArrayList<>();
字符串 select_query = SELECT * FROM + DB_Table1 + where status = 1;

Cursor cursor = sqldb.rawQuery(select_query,null);
if (cursor.moveToFirst()){
do {
消息消息msg = 消息();
msg.setmAddress(cursor.getString( 0 ));
msg.setmBody(cursor.getString( 1 ));
msg.setmStatus(cursor.getString( 2 ));
list.add(msg);
} while (cursor.moveToNext());
}
return list;
}





我尝试过:



我尝试了以下查询

 sqldb.update(DB_Table1,values,Sms_Address +   = + Status_Msg,null); 



但这不起作用。

解决方案

要更新特定行中的字段,请尝试以下操作;



ContentValues cv = new ContentValues();

cv.put(Status_Msg,1);

sqldb.update(DB_Table1,cv,id =+ _ id,null);

sqldb.close();



为每个行数据设置一个主键是个好习惯。

这里_id将是你的主键。



还有一个建议,当你完成迭代表中的所有行时,关闭游标对象(cursor.close())。

请参阅上面的更新解决方案。


sqldb.update(DB_Table1,values,Sms_Add ress +=?,new String [] {Status_Msg;});


I am developing database in Sqlite. I created the table the schema are Sms_Address,Sms_Body,Status_Msg. The initial status of message is 0. I am updating the status to 1 by using setStatus() function in the database. But the status of all rows are updated. I want to update only one field named as Status_Msg checking by checkbox.

The setStatus() function is given below:

public String setStatus(){
        SQLiteDatabase sqldb = this.getWritableDatabase();
        ContentValues values = new ContentValues();
        if (Status_Msg.equals(Status_Msg)) {
            values.put(Status_Msg, 1);
            sqldb.update(DB_Table1, values, "status = 0", null);
        }
        System.out.println("" + Status_Msg);
        sqldb.close();
        return Status_Msg;
    }



I am displaying data in the database by using showStatusChangedData() function. The control moves properly in this function. This function does not show messages in listview Please check these two functions.

The showStatusChangedData() function is given below:

public List<Message> showStatusChangedData(){
       SQLiteDatabase sqldb = getWritableDatabase();
       List<Message> list = new ArrayList<>();
       String select_query = "SELECT * FROM " + DB_Table1 + " where status = 1";

       Cursor cursor = sqldb.rawQuery(select_query,null);
           if (cursor.moveToFirst()) {
               do {
                   Message msg = new Message();
                   msg.setmAddress(cursor.getString(0));
                   msg.setmBody(cursor.getString(1));
                   msg.setmStatus(cursor.getString(2));
                   list.add(msg);
               } while (cursor.moveToNext());
           }
       return list;
   }



What I have tried:

I tried the following query

sqldb.update(DB_Table1, values,Sms_Address +"="+ Status_Msg,null);


But this not works.

解决方案

To update the field in specific row, try this;

ContentValues cv = new ContentValues();
cv.put(Status_Msg, "1");
sqldb.update(DB_Table1, cv, "id="+_id, null);
sqldb.close();

It's good practice to have a primary key for each row data.
Here _id would be your primary key.

One more suggestion, when you done with iterating all rows in the table, close the cursor object (cursor.close()).


See the updated solution above.


sqldb.update(DB_Table1, values,Sms_Address +"=?",new String[]{Status_Msg;});


这篇关于如何使用android中的sqlite更新特定行中的一个字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆