创建一个用于管理数据库创建和版本管理的助手类。
package com.androidlearning.datastore_88;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import androidx.annotation.Nullable;
/**
* 实现数据库帮助抽象类
* @author 刘昌兴
* @date 2022/3/11 15:02
*/
public class SQLiteHelper extends SQLiteOpenHelper {
public SQLiteHelper(@Nullable Context context,int version) {
super(context, "school.db", null, version);
}
/**
* 1.数据库文件创建时调用(1次)
* 2.在此方法中进行建表和初始化数据
* @author 刘昌兴
* @date 2022/3/11 15:13
* @param db
*/
@Override
public void onCreate(SQLiteDatabase db) {
Log.i("TAG","SQLiteHelper onCreate");
//创建数据库
String sql="create table student(_id integer primary key autoincrement,name varchar,age Integer,grade varchar)";
db.execSQL(sql);
//初始化数据
db.execSQL("insert into student(name,age,grade) values('周华健',18,'三年一班')");
db.execSQL("insert into student(name,age,grade) values('黄建国',20,'三年一班')");
db.execSQL("insert into student(name,age,grade) values('王维',25,'三年二班')");
db.execSQL("insert into student(name,age,grade) values('何淑华',23,'三年三班')");
}
/**
* 更新数据库
* @author 刘昌兴
* @date 2022/3/11 15:39
* @param db
* @param oldVersion
* @param newVersion
* @return
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.i("TAG","SQLiteHelper onUpgrade");
}
}
具体见代码
package com.androidlearning.datastore_88;
import androidx.appcompat.app.AppCompatActivity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
public class DatabaseStore extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_database_store);
}
/*
* 创建库
*/
public void testCreateDB(View v) {
//创建SQLiteHelper对象
SQLiteHelper sqLiteHelper=new SQLiteHelper(this,1);
//获得连接
SQLiteDatabase sqLiteDatabase=sqLiteHelper.getWritableDatabase();
Toast.makeText(this,"创建数据库成功",Toast.LENGTH_SHORT).show();
}
/*
* 更新库
*/
public void testUpdateDB(View v) {
//创建SQLiteHelper对象
SQLiteHelper sqLiteHelper=new SQLiteHelper(this,2);
//获得连接
SQLiteDatabase sqLiteDatabase=sqLiteHelper.getWritableDatabase();
Toast.makeText(this,"更新数据库成功",Toast.LENGTH_SHORT).show();
}
/*
* 添加记录
*/
public void testInsert(View v) {
//创建SQLiteHelper对象
SQLiteHelper sqLiteHelper=new SQLiteHelper(this,2);
//获得连接
SQLiteDatabase sqLiteDatabase=sqLiteHelper.getWritableDatabase();
//插入数据
//创建字段-数值对象
ContentValues contentValues=new ContentValues();
contentValues.put("name","王宇飞");
contentValues.put("age",29);
contentValues.put("grade","三年一班");
long id = sqLiteDatabase.insert("student", null, contentValues);
//关闭连接
sqLiteDatabase.close();
//提示
Toast.makeText(this,"学生id:"+id,Toast.LENGTH_SHORT).show();
}
/*
* 更新
*/
public void testUpdate(View v) {
//创建SQLiteHelper对象
SQLiteHelper sqLiteHelper=new SQLiteHelper(this,2);
//获得连接
SQLiteDatabase sqLiteDatabase=sqLiteHelper.getWritableDatabase();
//更新数据
ContentValues contentValues=new ContentValues();
contentValues.put("age",30);
contentValues.put("grade","三年二班");
int updateRow = sqLiteDatabase.update("student", contentValues, "_id=?", new String[]{"5"});
//关闭连接
sqLiteDatabase.close();
//提示
Toast.makeText(this,"更新"+updateRow+"行数据",Toast.LENGTH_SHORT).show();
}
/*
* 删除
*/
public void testDelete(View v) {
//创建SQLiteHelper对象
SQLiteHelper sqLiteHelper=new SQLiteHelper(this,2);
//获得连接
SQLiteDatabase sqLiteDatabase=sqLiteHelper.getWritableDatabase();
//删除数据
int deleteRow = sqLiteDatabase.delete("student", "_id=2",null);
//关闭连接
sqLiteDatabase.close();
//提示
Toast.makeText(this,"删除"+deleteRow+"行数据",Toast.LENGTH_SHORT).show();
}
/*
* 查询
*/
public void testQuery(View v) {
//创建SQLiteHelper对象
SQLiteHelper sqLiteHelper=new SQLiteHelper(this,2);
//获得连接
SQLiteDatabase sqLiteDatabase=sqLiteHelper.getWritableDatabase();
//查询
// Cursor studentCursor = sqLiteDatabase.query("student", null, null, null, null, null, null);
//条件查询
Cursor studentCursor = sqLiteDatabase.query("student", null, "_id=?", new String[]{"3"}, null, null, null);
int sum=studentCursor.getCount();
Toast.makeText(this,"共有"+sum+"条数据",Toast.LENGTH_SHORT).show();
while(studentCursor.moveToNext()){
int id=studentCursor.getInt(0);
String name=studentCursor.getString(1);
int age=studentCursor.getInt(2);
String grade=studentCursor.getString(studentCursor.getColumnIndex("grade"));
Log.i("students",id+"-"+name+"-"+age+"-"+grade);
}
//关闭游标
studentCursor.close();
//关闭连接
sqLiteDatabase.close();
}
/*
* 测试事务处理
*/
public void testTransaction(View v) {
//创建SQLiteHelper对象
SQLiteHelper sqLiteHelper=new SQLiteHelper(this,2);
//获得连接
SQLiteDatabase sqLiteDatabase=sqLiteHelper.getWritableDatabase();
try{
//开启事务
sqLiteDatabase.beginTransaction();
//更新第一条数据
ContentValues contentValues=new ContentValues();
contentValues.put("age",25);
int updateRow1 = sqLiteDatabase.update("student", contentValues, "_id=?", new String[]{"4"});
Log.i("transaction","updateRow1:"+updateRow1);
if(true)
throw new RuntimeException("出异常了!!!");
//更新第二条数据
contentValues=new ContentValues();
contentValues.put("age",25);
int updateRow2 = sqLiteDatabase.update("student", contentValues, "_id=?", new String[]{"5"});
Log.i("transaction","updateRow2:"+updateRow2);
//完成提交事物
sqLiteDatabase.setTransactionSuccessful();
}finally {
//结束事物
sqLiteDatabase.endTransaction();
//关闭连接
sqLiteDatabase.close();
}
}
}