当前位置: 代码迷 >> 综合 >> 初涉android SQLiteOpenHelper
  详细解决方案

初涉android SQLiteOpenHelper

热度:43   发布时间:2023-12-28 08:42:30.0

SQLiteOpenHelper 是android提供的管理数据库的辅助类

 

 res/values/strings <resources>中添加

此写法仅限于此test demo,sql语句一般定义成java常量

<resources><string name="app_name">app18</string><string name="sql_table_student">create table student(id integer primary key autoincrement,name,age)</string>
</resources>

扩展SQLiteOpenHelper

package com.clc.app18;import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;import androidx.annotation.Nullable;public class DBHelper extends SQLiteOpenHelper {public static final String TAG = "DBHelper";private String sql;public DBHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {super(context,name,factory,version);//获取资源 sql string;并初始化属性值sql = context.getString(R.string.sql_table_student);}/*** 第一次执行helper.getXXXDatabase()时,此时数据库还没有建立,才会创建数据库,此时触发一次onCreate():exe sql* 如果数据库已经存在了,再获取数据库对象时,不会再执行onCreate方法* 在清除数据之后获取数据库对象,会重新创建数据库,此时执行onCreate()* 数据库升级的时候这个方法不会执行,想执行需要先删除已存在的数据库,才会触发onCreate方法* onCreate里可以建表、为每张表插入数据、、、*/@Overridepublic void onCreate(SQLiteDatabase sqLiteDatabase) {sqLiteDatabase.execSQL(sql);Log.d(TAG, "onCreate: exe sql");}//升级版本时调用@Overridepublic void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {}
}

使用demo

package com.clc.app18;import androidx.appcompat.app.AppCompatActivity;import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;public class MainActivity extends AppCompatActivity {public static final String TAG = "MainActivity";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//实例化DBHelper,只执行这行代码时并不创建数据库DBHelper dbHelper = new DBHelper(this, "app18.db", null, 1);//当第一次获取数据库对象时(此时还不存在数据库),才会创建数据库,触发onCreateSQLiteDatabase db = dbHelper.getReadableDatabase();//db.增删改查}
}

 

  相关解决方案