繁体   English   中英

如何正确更新SQLite?

[英]How to correctly update SQLite?

我知道如何读取写入数据到android SQL数据库,但是当我尝试追加数据时遇到了一个问题。 当我这样做时,它只会附加上一个记录。

为了更新数据,我使用了`

ContentValues updateKoment = new ContentValues();
            updateKoment.put("comment", text.getText().toString());
             db.update("MyTab",updateKoment, "PhoneNr='"+newn+"'AND Name='"+contact+"'AND comment='"+previuscom+"' AND Answered='"+Yn+"'",null);

如果您能帮助我并指出正确的方向,那就太好了。

我相信您正在寻找的是insert android SQLiteDatabase

insert (String table, String nullColumnHack, ContentValues values)

也许您要在现有评论的末尾添加新评论? 在这种情况下,您可能应该重新设计数据库,并在其中添加(即insert )任何新注释到单独的表中。 然后,所有注释都将通过公共密钥链接到您想要链接的其他任何项目(下例中的post_id列)。

例如,您可以在数据库中设置此表:

Table Posts:
post_id  title  description
1        'Hey'  'Description'
2        'Ho'   'Another Description'


Table Comments:
comment_id  post_id  comment
1           1        'Nice Salute'
2           1        'Yeah really nice'
3           2        'Ho Ho Ho'

在您当前的代码段中,最后一个注释将始终替换任何现有注释,也就是说,添加'Yeah really nice'注释将替换'Nice salute'注释。

(我不相信我在暗示我要提出的建议:)

您还可以从数据库中读取所有现有注释,并将新注释连接到结果:

String columns = { "comment" };
String constraint = "PhoneNr=? AND Name=? AND comment=? AND Answered=?";
String args[] = { newn, contact, previuscom, Yn };

Cursor cursor = db.query("MyTab", columns , constraint, args, null, null, null);
String comments = cursor.getString(cursor.getColumnIndex("comment"));
comments += text.getText().toString();

然后使用您的新注释字符串更新同一行:

ContentValues updateKoment = new ContentValues();
updateKoment.put("comment", comments);
db.update("MyTab", updateKoment, constraint, args);

但是从我个人的观点来看,这是一个非常棘手的解决方案,我内部的数据库架构师会强烈劝阻您不要实施它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM