Android SQLite数据库的基本使用

1.SQLite简介:

   SQLite是Android内置的一款轻量级的数据库,运算速度非常快。Android为了我们方便对数据库的管理,专门以提供了SQLiteOpenHelper帮助类,这个类是一个抽象类,所以我们需要创建自己的类去继承他。

2.需要实现的两个抽象方法:

   SQLiteOpenHelper中有两个抽象方法,onCreate()和onUpgrade(),我们必须实现这两个方法。

3.需要重写的构造方法(2个,一般重写参数较少的):

public MyDataBaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
    super(context, name, factory, version);
}

四个参数分别是:上下文,数据库的名称,允许我们在查询数据时返回的一个自定义的cursor(一般为null),当前数据库的版本号。构建出SQLiteOpenHelper的实例之后,在调用它的getReadableDataBase()或getWritableDataBase()就可以创建数据库了,数据库文件会存放在/data/data/包名/databases/目录下。

4.SQLiteOpenHelper中两个比较重要的实例方法:

   getReadableDataBase()和getWritableDataBase(),这两个方法都可以创建或打开一个现有的数据库(如果数据库已经存在则直接打开,否则进行创建),并且返回一个可以对数据库进行读写操作的对象。但,当数据库不可写入时(磁盘满),getReadableDataBase()返回的对象以只读的方式打开数据库,而getWritableDataBase()将出现异常。


SQLiteOpenHelper的实例类


MainActivity类


布局文件


5.或许有些朋友已经看到,SQLiteOpenHelper的onUpgrade()还没有用到,下面我们就来了解下这个方法是如何使用的。

    比如说我们现在还想在原来的类中再继续创建另一张表,那按照我们之前的做法,我们只需要写出创建表的语句,在MyDataBaseHelper类的onCreate()中执行创建语句就可以了

public class MyDataBaseHelper extends SQLiteOpenHelper {
    /**
     * 1.创建表
     * primary key 唯一键,integer整型,text 文本,blob二进制类型,real浮点型,autoincrement自增长
     * 2.给出Context
     */
    public static final String CREATE_BOOK = "create table book(id integer primary key autoincrement,author text,price real,pages integer,name text)";
    private Context mContext;

    public static final String CREATE_AUTHOR = "create table author(id integer primary key autoincrement,author_name text)";

public void onCreate(SQLiteDatabase db) {
    db.execSQL(CREATE_BOOK);//创建表语句
    db.execSQL(CREATE_AUTHOR);

    Toast.makeText(mContext, "创建成功", Toast.LENGTH_SHORT).show();
}

但是,当我们执行完上述操作后,根本没有吐司出提示说表创建成功,因为我们已经创建过BookStore.db表了,MyDataBaseHelper()的onCreate()不会再次执行。如果我们想要吐司表创建成功,我们需要把项目卸载重新运行就可以了。或者我们此时就可以知道onUpgrade()的作用啦,只需几行代码就可以搞定,详情看下面代码。

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("drop table if exists Book");
    db.execSQL("drop table if exists Author");
    onCreate(db);
}

我们可以看到在onUpgrade()中,执行了两条DROP语句【

Drop

:用于删除表(注:将表的结构、属性、索引也会被删除。

 

 

语法:

Drop Table 

表名称

Drop:用于删除表(注:将表的结构、属性、索引也会被删除。)  语法:Drop Table 表名称 】,就是如果发现数据库中存在上述两张表的话就先删除,然后在调用onCreate()去重新创建表。(这里先将存在的表删除,是因为如果创建表时发现表已经存在会报错)。 那么接下来我们的任务就是执行onUpgrage(),要想执行此方法,只需要将SQLiteOpenHelper的构造函数的第四个参数改的比原来的数大就好了。改为2表示我们对数据库进行了升级。这样直接运行项目就可以创建两张表啦~~~

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //参数:上下文,数据库名称,允许我们返回的自定义的cursor(一般为null),版本号。
    dbHelper = new MyDataBaseHelper(this,"BookStore.db",null,2);
    initView();
}

总结,这只是Android内置SQLite的基本使用方法,会了最基本的用法,相信你能写出更多好的代码。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值