Android SQLiteOpenHelper Sqlite数据库的创建与打开

Android Sqlite数据库是一个怎样的数据库?
答:是一种嵌入式小型设备,移动设备,的数据库,应用在穿戴设备(例如:智能手表,计算手环 等等),移动设备(例如:Android系统类型的手机 等等),属于嵌入式关系型数据库。

在Android开发过程中,只需调用Android所提供的Sqlite API接口,底层会调用Sqlite.c 程序去生成数据库,创建表字段 等等;

虽然在Android Sqlite3 支持了 null,integer,real,char(n),varchar(n),decimal(p,s),这些类型,但是 请注意:除了ID唯一主键是integer类型,其他所有类型,最后都会变成TEXT类型。

在Android API中提供了,SQLiteOpenHelper对数据库创建,管理操作等;
这里写图片描述

创建表的语句:create table student_table(_id integer primary key autoincrement, name text);

import android.content.Context;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class MySQLiteOpenHelper extends SQLiteOpenHelper {

    /**
     * 数据库的名称
     */
    private static final String DATABASE_NAME = "PersonDB.db";

    /**
     * 数据库的版本号,以后要升级数据库,修改版本号为 +1 即可
     */
    private static final int DATABASE_VERSION = 1;

    private static MySQLiteOpenHelper instance;

    /**
     * 单例模式
     * @param context 传入上下文
     * @return 返回MySQLiteOpenHelper对象
     */
    public static MySQLiteOpenHelper getInstance(Context context) {
        if (null == instance) {
            synchronized (MySQLiteOpenHelper.class) {
                if (null == instance) {
                    instance = new MySQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION);
                }
            }
        }
        return instance;
    }

    // 构造方法不对外暴露
    private MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    // 构造方法不对外暴露
    private MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler) {
        super(context, name, factory, version, errorHandler);
    }

    // 初始化操作,会执行onCreate
    @Override
    public void onCreate(SQLiteDatabase db) {
        // 创建一个 student_table表
        db.execSQL("create table student_table(_id integer primary key autoincrement, name text);");
    }

    // 用于升级数据库,当Version 变动了,就会调用onUpgrade方法
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

这里写图片描述

sqLiteOpenHelper.getWritableDatabase();,没有数据库就创建数据库,有数据库就打开数据库。

 @Override
    public void onClick(View v) {
        MySQLiteOpenHelper sqLiteOpenHelper = MySQLiteOpenHelper.getInstance(MainActivity.this);
        sqLiteOpenHelper.getWritableDatabase();
    }

生成完成:
这里写图片描述

看看表结构:
这里写图片描述


谢谢大家的观看,更多精彩技术博客,会不断的更新,请大家访问,
刘德利CSDN博客, http://blog.csdn.net/u011967006

原文地址:https://www.cnblogs.com/android-deli/p/10322164.html