1
我正在開發一個小應用程序,用於保存地點及其所屬類別的記錄。現在,我只是在分類表上工作,一旦我設法執行所有CRUD操作,那麼我就會推進到應用程序的其餘部分。Android SQLite:未能更新記錄
問題是,我設法插入,刪除和讀取該表,但我無法更新。我有這樣的代碼:
將對DBAdapter:
...
public boolean updateCategory(long rowId, String name) {
ContentValues args = new ContentValues();
args.put(KEY_ID_CAT, rowId);
args.put(KEY_NAME_CAT, name);
return db.update(TABLE_CATEGORY, args, KEY_ROWID_CAT + "=" + rowId, null) > 0;
}
...
我EditCategory類:
public class S7_EditCategory extends Activity {
EditText et_name_category;
private Context ctx;
int duration = Toast.LENGTH_SHORT;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.s7_edit_categories);
et_name_category = (EditText) findViewById(R.id.edit_category);
ctx = this;
final String nome = getIntent().getStringExtra("nome");
final long id_cat = getIntent().getIntExtra("_id", 0);
et_nome_category.setText(nome);
Button button_save = (Button) findViewById(R.id.button3);
button_save.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
String new_cat = et_name_category.getText().toString();
DBAdapter dbadap = DBAdapter.getInstance(ctx);
dbadap.updateCategory(id_cat, new_cat);
Intent i = new Intent(ctx, S5_Categories.class);
setResult(RESULT_OK, i);
finish();
}
catch (Exception ex) {
throw new Error("some error");
}
}
});
}
}
logcat的告訴我,(_id = 0),因此,我認爲它有用上一個活動傳遞的參數做,類別:
public class S5_Categories extends ListActivity {
private Context ctx;
private SimpleCursorAdapter adapter;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.s5_categorias);
ctx = this;
fillList();
getListView().setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parentView, View view, int position, long id) {
Cursor c = (Cursor) parentView.getItemAtPosition(position);
Intent i = new Intent(ctx, S7_EditCategoria.class);
i.putExtra("nome", c.getString(c.getColumnIndexOrThrow("nome")));
i.putExtra("id_cat", c.getColumnIndex("_id") + 1);
startActivityForResult(i, 0);
}
});
}
private void fillList() {
try {
DBAdapter dbadap = DBAdapter.getInstance(ctx);
Cursor c = dbadap.getAllCategorias();
String[] from = new String[] { "nome" };
int[] to = new int[] { android.R.id.text1 };
adapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_1, c, from, to,
SimpleCursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
setListAdapter(adapter);
}
catch (Exception ex) {
throw new Error(ex.getMessage());
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode) {
case 0:
if (data != null) {
DBAdapter dbadap = DBAdapter.getInstance(ctx);
Cursor cursor = dbadap.getAllCategorias();
adapter.changeCursor(cursor);
}
}
}
}
好吧,有人可以幫我嗎? 在此先感謝 Chiapa
好了,現在我設法獲取參數ID,但在更新時,我仍然得到錯誤:我嘗試,我得到這樣一個錯誤:
錯誤更新名稱=醫院id_cat = 4使用UPDATE類別SET name =?,id_cat =? WHERE ID = 4
請幫助
Chiapa
感謝您的回覆,但是, 它不會工作,因爲我的方法返回一個布爾值,那是一個int – chiapa
不,我發現問題不是方法本身,而是我無法傳遞的參數將類分類到EditCategories類。我不知道爲什麼id沒有通過,因爲我可以通過類別的名稱。 我用id_cat變量的值做了吐司,它總是零,這就是爲什麼它不起作用。你能幫我嗎? – chiapa
請清楚告訴我。我當然會幫你的。 – Gunaseelan