在Android中,我们使用的数据库是一个轻量级的数据库 sqlite 下面我们来学习一下它的CURD操作
首先 我们需要创建一个类 继承自android自带的一个数据库帮助类SQLiteOpenHelper 类名可以自己定义
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import sqlite.android_sqlite.Constant;
public class MysqliteHelper extends SQLiteOpenHelper {
public static final String TAG=MysqliteHelper.class.getName();
public static final String DATABASE_NAME="userinfo";
public static final int DATABASE_VERSION=1;
/**
* 构造函数
* @param context 上下文
* @param name 数据库名
* @param factory 游标工厂
* @param version 数据库版本 必须大于或等于1
*/
public MysqliteHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
/**
* 构造函数
* @param context
*/
public MysqliteHelper(Context context){
/*第三个参数我们现在可以默认为空*/
super(context,DATABASE_NAME,null,DATABASE_VERSION);
}
/**
* 创建数据库
* @param db 数据库对象
*/
@Override
public void onCreate(SQLiteDatabase db) {
Log.e(TAG,"-------->onCreate");
String sql = "create table person(name varchar(20),age Integer)"
db.execSQL(sql);
}
/**
* 版本升级
* @param db 数据库对象
* @param oldVersion 旧版本
* @param newVersion 新版本
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.e(TAG,"-------->onUpgrade");
}
/**
* 打开数据库
* @param db
*/
@Override
public void onOpen(SQLiteDatabase db) {
super.onOpen(db);
Log.e(TAG,"-------->onOpen");
}
}
创建完成后我们重写父类方法 这里我们可以发现 有两个构造方法 第二个构造方法是我们自己创建的 目的是方便创建实例 我们在新建实例时只需要传入上下文即可 其他参数我可以事先定义好。 在oncreat方法中 代码用于创建数据表 person 这里我们只写两个字段 方便以后练习使用
现在我们已经创建好了数据库类 接下来我们打开布局文件 写入一个按钮控件
接下来。我们再创建一个DBManger的类 用于构建数据库
public class DBManger {
public static MysqliteHelper helper;
/**
* 将 MysqliteHelper 类构建为一个单例的形式 只允许拥有一个实例
* @param context 上下文
* @return 数据库对象
*/
public static MysqliteHelper getMmysqliteHelper(Context context){
if(helper==null){
helper = new MysqliteHelper(context);
}
return helper;
}
}
我们这么做的原因是因为 在正常情况下数据类应该只能有一个实例 所有我们利用这种方法来判断当前数据库是否为空 诺为空表示还没有创建 ,那么我们便创建它,然后返回该对象
现在我们在Activity中创建一个createDB的方法 并先声明好MysqliteHelper 与SQLiteDatabase ,然后调用DBManger类中的静态方法获取实例
public class MainActivity extends AppCompatActivity {
private MysqliteHelper helper;
private SQLiteDatabase db = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
helper = DBManger.getMmysqliteHelper(this);
}
public void createDB(View view){
/**
* getReadableDatabase
* getWritableDatabase
* 这两个方法的作用是创建或打开数据库 如果数据库存在 则打开 否则的话就
* 创建后再打开
* 事实上 默认情况下 这两个方法打开的都是可读可写数据库 是没有区别的 只是
* 当我们磁盘已满或者权限问题等特殊情况时它们才会区分开来 如下
* getReadableDatabase是只打开可读数据库 getWritableDatabase只打开可写数据库
*/
db = helper.getWritableDatabase();
Toast.makeText(this,"创建或打开成功",Toast.LENGTH_SHORT).show();
}
}
这里我们需要注意的是 在获取数据库对象时,他会默认有两个方法可供我们使用 分别是 getReadableDatabase与getWritableDatabase 这两种方法的区别我已经写在注释里了 好了。到这里我们以及创建好了一个数据库
点击按钮后便会创建userinfo数据库,我们可以在如下路径中找到该数据库 以我华为手机为例 当我们点击按钮创建数据库后可以在 data-->data-->应用包名(例如 com.sql.tdy)-->database 目录下找到
下一篇文章中我们将介绍数据库的修改 插入 以及删除的使用
https://blog.csdn.net/tdl081071tdy/article/details/88377515 ( Android 数据库Sqlite的使用(2))