一、前言
这篇文章主要针对Android自带的轻量级数据库SQLite 实现增删改查。该数据库常用于本地数据的储存喝管理。例如,可以将用户信息,日志数据等重要信息存储在SQLite数据库中。
二、代码实现
1.创建MySqliteOpenHelp作为工具类
/*** MySqliteOpenHelp作为工具类 使用单例模式(1.构造函数私有化:不让外界访问。2.对外提供函数)*/public class MySqliteOpenHelper extends SQLiteOpenHelper {//2.对外界提供函数 单例模式private static SQLiteOpenHelper mInstance;public static synchronized SQLiteOpenHelper getInstance(Context context){if (mInstance == null){mInstance = new MySqliteOpenHelper(context,"AnglinDB",null,1);//想要数据库升级把1改为2}return mInstance;}//为什么要有含参构造函数,因为需要传给父类上下文,数据库名称,工厂,版本号等参数//第一步:构造函数私有化:不让外界访问private MySqliteOpenHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {super(context, name, factory, version);//传给父类}//创建表 表数据初始化 数据库第一次创建的时候调用。第二次发现有了就不会重复创建了。也意味着:函数只执行一次。//数据库初始化@Overridepublic void onCreate(SQLiteDatabase db) {//创建表 :person//主键:primary key必须唯一的//自动增长:例如 1,2,3,4,5 autoincrement//_id标准的写法(要求1) 只能使用:主键只能使用Integer类型的(要求2)//id 写法不标准String sql = "create table person(_id integer primary key autoincrement, name text)";db.execSQL(sql);}//数据库升级@Overridepublic void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {}
}
2.实现数据库的增删改查
//SQLite增删改查
public class DBActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_dbactivity);}/*** 生成DB文件** @param view*/public void createDB(View view) {SQLiteOpenHelper helper = MySqliteOpenHelper.getInstance(this);//database文件夹创建靠下面这句话SQLiteDatabase readableDatabase = helper.getReadableDatabase();}/*** 查询** @param view*/public void query(View view) {SQLiteOpenHelper helper = MySqliteOpenHelper.getInstance(this);//database文件夹创建靠下面这句话SQLiteDatabase db = helper.getReadableDatabase();if (db.isOpen()) {//确保数据库打开才能放心操作//返回游标Cursor cursor = db.rawQuery("select * from person", null);//迭代游标往下面移动来迭代数据while (cursor.moveToNext()) {@SuppressLint("Range")int _id = cursor.getInt(cursor.getColumnIndex("_id"));@SuppressLint("Range")String name = cursor.getString(cursor.getColumnIndex("name"));Log.d("Anglin", "query:_id " + _id +","+ "name:" + name);}//一定要记得关闭游标,否则会耗费性能cursor.close();//数据库也要关闭db.close();}}/*** 插入数据到数据库** @param view*/public void insert(View view) {SQLiteOpenHelper helper = MySqliteOpenHelper.getInstance(this);//database文件夹创建靠下面这句话SQLiteDatabase db = helper.getWritableDatabase();if (db.isOpen()) {//确保数据库打开才能放心操作//插入语句String sql = "insert into person(name)values('Anglin')";db.execSQL(sql);//规范:必须关闭数据库db.close();}}/*** 修改第3条数据 为恭喜发财** @param view*/public void update(View view) {SQLiteOpenHelper helper = MySqliteOpenHelper.getInstance(this);//database文件夹创建靠下面这句话SQLiteDatabase db = helper.getWritableDatabase();if (db.isOpen()) {//确保数据库打开才能放心操作//修改语句String sql = "update person set name =? where _id =?";db.execSQL(sql, new Object[]{"恭喜发财", 3});//规范:必须关闭数据库db.close();}}/*** 删除:第四条数据** @param view*/public void delete(View view) {SQLiteOpenHelper helper = MySqliteOpenHelper.getInstance(this);//database文件夹创建靠下面这句话SQLiteDatabase db = helper.getWritableDatabase();if (db.isOpen()) {//确保数据库打开才能放心操作//修改语句String sql = "delete from person where _id =?";db.execSQL(sql, new Object[]{4});//规范:必须关闭数据库db.close();}}
}
页面布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"android:orientation="vertical"tools:context=".study.DBSQLite.DBActivity"><Buttonandroid:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="createDB"android:text="生成DB文件"tools:layout_editor_absoluteX="191dp"tools:layout_editor_absoluteY="261dp" /><Buttonandroid:id="@+id/button3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="query"android:text="查询" /><Buttonandroid:id="@+id/button4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="insert"android:text="插入" /><Buttonandroid:id="@+id/button5"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="update"android:text="修改" /><Buttonandroid:id="@+id/button6"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="delete"android:text="删除" />
</LinearLayout>