Android轻松打造本地数据存储——SQLite数据库创建 (android创建sqlite数据库)
在移动应用开发中,数据存储一直是一个重要的问题。而且在App的功能实现中,往往需要在本地进行数据的存储和管理。Android中有许多的本地数据存储方式,其中SQLite数据库是常见的一种。
一、什么是SQLite数据库
SQLite是一种轻量级的数据库,它是一个不需要独立的服务器进程的库函数。它所支持的数据类型有NULL、INTEGER、REAL、TEXT和BLOB,同时也保证了数据的正确性和安全性。SQLite可以用在任何一个需要本地数据存储的项目中,例如:Android、iOS等移动App应用,也可作为单机模式下的一种轻量级数据库。
二、SQLite数据库的使用
在Android中,SQLite数据库的使用十分的简单。使用SQLite首先需要先确定数据表的字段及对应数据类型。(这里以一个学生表为例,字段包括id、name、gender、age、phone)
“`
CREATE TABLE student(
id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR(20),
gender VARCHAR(5),
age INTEGER,
phone CHAR(11)
);
“`
在Android中SQLite的使用,可以选择使用原始SQL语句来创建SQLite数据库,也可以使用SQLiteOpenHelper类来创建SQLite数据库。
1.使用原始SQL语句创建
(1)创建SQLiteOpenHelper类,如下所示:
“`
public class MySQLiteHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = “student.db”;
public static final int DATABASE_VERSION = 1;
public MySQLiteHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// 创建表
db.execSQL(“CREATE TABLE student(” +
“id INTEGER PRIMARY KEY AUTOINCREMENT,” +
“name VARCHAR(20),” +
“gender VARCHAR(5),” +
“age INTEGER,” +
“phone CHAR(11))”);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(“DROP TABLE IF EXISTS student”);
onCreate(db);
}
}
“`
(2)在需要使用的Activity中创建MySQLiteHelper实例,并调用 getWritableDatabase() 或 getReadableDatabase() 方法即可。
“`
MySQLiteHelper helper = new MySQLiteHelper(this);
SQLiteDatabase db = helper.getWritableDatabase(); // 获取写对象
“`
这里需要注意的是,如果数据库不存在则自动创建,如果存在,则直接打开。
2.使用SQLiteOpenHelper类创建
(1)定义需要创建的表,并将其写到onCreate()中,如下所示:
“`
public class MyDatabaseHelper extends SQLiteOpenHelper {
public static final String CREATE_BOOK = “create table student (“
+ “id integer primary key autoincrement, “
+ “name text, “
+ “gender text, “
+ “age integer, “
+ “phone char(11) )”;
public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_BOOK);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
“`
(2)声明MyDataBaseHelper实例,如下所示:
“`
MyDatabaseHelper dbHelper = new MyDatabaseHelper(this, “student.db”, null, 1);
SQLiteDatabase db = dbHelper.getWritableDatabase();
“`
这样我们就建立起了一个SQLite数据库。可以通过db.rawQuery()方法进行数据的存储和管理。
三、SQLite数据库的数据操作
1.添加数据
要向表中添加数据,可以使用SQL语句来实现,也可以使用框架提供的API实现。
(1)使用SQL语句添加数据,如下所示:
“`
String sql = “insert into student(id,name,gender,age,phone) values(null,?,?,?,?)”;
db.execSQL(sql, new Object[]{“小明”,”男”,15,”13111112222″});
“`
通过 ? 占位符将数据进行占位,然后使用 Object 数组来传递数据,其中 ? 的个数应该与字段的个数相同。
(2)使用框架提供的API添加数据,如下所示:
“`
ContentValues values = new ContentValues();
values.put(“name”, “小明”);
values.put(“gender”, “男”);
values.put(“age”, “15”);
values.put(“phone”, “13111112222”);
db.insert(“student”, null, values);
“`
2.查询数据
查询数据同样也是使用SQL语句,可以选择返回结果为Cursor对象的查询方式,也可以选择将结果封装在一个JavaBean对象中返回。我们这里使用返回Cursor的查询方式。如下所示:
“`
String sql = “select * from student”;
Cursor cursor = db.rawQuery(sql, null);
if (cursor.moveToFirst()) {
do {
int id = cursor.getInt(cursor.getColumnIndex(“id”));
String name = cursor.getString(cursor.getColumnIndex(“name”));
String gender = cursor.getString(cursor.getColumnIndex(“gender”));
int age = cursor.getInt(cursor.getColumnIndex(“age”));
String phone = cursor.getString(cursor.getColumnIndex(“phone”));
// 将查询到的数据打印出来
Log.d(TAG, “queryData: ” + “id==” + id + ” 类型==” + name + ” 年龄==” + age + ” ==” + phone);
} while (cursor.moveToNext());
}
cursor.close();
“`
3.删除数据
删除数据同样也是使用SQL语句,如下所示:
“`
db.delete(“student”, “id=?”, new String[]{“1”});
“`
这里的 “student” 表示需要操作的数据表名, “id=?” 表示需要删除的记录的id值,如果有多个记录需要删除,可以使用分号分隔。delete() 的第三个参数表示此处条件的取值,放在一个数组中,如果有多个条件,同样也可以使用分号分隔。其中,?为占位符,用于防止SQL注入攻击。
4.更新数据
更新数据同样也是使用SQL语句,如下所示:
“`
ContentValues values = new ContentValues();
values.put(“name”, “张三”);
db.update(“student”, values, “id=?”, new String[]{“1”});
“`
update() 方法的之一个参数同样也是需要更新的数据表名,第二个参数是一个ContentValues对象,这个对象中需要存放更新后的数据的键值对,第三个参数和删除数据中的一样,表示更新的条件。
四、
本文主要介绍了在Android开发中如何使用SQLite数据库进行本地数据存储的创建、数据操作等流程。SQLite作为一种轻量级数据库,操作简单,同时相较与其他数据库产品,SQLite更加灵活,支持数据复制和并发访问等功能。因此,在Android丰富的生态圈中,SQLite数据库得到了广泛的应用。希望本文所介绍的SQLite数据库操作可以帮助到读者,更好地解决数据存储的问题。