我在Android中发现数据库。我理解如何阅读它,但我没有成功地写它。这是数据库:
private static final String DATABASE_CREATE = "create table lesPlats
(id integer primary key autoincrement, nom text not null, quantite integer);";
database.execSQL(DATABASE_CREATE);
我编辑它:
values.put("nom", "plat1");
values.put("quantite", 0);
database.insert("lesPlats", null, values);
我想增加" plat1" (评论中的调试版本):
int n=1;
// Cursor c = database.rawQuery("SELECT * FROM lesPlats WHERE id="+n, null);
// c.moveToFirst();
// System.out.println("QUANTITY BEFORE: "+cursorToComment(c).quantite+ " (id: "+cursorToComment(c).id+")");
database.rawQuery("UPDATE lesPlats SET quantite = 1 WHERE id = " + n, null);
// c = database.rawQuery("SELECT * FROM lesPlats WHERE id="+n, null);
// c.moveToFirst();
// System.out.println("QUANTITY NEXT: "+cursorToComment(c).quantite+ " (id: "+cursorToComment(c).id+")");
通过调试,我得到了结果
QUANTITY BEFORE:0(id:1)
QUANTITY NEXT:0(id:1)
所以某处出现了错误。你能告诉我代码是否合适吗?特别是这一个:
database.rawQuery("UPDATE lesPlats SET quantite = 1 WHERE id = " + n, null);
这意味着在id = 1时数量设置为1,不是吗? 我尝试UPDATE,我有相同的结果......
答案 0 :(得分:0)
在调用第二个raw之前读取并关闭游标,因为没有它就不会执行查询:
Process p=Runtime.getRuntime().exec("something command");
String s;
JFrame frame = new JFrame();
frame.setSize(600, 400);
JTextField A = new JTextField();
A.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
String s = A.getText();
System.out.println("I send a text: " + s);
try{
p.getOutputStream().write(s.getBytes());
p.getOutputStream().close();
}catch(Exception ex){
ex.printStackTrace();
}
A.setText("");
}
});
frame.add(A);
frame.setVisible(true);
// Read command standard input
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
答案 1 :(得分:0)
private Comment cursorToComment(Cursor cursor) {
Comment comment = new Comment();
comment.setId(cursor.getLong(0));
comment.setNom(cursor.getString(1));
comment.setQqte(cursor.getInt(2)); //here!!
return comment;
很多
所以,有三种方法可以改变数据库:
ContentValues values = new ContentValues();
values.put("quantite", 1);
database.update("lesPlats", values, "id=?", new String[]{"1"});
或
database.execSQL("UPDATE lesPlats SET quantite = 1 WHERE id = " + n);
或
c = database.rawQuery("UPDATE lesPlats SET quantite = 1 WHERE id = " + n, null);
c.moveToFirst();
c.close();
pfiou!