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数据库操作可以帮助到读者,更好地解决数据存储的问题。


数据运维技术 » Android轻松打造本地数据存储——SQLite数据库创建 (android创建sqlite数据库)