1

データベースからサーバーにレコードを送信してから削除したいと考えています。これは、サービスで送信および削除するための私のコードです。

      DBAdapter db=new DBAdapter(this);
        db.open();
        Cursor cursor=db.getAllData();
        if(cursor.moveToFirst())
        {
            do{
                jObject = new JSONObject();
                jObject.put("Imei", cursor.getString(1));
                jObject.put("Lat", cursor.getString(2));
                jObject.put("Long", cursor.getString(3));
                jObject.put("Gpsdatetime", cursor.getString(4));
                jObject.put("Speed", cursor.getString(5));
                jObject.put("Altitude",cursor.getString(6));
                jObject.put("Battery", cursor.getString(7));
                //jArray.put(jObject);

                String datatoServer = jObject.toString()+"\n";
                      Toast.makeText(getApplicationContext(),datatoServer, Toast.LENGTH_LONG).show();

                HttpEntity entity;
                HttpClient client = new DefaultHttpClient();
                String url = "http://url";
                HttpPost request = new HttpPost(url);
                StringEntity se = new StringEntity(datatoServer);
                se.setContentEncoding("UTF-8");
                se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,
                    "application/json"));
                entity = se;
                request.setEntity(entity);
                HttpResponse response = client.execute(request);
                entity = response.getEntity();
                db.deleteContacts(1);
            }while(cursor.moveToNext());
        }//if
        db.close();             

削除機能と混同しています。データはサーバーに正しく送信されますが、最初の行のみが削除されます。

ここに私の DBHelper クラスの削除関数があります。これは、rowid をパラメーターとして受け取ります。

public boolean deleteContacts(long rowId)
{
    return db.delete(DATABASE_TABLE, KEY_ROWID+"="+rowId, null)>0;
}
4

4 に答える 4

0
 db.deleteContacts(1);

問題は、メソッドの引数として 1 を送信していることです。そのため、常に 1 を持つものを探しますrowId

cursor.getLong(columnIndex) long 値を取得するために使用します

于 2013-04-01T05:38:20.570 に答える
0

db.getAllData()メソッドがすべての列を選択すると仮定します(列を含むid`、変更...

db.deleteContacts(1);

に...

db.deleteContacts(cursor.getLong(cursor.getColumnIndex(KEY_ROWID)));

特定の列データが固定列インデックスにあると想定しないでください。列名を使用してインデックスを見つけてください。

于 2013-04-01T05:46:25.083 に答える
0

これを試して、

 context.deleteDatabase(DATABASE_NAME);
于 2013-04-01T05:50:11.787 に答える
0

最初の行を削除する場合は、ループdb.deleteContacts(1);内に int 変数を配置し、反復ごとに 1 のインクリメントを提供できます。do...while()次に、実行しdb.deleteContacts(your_var)ます。

于 2013-04-01T05:32:43.123 に答える