Android 系统内置了一个名为 SQLite 数据库。那么 SQLite 是一种什么样的数据库,它有那些特点,应该怎么操作它?下面,让我们就来认识一下它吧。
1、概念: SQLite 是一种轻量级的关系型数据库,它不仅支持标准的 SQL 语法,还遵守了数据库的 ACID (Atomicity原子性、Consistency 一致性 、Isolation 隔离性 、Durability 持久性)事务。
2、特(优)点:
(1) 运算速度快;
(2) 占用资源少(几百KB);
(3) 能够存储量大且结构复杂的数据。
3、常用数据类型及关键字:
- integer(整型)
- real(浮点型)
- text(文本类型)
- blob(二进制类型)
- primary key 设置属性为主键
- autoincrement 表示属性所在的列是自增长的
4、数据库文件存储路径:/data/data/<package_name>/databases/<databases_name>.db
5、常用操作命令:
(1) 打开数据库:【 sqlite3 <database_name> 】
(2) 查看所有表:【 .table 】
(3) 查看表的构建命令:【 .schema <table_name> 】
(4)退出数据库编辑: 【 .exit 】 或【 .quit 】
6、创建 SQLite 数据库
第一步: 创建数据库需要定义一个子类去继承 SQLiteOpenHelper 抽象类,然后重写这个类的OnCreate() 、onUpgrade() 方法,并且还要定义一个构造方法。
其中一个构造方法的参数如下:
- 参数1:Context
- 参数2:数据库名称
- 参数3:cursor(光标,查询数据时可返回,一般填null)
- 参数4:数据库版本号(用于升级)
第二步: 在 OnCreate() 方法中调用 execSQL() 方法,然后传入一个含 SQL 语句的字符串参数作为创建数据库内容的指令;
第三步: 创建 SQLiteOpenHelper 子类的对象,然后调用对象的 getReadableDatabase() 或 getWritableDatabase() 方法来创建或打开数据库,这两个方法都会返回一个可对数据可进行读写操作的 SQLiteDatabase 对象。不同的是,当数据库不可写入时(如磁盘空间已满),前者返回的对象将会以只读的方式打开数据库,而后者将会出现异常。此外,需要注意的是,当数据库已存在时,程序是不会再创建数据库的。
以下是创建数据库的示例代码:
public class MyDatabaseHelper extends SQLiteOpenHelper {
//定义创建book表格的SQL语句
public static final String CREATE_BOOK = "create table Book("
+"id integer primary key autoincrement,"
+"author text,"
+"price real,"
+"pages integer,"
+"name txt)";
private Context mContext;
public MyDatabaseHelper(@Nullable Context context, @Nullable String name,
@Nullable SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
mContext = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
//执行SQL语句
db.execSQL(CREATE_BOOK);
Toast.makeText(mContext, "Create succeeded!", Toast.LENGTH_SHORT).show();
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
public class MainActivity extends AppCompatActivity {
private MyDatabaseHelper dbHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbHelper = new MyDatabaseHelper(this, "BookStore.db", null, 1);
Button createDatabase = (Button) findViewById(R.id.create_database);
createDatabase.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dbHelper.getReadableDatabase();
}
});
}
}