在编写软件的过程中,我们通常会在移动设备的本地保存一些数据,这些数据如何保存,就是使用到一个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文件,这里如果你闲每次都需要这样打开这个工具麻烦,那可以设置系统变量(设置系统变量我就不写了);