更新sqlite数据库的语句和方法

时间:2013-05-15 08:11:52

标签: android-sqlite

我需要你的帮助。我花了太多时间在这上面,如果我指定了id号,我只能更新数据库。

  1. 点击列表视图项并将数据发送到新活动进行编辑
  2. 编辑数据并返回listview活动。简单吧。嗯。

    @Override  
    public void onItemClick(AdapterView<?> listView, View view, int position, long id) {    
    Cursor cursor = (Cursor)listView.getItemAtPosition(position);  
    String title = cursor.getString(cursor.getColumnIndexOrThrow(MoviesDbAdapter.KEY_TITLE));  
    String barcode = cursor.getString(cursor.getColumnIndexOrThrow(MoviesDbAdapter.KEY_BARCODE));   
    String rowId = cursor.getString(cursor.getColumnIndexOrThrow(MoviesDbAdapter.KEY_ROWID));
    
    Intent movieEdit = new Intent(getBaseContext(), MovieEdit.class);  
    Bundle bundle = new Bundle();  
    bundle.putString("rowId", rowId);  
    bundle.putString("title", title);  
    bundle.putString("barcode", barcode);  
    movieEdit.putExtras(bundle);  
    startActivity(movieEdit);
    
  3. 从列表视图活动中接收意图:

    if (this.getIntent().getExtras() != null) { 
    Bundle bundle = this.getIntent().getExtras(); 
               editTitle.setText(bundle.getString("title"));     
               editBarcode.setText(bundle.getString("barcode"));
               editId.setText(bundle.getString("rowId"));
    
              } 
    

    通过按钮激活语句:

    case R.id.buttonSave:
    
    mDb.open();  
    ContentValues values = new ContentValues();  
    values.put(MoviesDbAdapter.KEY_TITLE, title);  
    values.put(MoviesDbAdapter.KEY_BARCODE, barcode);  
    mDb.updateTitle("=?", title, barcode);  
    mDb.close(); 
    

    MovieDbAdapter中的方法:

    public boolean updateTitle(long rowId, String title, String barcode)
    {  
    ContentValues args = new ContentValues();  
    args.put(KEY_TITLE, title);  
    args.put(KEY_BARCODE, barcode);   
    return mDb.update(SQLITE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0;
    

    我知道这已经完成,但无论我尝试什么,我都无法使用新数据更新数据库。 希望你能帮助他们。

1 个答案:

答案 0 :(得分:0)

将您的代码更改为以下

case R.id.buttonSave:

    mDb.open();  
    mDb.updateTitle(rowId, title, barcode);  
    mDb.close();