[英]updating or inserting in a table with keeping the row numbers to one
我試圖查看我的表中是否有更新它,如果沒有插入一行。 所以基本上我的桌子上總會有一行。
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));
在我的代碼中,表中沒有任何內容,也沒有異常,也沒有任何內容。 當我使用更新或單獨插入時,它可以工作..什么問題?
僅檢查c!=null
是不夠的。 即使查詢結果為空,游標也不能為null。 這意味着您需要使用c.getCount()
獲取行數,並檢查返回的是0
還是1
。
PS:這for( c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
對於循環來說非常難看。 您應該將其更改為while(c.moveToNext())
。
moveToNext()
與在新創建的光標對象上的moveToFirst()
相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.