如今你已经掌握了建立和升级数据库的方法,接下来就该学习一下如何对表中的数据进 行操做了。其实咱们能够对数据进行的操做也就无非四种,即 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 表中了。