我试图查看我的表中是否有内容更新它,如果没有插入一行。所以基本上我总是在我的表中有一行。
public void createOrupdate(long id,String x, String y, String angle){
String[] columns= new String[]{KEY_ROWID, KEY_X, KEY_Y, KEY_ANGLE};
Cursor c= ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);
ContentValues editCon = new ContentValues();
if (c!=null){
editCon.put(KEY_X, x);
editCon.put(KEY_Y, y);
editCon.put(KEY_ANGLE, angle);
ourDatabase.update(DATABASE_TABLE, editCon, KEY_ROWID + "=?", new String[]{String.valueOf(id)});
}
else{
editCon.put(KEY_X, x);
editCon.put(KEY_Y, y);
editCon.put(KEY_ANGLE, angle);
ourDatabase.insert(DATABASE_TABLE, null, editCon);
}
}
public String getData() {
// TODO Auto-generated method stub
String[] columns= new String[]{KEY_ROWID, KEY_X, KEY_Y, KEY_ANGLE};
Cursor c= ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);
String result= "";
int iRow= c.getColumnIndex(KEY_ROWID);
int iX= c.getColumnIndex(KEY_X);
int iY= c.getColumnIndex(KEY_Y);
int iAngle= c.getColumnIndex(KEY_ANGLE);
int i= 0;
for( c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
result= result+ c.getString(iRow)+ " "+ c.getString(iX)+ " " +c.getString(iY)+ " "+ c.getString(iAngle)+"\n";
}
return result;
}
但是当我在我的代码中使用entry.createOrupdate(1, Double.toString(db1), Double.toString(db2), Double.toString(db3));
时,我的表中没有任何内容,也没有任何异常。当我使用更新或单独插入它的工作..有什么问题?
答案 0 :(得分:0)
检查c!=null
是不够的。即使查询结果为空,游标也不能为空。这意味着您需要使用c.getCount()
获取行数并检查是否返回0
或1
。
PS:这个for( c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
对循环来说非常难看。您应该将其更改为while(c.moveToNext())
。
moveToNext()
与新创建的游标对象上的moveToFirst()
相同。