Android数据持久化—SQLite数据库-创建数据库(一)

版权声明:转载请注明本文链接 https://blog.csdn.net/qq_31844349/article/details/81089944

       在编写软件的过程中,我们通常会在移动设备的本地保存一些数据,这些数据如何保存,就是使用到一个android 端的轻量级数据库SQLite,在数据存储大家都应该使用过SharedPreferences,这个东西只适合存储一些简单的数据,但是到了复杂的关系型数据的时候,上面这种方式就很难应付,所以就要使用sqlite数据库。

       SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。 至2015年已经有15个年头,SQLite也迎来了一个版本 SQLite 3已经发布。

     首先我们要知道Android为我们提供了一个非常棒的帮助了他是:SQLiteOpenHelper类,这个类是一个抽象类,他包含两个我们要重写的方法:onCreate(创建数据库)和OnUpgrade(更新数据库),需要在这两个方法进行创建数据库和升级数据库,SQLiteOpenHelper包含两个重要的实例方法:getWritableDatabase()和getReadableDatabase()这两个方法都可以创建和打开数据库,返回一个操作数据库的对象,牛逼吧前言介绍完了,开始写代码吧:!!!!!

      创建一个继承SQLiteOpenHelper的SQLiteDataBase类

public class SqliteData extends SQLiteOpenHelper {
    
    private Context mContext;

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

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}

大家可以看到,我创建了一个继承SQLiteOpenHelper的类,实现了我上面提到的那两个抽象方法,并加了一个构造方法。

构造方法参数:第一个参数:上下文,第二个参数:数据库名,第三个参数:允许查询数据返回一个cursor,第四个参数:数据库版本号

现在开始尝试下创建数据库:大家都应该知道sql语句吧,不知道的话点击这里了解下。

我先写一个sql语句的变量:

 public static final String CREATE_BOOK = "create table Book("
            + "id integer primary key autoincrement,"
            + "name text,"
            + "price real,"
            + "author text)";

这个sql语句的意思是:创建一个Book的表,里面的字段是id(设置为主键自增),name,price,author。

@Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        sqLiteDatabase.execSQL(CREATE_BOOK);
    }

 这个看名字就知道是创建数据库,这里直接是用 SQLIteDatabase的对象来执行我们写好的sql语句,就可以创建数据库了,

MainActivity.java核心代码

sqliteData = new SqliteData(MainActivity.this, "BookStore.db", null, 1);
        mButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                sqliteData.getWritableDatabase();
            }
        });

上面着写是核心代码,我把全部的代码放在下面:

SqliteData.java

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

    /**
     * Created by dark on 2018/7/17.
     */

    public class SqliteData extends SQLiteOpenHelper {

        public static final String CREATE_BOOK = "create table Book("
                + "id integer primary key autoincrement,"
                + "name text,"
                + "price real,"
                + "author text)";
        private Context mContext;

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

        @Override
        public void onCreate(SQLiteDatabase sqLiteDatabase) {
            sqLiteDatabase.execSQL(CREATE_BOOK);
        }

        @Override
        public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

        }
}

MainActivity.java

import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private Button mButton,mAdd;
    private SqliteData sqliteData;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mButton = (Button) findViewById(R.id.btn);
        mAdd = (Button) findViewById(R.id.add);
        sqliteData = new SqliteData(MainActivity.this, "BookStore.db", null, 1);
        mButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                sqliteData.getWritableDatabase();
            }
        });
    }
}

PS:如何查看数据库数据:我是用的是MAC系统,查看数据库教程仅供参考,不能作为实际查看数据库

我使用的ls命令。在windows系统中换成dir命令

打开终端进入sdk文件夹,打开platform-tools文件夹,里面会有一个adb文件,这里如果你闲每次都需要这样打开这个工具麻烦,那可以设置系统变量(设置系统变量我就不写了);

1找到这个adb文件执行这个文件./adb shell
2进入data文件夹执行两次 cd data
3在最后一次进入的data文件夹内,找到你自己的项目文件夹,其实就是你项目的包名
0执行sqlite3 你自己的数据库名,这里千万不要看图片上的,图片上的命令不知道怎么回事是错误的,必须是sqlite3 你自己的数据库名
打开数据库执行.table查看表名
看,这样刚刚我自己创建的数据库表名就查到了

猜你喜欢

转载自blog.csdn.net/qq_31844349/article/details/81089944