1、SQLiteDatabase中提供了一个insert()方法来向SQLite数据库添加数据,该方法接收三个参数,第一个参数是表名,就是具体往那张表中添加数据;第二个参数是在未指定添加数据的情况下给某些可为空的列自动赋值为null,直接传入null就行了,第三个参数是一个ContentValues对象,这个对象的作用就是把待添加的数据组装起来,作为一个对象传进去,使用put()方法组装数据。如下:
Button addDate = (Button) findViewById(R.id.add_data);
addDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = databaseHelper.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("name","第一行代码");
contentValues.put("author","guolin");
contentValues.put("pages", "452");
contentValues.put("price", "35");
db.insert("Book",null,contentValues);
contentValues.clear();
contentValues.put("name","第二行代码");
contentValues.put("author","guolin0");
contentValues.put("pages", "4520");
contentValues.put("price", "75");
db.insert("Book",null,contentValues);
contentValues.clear();
}
});
2、更新数据(update)
SQLiteDatabase中提供了一个update()方法来修改SQLite数据库中的数据,该方法接收四个参数,第一个参数是表名,就是具体更新那张表的数据;第二个参数是Contentvalues对象,把要更新的数据使用put()方法组装起来;第三、第四个参数用于约束更新那一行或那几行,不指定就是更新所有行。代码中用到了一个“?”,这是占位符,后面的字符串数组中的值就是占位符的值,更新数据相对简单。代码如下:
Button updateData = findViewById(R.id.update_data);
updateData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = databaseHelper.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("price","88");
db.update("Book", contentValues, "name=?",
new String[]{"android development"});
}
});
3、删除数据(delete)
SQLiteDatabase中提供了一个delete()方法删除SQLite数据库中的数据,该方法接收三个参数,第一个参数是表名,就是具体删除那张表中的数据;第二、第三个参数用来约束删除那一行或那几行的数据,不指定的话默认就是删除所有行。代码中删除的是页数小于500的那一条记录。如下:
Button deleteData = findViewById(R.id.delete_data);
deleteData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = databaseHelper.getWritableDatabase();
db.delete("Book", "pages<?", new String[]{"500"});
}
});
4、查询数据(query)
SQLiteDatabase中提供了一个query()方法来查询SQLite数据库中的数据,查询就难得多了,最短的一个方法也需要传入7个参数。第一个参数是指定表名,第二个参数是指定查询那几列,第三、第四用于约束查询那一行或那几行的数据,第五个参数用于指定去group by的列,不指定则表示不对查询结果进行group by操作,第六个参数用于对groupby之后的数据进行过滤,不指定则不进行过滤,第七个用于指定查询结果的排序方式。调用query()方法后会返回一个Cursor对象,查询到的所有数据豆浆从这个对象取出,moveToFirst()方法将数据的指针移到第一行位置,然后去遍历每一行数据,最后用输出到Log日志文件中查看结果。代码如下:
Button queryData = (Button) findViewById(R.id.query_data);
queryData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = databaseHelper.getWritableDatabase();//返回数据库对象
Cursor cursor = db.query("Book", null, null, null, null, null, null );
if (cursor.moveToNext()) {
do {
String name = cursor.getString(cursor.getColumnIndex("name"));
String author = cursor.getString(cursor.getColumnIndex("author"));
int pages = cursor.getInt(cursor.getColumnIndex("pages"));
double price = cursor.getDouble(cursor.getColumnIndex("price"));
Log.d("MainActivity", "book name is " + name);
Log.d("MainActivity", "book name is " + author);
Log.d("MainActivity", "book name is " + pages);
Log.d("MainActivity", "book name is " + price);
} while (cursor.moveToNext());
}
cursor.close();
}
});