• 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

  • 相关阅读:
    创建网络数据集
    [虚拟机]Virtual Box的使用--共享文件夹
    MapControl图层删除或添加触发监听事件
    Dev控件GridView单元格绑定控件
    Log4net中换行符
    没有为 COM 互操作注册程序集 请使用 regasm.exe /tlb 注册该程序集——解决办法
    加载dll过程中assembly失败
    Spring Boot 自带缓存及结合 Redis 使用
    Spring Boot + Redis 初体验
    在 Windows 中使用 C# 启动其他程序
  • 原文地址:https://www.cnblogs.com/android-deli/p/10322164.html
Copyright © 2020-2023  润新知