android: SQLite添加數據


現在你已經掌握了創建和升級數據庫的方法,接下來就該學習一下如何對表中的數據進 行操作了。其實我們可以對數據進行的操作也就無非四種,即 CRUD。其中 C 代表添加

(Create),R 代表查詢(Retrieve),U 代表更新(Update),D 代表刪除(Delete)。每一種操 作又各自對應了一種 SQL 命令,如果你比較熟悉 SQL 語言的話,一定會知道添加數據時使 用 insert,查詢數據時使用 select,更新數據時使用 update,刪除數據時使用 delete。但是開 發者的水平總會是參差不齊的,未必每一個人都能非常熟悉地使用 SQL 語言,因此 Android 也是提供了一系列的輔助性方法,使得在 Android 中即使不去編寫 SQL 語句,也能輕松完成 所有的 CRUD 操作。

前面我們已經知道,調用 SQLiteOpenHelper 的 getReadableDatabase()或 getWritableDatabase()方法是可以用於創建和升級數據庫的,不僅如此,這兩個方法還都會返回一個 SQLiteDatabase對象,借助這個對象就可以對數據進行 CRUD 操作了。 那么我們一個一個功能地看,首先學習一下如何向數據庫的表中添加數據吧。

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"

android:orientation="vertical" >

 

……

  

<Button android:id="@+id/add_data" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Add 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 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 表中了。


免責聲明!

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



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