添加数据
SQLiteDatabase 中提供了一个 insert()方法,这个方法就是专门用于添加数据的。
它接收三个参数,第一个参数是表名,我们希望向哪张表里添加数据,这里就传入该表的名字;
第二个参数用于在未指定添加数据的情况下给某些可为空的列自动赋值 NULL,一般我们用不到这个功能,直接传入 null 即可;
第三个参数是一个 ContentValues 对象,它提供了一系列的 put() 方法重载,用于向 ContentValues 中添加数据,只需要将表中的每个列名以及相应的待添加 数据传入即可。
示例:
activity_main.xml文件:
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" 2 3 android:orientation="vertical" > 4 5 6 7 …… 8 9 10 11 <Button android:id="@+id/add_data" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Add data" 12 13 /> 14 15 </LinearLayout>
我们在布局文件中又新增了一个按钮,稍后就会在这个按钮的点击事件里编写添加数据的逻辑。
接着修改MainActivity 中的代码,如下所示:
1 public class MainActivity extends Activity { 2 3 4 5 private MyDatabaseHelper dbHelper; 6 7 8 9 @Override 10 11 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); 12 13 dbHelper = new MyDatabaseHelper(this, "BookStore.db", null, 2); 14 15 …… 16 17 18 19 Button addData = (Button) findViewById(R.id.add_data); 20 21 addData.setOnClickListener(new OnClickListener() { 22 23 @Override 24 25 public void onClick(View v) { 26 27 SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); 28 29 // 开始组装第一条数据 30 31 values.put("name", "The Da Vinci Code"); values.put("author", "Dan Brown"); values.put("pages", 454); values.put("price", 16.96); 32 33 db.insert("Book", null, values); // 插入第一条数据 34 35 values.clear(); 36 37 // 开始组装第二条数据 38 39 values.put("name", "The Lost Symbol"); values.put("author", "Dan Brown"); values.put("pages", 510); values.put("price", 19.95); 40 41 db.insert("Book", null, values); // 插入第二条数据 42 43 } 44 45 }); 46 47 } 48 49 50 51 }
在添加数据按钮的点击事件里面,我们先获取到了 SQLiteDatabase 对象,然后使用 ContentValues 来对要添加的数据进行组装。如果你比较细心的话应该会发现,这里只对 Book 表里其中四列的数据进行了组装,id 那一列没并没给它赋值。这是因为在前面创建表的时候 我们就将 id 列设置为自增长了,它的值会在入库的时候自动生成,所以不需要手动给它赋 值了。接下来调用了 insert()方法将数据添加到表当中,注意这里我们实际上添加了两条数据, 上述代码中使用 ContentValues 分别组装了两次不同的内容,并调用了两次 insert()方法。
点击一下 Add data 按钮,此时两条数据应该都已经添加成功了,