Android中SQLite的创建和更新!

文章目的:快速入门Android中的SQLite(数据库)来实现创建和升级(更新)

前言:Android 为了让我们能够方便地管理数据库,提供了一个SQLiteOpenHelper类, 借助这个类就可以非常简单地对数据库进行创建和升级。因本文是快速入门,就不对SQLiteOpenHelper进行详细介绍,这里简单提一下:SQLiteOpenHelper中有两个抽象方法,分别是onCreate()和onUpgrade(),还 有 两 个 非 常 重 要 的 实 例 方 法 , getReadableDatabase()和getWritableDatabase(),好了,相信同学们更在乎如何使用它,我们直接开始。

开发环境:

  • 编写代码工具:Android Studio 2.2.2
  • compileSdkVersion 25
  • buildToolsVersion “25.0.0”
  • minSdkVersion 19
  • targetSdkVersion 25
  • compile ‘com.android.support:appcompat-v7:25.0.0’

提示:文章末尾下载项目时注意开发环境的更改,以免造成不必要的时间浪费。

一、实现创建数据库和数据库的表

为了测试,我们创建一个名为BookStore.db的数据库,然后在这个数据库中新建一张Book表,表中有 id(主键)、作者、价格、页数和书名等列。当然数据库会用到SQL基本功,但是只要大家看下面的代码,也能轻松理解出来。

这里,我们新建名叫MySqlDataHelper类继承自 SQLiteOpenHelper。
/**
 * 继承SQLiteOpenHelper会先实现2个方法,实现1个构造方法
 */
public class MySqlDataHelper extends SQLiteOpenHelper {

    //上下文的context
    private Context mContext;

    //数据库的标准写法,可以直接复制使用并稍微修改
    public static final String CREATE_BOOK = "create table book ("
            + "id integer primary key autoincrement, "
            + "author text, "
            + "price real, "
            + "pages integer, "
            + "name text)";

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

    /**
     * 这里是创建
     * @param sqLiteDatabase
     */
    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        //SQLiteDatabase中的execSQL方法来执行建表语句
        sqLiteDatabase.execSQL(CREATE_BOOK);
        Toast.makeText(mContext, "Create succeeded", Toast.LENGTH_SHORT).show();
    }

    /**
     * 这里是更新
     * @param sqLiteDatabase
     * @param i
     * @param i1
     */
    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}

这样,我们就已经做好了准备,接下来只需要执行写入方法就行。

我们在activity_main的布局文件中创建一个Button来用点击创建这个监听事件。

<Button
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="创建数据库"
       android:id="@+id/creat"/>

然后,在Activity中来实例对象,实现4个参数的构造方法即可。

public class MainActivity extends AppCompatActivity {

    private Button mButton;
    private MySqlDataHelper helper;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mButton = ((Button) findViewById(R.id.creat));
        /*这个构造方法中接收四个参数,第一个参数是 Context,第二个参数是给数据库创建一个名字,
        第三个参数允许我们在查询数据的时候返回一个自定义的 Cursor,一般都是传入 null。
        第四个参数表示当前数据库的版本号,传入1即可*/
        helper = new MySqlDataHelper(this, "BookStore.db", null, 1);
        mButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //执行写入数据
                helper.getWritableDatabase();
            }
        });
    }
}

准备完成,我们运行程序看看效果,点击Button,弹出Toast提示。说明已经创建完成,并且再次点击就不会弹出Toast。想要查看创建好的数据库位置,只需要在/data/data/<package name>/databases/目录下查看即可。(packagename是你的包名)



二、升级数据库

你肯定发现了MySqlDataHelper类中还有一个空方法,没错, onUpgrade()方法是用于对数据库进行升级的,它在整个数据库的管理工作当中起着非常重要的作用,可千万不能忽视它哟。

我们已经有一张 Book 表用于存放书的各种详细数据,但是我们又想再添加一张 Category表用于记录书籍的分类该怎么做呢?很简单,只需要再创建一个表,然后将两个表放入onUpgrade中,然后执行onCreate()方法。

我们回到MySqlDataHelper类中,对onUpgrade方法进行操作(注意注释掉onCreate()中的代码

/**
     * 这里是更新
     * @param sqLiteDatabase
     * @param i
     * @param i1
     */
    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
        sqLiteDatabase.execSQL("drop table if exists Book");
        sqLiteDatabase.execSQL("drop table if exists Category");
        onCreate(sqLiteDatabase);
    }

最后在MainActivity中,将之前的版本号改成大于1的数字就行了。

public class MainActivity extends AppCompatActivity {

    private Button mButton;
    private MySqlDataHelper helper;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mButton = ((Button) findViewById(R.id.creat));
        /*这个构造方法中接收四个参数,第一个参数是 Context,第二个参数是给数据库创建一个名字,
        第三个参数允许我们在查询数据的时候返回一个自定义的 Cursor,一般都是传入 null。
        第四个参数表示当前数据库的版本号,传入1即可,更新的话,数字改成大于1的即可*/
        helper = new MySqlDataHelper(this, "BookStore.db", null, 2);
        mButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //执行写入数据
                helper.getWritableDatabase();
            }
        });
    }
}
再次运行程序,点击Button后,数据库就更新完成了。在/data/data/<package name>/databases/目录下再次查看,就发现创建2个表成功了!

三、总结

Android中数据库的使用其实非常简单,但是运用在实际项目中,需要牢记:创建,更新,增删改查,我会在后面的文章中继续讲解数据库的增删改查。


项目下载地址:http://pan.baidu.com/s/1dFupDbN     如果链接挂了,请回复,我会尽快更新。
欢迎大家加微信进行技术交流和提出意见, 欢迎大家关注我的微信公众号,我一定会最快回复你!










  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值