您的位置:首页 > 移动开发 > Android开发

Android SQLite数据库存储之添加数据

2018-01-25 16:16 295 查看
本篇文章还是在Android SQLite数据库存储之升级数据库的基础上进行修改,现在已经掌握了创建和升级数据库的方法,接下里就学习一下如何对表中的数据进行操作了,其实我们可以对数据进行的操作无非就是4种,即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()方法,这个方法就是专门用于添加数据的,它接收3个参数,第一个参数是表名,我们希望向哪张表里添加数据,这里就传入该表的名字,第二个参数用于在未指定添加数据的情况下给某些可为空的列自动赋值NULL,一般我们用不到这个功能,直接传入null即可,第二个参数是一个ContentValues对象,它提供了一系列的put()方法重载,用于向ContentValues中添加数据,只需要将表中的每个列名以及相应的待添加数据传入即可。

介绍完了基本用法,接下来还是通过一个例子来体验一下如何添加数据,修改activity_main.xml中的代码,如下:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.activitytest.MainActivity">

<Button
android:id="@+id/create_database"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Create database"
android:textAllCaps="false"/>

<Button
android:id="@+id/add_data"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Add data"
android:textAllCaps="false"
app:layout_constraintTop_toBottomOf="@id/create_database"/>

</android.support.constraint.ConstraintLayout>

可以看到,我们在布局文件中又新增了一个按钮,稍后就会在这个按钮的点击事件里编写添加数据的逻辑,接着修改MainActivity中的代码,如下:

public class MainActivity extends AppCompatActivity {

private static final String TAG = "MainActivity";
private MyDatabaseHelper dbHelper;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbHelper = new MyDatabaseHelper(this,"BookStore.db",null,3);
Button createDatabase = findViewById(R.id.create_database);
Button addData = findViewById(R.id.add_data);
createDatabase.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dbHelper.getWritableDatabase();
}
});
addData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
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()方法。

好了,现在可以重新运行一下程序了,界面如图:



点击一下Add data按钮,此时两条数据应该都已经添加成功了,不过为了证实一下,我们还是打开BookStore.db数据库瞧一瞧,输入SQL查询语句select * from Book,注意SQL语句必须用分号(;)结尾,结果如图:



由此可以看出,我们刚刚组装的两条数据都已经准确无误的添加到Book表中了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐