簡體   English   中英

在將行號保持為一的情況下更新或插入表中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM