如今你已經掌握了建立和升級數據庫的方法,接下來就該學習一下如何對錶中的數據進 行操做了。其實咱們能夠對數據進行的操做也就無非四種,即 CRUD。其中 C 表明添加android
(Create),R 表明查詢(Retrieve),U 表明更新(Update),D 表明刪除(Delete)。每一種操 做又各自對應了一種 SQL 命令,若是你比較熟悉 SQL 語言的話,必定會知道添加數據時使 用 insert,查詢數據時使用 select,更新數據時使用 update,刪除數據時使用 delete。可是開 發者的水平總會是良莠不齊的,未必每個人都能很是熟悉地使用 SQL 語言,所以 Android 也是提供了一系列的輔助性方法,使得在 Android 中即便不去編寫 SQL 語句,也能輕鬆完成 全部的 CRUD 操做。數據庫
前面咱們已經知道,調用 SQLiteOpenHelper 的 getReadableDatabase()或 getWritableDatabase()方法是能夠用於建立和升級數據庫的,不只如此,這兩個方法還都會返回一個 SQLiteDatabase對象,藉助這個對象就能夠對數據進行 CRUD 操做了。 那麼咱們一個一個功能地看,首先學習一下如何向數據庫的表中添加數據吧。ide
SQLiteDatabase 中提供了一個 insert()方法,這個方法就是專門用於添加數據的。它接收三個 參數,第一個參數是表名,咱們但願向哪張表裏添加數據,這裏就傳入該表的名字。第二個 參數用於在未指定添加數據的狀況下給某些可爲空的列自動賦值 NULL,通常咱們用不到這 個功能,直接傳入 null 便可。第三個參數是一個 ContentValues 對象,它提供了一系列的 put() 方法重載,用於向 ContentValues 中添加數據,只須要將表中的每一個列名以及相應的待添加 數據傳入便可。佈局
介紹完了基本用法,接下來仍是讓咱們經過例子的方式來親身體驗一下如何添加數據 吧。修改 activity_main.xml 中的代碼,以下所示:學習
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"this
android:orientation="vertical" >xml
……對象
<Button android:id="@+id/add_data" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Add data"blog
/>事件
</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 addData = (Button) findViewById(R.id.add_data);
addData.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues();
// 開始組裝第一條數據
values.put("name", "The Da Vinci Code"); values.put("author", "Dan Brown"); values.put("pages", 454); values.put("price", 16.96);
db.insert("Book", null, values); // 插入第一條數據
values.clear();
// 開始組裝第二條數據
values.put("name", "The Lost Symbol"); values.put("author", "Dan Brown"); values.put("pages", 510); values.put("price", 19.95);
db.insert("Book", null, values); // 插入第二條數據
}
});
}
}
在添加數據按鈕的點擊事件裏面,咱們先獲取到了 SQLiteDatabase 對象,而後使用 ContentValues 來對要添加的數據進行組裝。若是你比較細心的話應該會發現,這裏只對 Book 表裏其中四列的數據進行了組裝,id 那一列沒並沒給它賦值。這是由於在前面建立表的時候 咱們就將 id 列設置爲自增加了,它的值會在入庫的時候自動生成,因此不須要手動給它賦 值了。接下來調用了 insert()方法將數據添加到表當中,注意這裏咱們實際上添加了兩條數據, 上述代碼中使用 ContentValues 分別組裝了兩次不一樣的內容,並調用了兩次 insert()方法。
好了,如今能夠從新運行一下程序了,界面如圖 6.21 所示。
圖 6.21
點擊一下 Add data 按鈕,此時兩條數據應該都已經添加成功了,不過爲了證明一下,我 們仍是打開 BookStore.db 數據庫瞧一瞧。輸入 SQL 查詢語句 select * from Book,結果如圖
6.22 所示。
圖 6.22
由此能夠看出,咱們剛剛組裝的兩條數據,都已經準確無誤地添加到 Book 表中了。