设为首页 加入收藏

TOP

安卓开发笔记(十二):SQLite数据库储存(上)(二)
2019-09-01 23:12:54 】 浏览:70
Tags:安卓 开发 笔记 十二 SQLite 数据库 储存
quot;
android:layout_height="match_parent" tools:context=".MainActivity"> <Button android:id="@+id/creat" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Creat database"/> </android.support.constraint.ConstraintLayout>

最后,我们只需要按住这个按钮,界面上就会弹出“数据库创建成功”的toast资阳区,再次点击的时候就不会出现了,但我们可以使用另外的的方法来查看我们创建数据库成功没,打开cmd就可以很容易地查看了。

 二.往数据库当中再添加新表的方法

假设我们往数据库当中加入category这张表的话,代码首先从我们刚刚创建的类里在添加一段创建表的代码就可以了,同时在建表语句onCreate函数下添加建表语句

 db.execSQL(CREATE_CATEGORY);

最后我们在

 onUpgrade()方法内写上:
  db.execSQL("drop table if exists Book"); db.execSQL("drop table if exists Category")
  onCreate(db);

这样子就可以避免我们必须卸载我们的软件才可以在点击create database之后出现“新建数据库成功”的Toast字样。
代码如下:
package com.example.lenovo.studyittwo;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;

public class MyDatabaseHelper extends SQLiteOpenHelper {
    private static final String CREATE_BOOK = "create table book("
            +"id integer primary key autoincrement,"
            +"author text,"
            +"price real,"
            +"pages integer,"
            +"name text)";

public static final String CREATE_CATEGORY="create table Category("
    +"id integer primary key autoincrement,"
    +"category_name text,"
    +"category_code integer)";



    private Context mContext;//至于为什么我们要使用下面这段代码以及为什么要定义这个私有的变量,书上并没有写我也不知道

    /**
     * 构造方法
     * @param context
     * @param name 数据库名
     * @param factory 允许我们在查询数据的时候返回一个自定义的 Cursor,一般都是传入 null
     * @param version 当前数据库的版本号,可用于对数据库进行升级操作
     */
    public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
        mContext = context;
    }

    /**
     * 创建数据库
     * @param db
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        // 执行建表语句
        db.execSQL(CREATE_BOOK);
        db.execSQL(CREATE_CATEGORY);
        Toast.makeText(mContext,"创建数据库功",Toast.LENGTH_LONG).show();
    }

    /**
     * 升级数据库
     * @param db
     * @param oldVersion
     * @param newVersion
     */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("drop table if exists Book");
        db.execSQL("drop table if exists Category");
        onCreate(db);
    }

}

在写完这段代码之后,由于我们使用了

onUpgrade()函数

因此我们在主活动当中对代码进行一定的更改,将主活动当中的
dbHelper = new MyDatabaseHelper(this, "BookStore.db", null, 1);
更改成:
dbHelper = new MyDatabaseHelper(this, "BookStore.db", null, 2);
确保后面的版本号为2才可以使用这个升级的函数,具体主活动的代码如下:
package com.example.lenovo.studyittwo;


import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
    private MyDatabaseHelper dbHelper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Android中对已安装应用的管理实现 下一篇dagger2的初次使用

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目