Android 数据库Sqlite的使用(1)

在Android中,我们使用的数据库是一个轻量级的数据库 sqlite 下面我们来学习一下它的CURD操作

首先 我们需要创建一个类 继承自android自带的一个数据库帮助类SQLiteOpenHelper 类名可以自己定义

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

import sqlite.android_sqlite.Constant;

public class MysqliteHelper extends SQLiteOpenHelper {
    public static final String TAG=MysqliteHelper.class.getName();

    public static final String DATABASE_NAME="userinfo";
    public static final int DATABASE_VERSION=1;

    /**
     * 构造函数
     * @param context 上下文
     * @param name 数据库名
     * @param factory 游标工厂
     * @param version 数据库版本 必须大于或等于1
     */
    public MysqliteHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    /**
     * 构造函数
     * @param context
     */
    public MysqliteHelper(Context context){
        /*第三个参数我们现在可以默认为空*/
        super(context,DATABASE_NAME,null,DATABASE_VERSION);
    }



    /**
     * 创建数据库
     * @param db 数据库对象
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        Log.e(TAG,"-------->onCreate");
        String sql = "create table person(name varchar(20),age Integer)"
        db.execSQL(sql);

    }

    /**
     * 版本升级
     * @param db 数据库对象
     * @param oldVersion 旧版本
     * @param newVersion 新版本
     */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.e(TAG,"-------->onUpgrade");
    }

    /**
     * 打开数据库
     * @param db
     */
    @Override
    public void onOpen(SQLiteDatabase db) {
        super.onOpen(db);
        Log.e(TAG,"-------->onOpen");
    }
}

创建完成后我们重写父类方法 这里我们可以发现 有两个构造方法 第二个构造方法是我们自己创建的 目的是方便创建实例 我们在新建实例时只需要传入上下文即可 其他参数我可以事先定义好。 在oncreat方法中 代码用于创建数据表 person 这里我们只写两个字段 方便以后练习使用

现在我们已经创建好了数据库类 接下来我们打开布局文件 写入一个按钮控件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <Button
        android:onClick="createDB"
        android:id="@+id/createdb"
        android:text="创建或打开数据库"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout >

接下来。我们再创建一个DBManger的类 用于构建数据库

public class DBManger {
    public static MysqliteHelper helper;

    /**
     * 将 MysqliteHelper 类构建为一个单例的形式 只允许拥有一个实例
     * @param context 上下文
     * @return 数据库对象
     */
    public static MysqliteHelper getMmysqliteHelper(Context context){
        if(helper==null){
            helper = new MysqliteHelper(context);
        }
        return helper;
    }
}

我们这么做的原因是因为 在正常情况下数据类应该只能有一个实例 所有我们利用这种方法来判断当前数据库是否为空 诺为空表示还没有创建  ,那么我们便创建它,然后返回该对象

现在我们在Activity中创建一个createDB的方法  并先声明好MysqliteHelper 与SQLiteDatabase ,然后调用DBManger类中的静态方法获取实例

public class MainActivity extends AppCompatActivity {
    private MysqliteHelper helper;
    private SQLiteDatabase db = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        helper = DBManger.getMmysqliteHelper(this);
    }

    public void createDB(View view){
        /**
         * getReadableDatabase
         * getWritableDatabase
         * 这两个方法的作用是创建或打开数据库 如果数据库存在 则打开 否则的话就
         * 创建后再打开
         * 事实上 默认情况下 这两个方法打开的都是可读可写数据库 是没有区别的 只是
         * 当我们磁盘已满或者权限问题等特殊情况时它们才会区分开来 如下
         * getReadableDatabase是只打开可读数据库 getWritableDatabase只打开可写数据库
         */
        db = helper.getWritableDatabase();
        Toast.makeText(this,"创建或打开成功",Toast.LENGTH_SHORT).show();
    }
}

这里我们需要注意的是 在获取数据库对象时,他会默认有两个方法可供我们使用 分别是 getReadableDatabase与getWritableDatabase 这两种方法的区别我已经写在注释里了 好了。到这里我们以及创建好了一个数据库

点击按钮后便会创建userinfo数据库,我们可以在如下路径中找到该数据库  以我华为手机为例 当我们点击按钮创建数据库后可以在 data-->data-->应用包名(例如 com.sql.tdy)-->database 目录下找到

下一篇文章中我们将介绍数据库的修改 插入 以及删除的使用

https://blog.csdn.net/tdl081071tdy/article/details/88377515    ( Android 数据库Sqlite的使用(2)

猜你喜欢

转载自blog.csdn.net/tdl081071tdy/article/details/88377267