android: SQLite更新數據


學習完了如何向表中添加數據,接下來我們看看怎樣才能修改表中已有的數據。 SQLiteDatabase 中也是提供了一個非常好用的 update()方法用於對數據進行更新,這個方法 接收四個參數,第一個參數和 insert()方法一樣,也是表名,在這里指定去更新哪張表里的數據。第二個參數是 ContentValues 對象,要把更新數據在這里組裝進去。第三、第四個參數

用於去約束更新某一行或某幾行中的數據,不指定的話默認就是更新所有行。 那么接下來我們仍然是在 DatabaseTest 項目的基礎上修改,看一下更新數據的具體用法。

比如說剛才添加到數據庫里的第一本書,由於過了暢銷季,賣得不是很火了,現在需要通過 降低價格的方式來吸引更多的顧客,我們應該怎么操作呢?首先修改 activity_main.xml 中的 代碼,如下所示:

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"

android:orientation="vertical" >

 

……

 

<Button android:id="@+id/update_data" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Update data"

/>

</LinearLayout>

布局文件中的代碼就已經非常簡單了,就是添加了一個用於更新數據的按鈕。然后修改

MainActivity 中的代碼,如下所示:

 

public class MainActivity extends Activity {

 

private MyDatabaseHelper dbHelper;

 

@Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);

dbHelper = new MyDatabaseHelper(this, "BookStore.db", null, 2);

……

Button updateData = (Button) findViewById(R.id.update_data);

updateData.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

SQLiteDatabase db = dbHelper.getWritableDatabase();

 

ContentValues values = new ContentValues();

values.put("price", 10.99);

db.update("Book", values, "name = ?", new String[] { "The DaVinci Code" });

}

 

});

}

 

}

這里在更新數據按鈕的點擊事件里面構建了一個 ContentValues 對象,並且只給它指定 了一組數據,說明我們只是想把價格這一列的數據更新成 10.99。然后調用了 SQLiteDatabase 的 update()方法去執行具體的更新操作,可以看到,這里使用了第三、第四個參數來指定具 體更新哪幾行。第三個參數對應的是 SQL 語句的 where 部分,表示去更新所有 name 等於? 的行,而?是一個占位符,可以通過第四個參數提供的一個字符串數組為第三個參數中的每 個占位符指定相應的內容。因此上述代碼想表達的意圖就是,將名字是 The Da Vinci Code 的這本書的價格改成 10.99。

現在重新運行一下程序,界面如圖 6.23 所示。

圖   6.23

 

點擊一下 Update data 按鈕后,再次輸入查詢語句查看表中的數據情況,結果如圖 6.24所示。

圖   6.24

 

可以看到,The Da Vinci Code 這本書的價格已經被成功改為 10.99 了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM