Android 创建数据库 (DB)
在Android开发中,SQLite是一种轻量级的嵌入式关系型数据库,非常适合用于存储应用程序的数据,本文将详细介绍如何在Android项目中创建和使用SQLite数据库。
1、SQLite简介
2、创建SQLite数据库
3、创建表
4、插入数据
5、查询数据
6、更新数据
7、删除数据
8、示例代码
SQLite是一种C语言库,它实现了一个小型的、快速且自给自足的SQL数据库引擎,SQLite是嵌入式的,这意味着它不需要单独的服务器进程或操作环境,这使得它非常适合于移动设备和嵌入式系统。
在Android中,我们可以通过继承SQLiteOpenHelper
类来创建一个数据库。SQLiteOpenHelper
类提供了一种简单的方法来管理数据库版本和升级。
public class MyDatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "example.db";
private static final int DATABASE_VERSION = 1;
public MyDatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// 在这里创建表
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 在这里升级数据库
}
}
在onCreate
方法中,我们可以使用SQL语句创建表。
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_TABLE_SQL = "CREATE TABLE users (" +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"name TEXT, " +
"age INTEGER)";
db.execSQL(CREATE_TABLE_SQL);
}
我们可以使用insert
方法向表中插入数据。
public void addUser(String name, int age) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", name);
values.put("age", age);
db.insert("users", null, values);
db.close();
}
我们可以使用query
方法从表中查询数据。
public List<String> getAllUsers() {
List<String> userList = new ArrayList<>();
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query("users", new String[]{"name"}, null, null, null, null, null);
if (cursor.moveToFirst()) {
do {
String name = cursor.getString(cursor.getColumnIndex("name"));
userList.add(name);
} while (cursor.moveToNext());
}
cursor.close();
db.close();
return userList;
}
我们可以使用update
方法更新表中的数据。
public void updateUser(int id, String name, int age) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", name);
values.put("age", age);
String selection = "id = ?";
String[] selectionArgs = {String.valueOf(id)};
db.update("users", values, selection, selectionArgs);
db.close();
}
我们可以使用delete
方法从表中删除数据。
public void deleteUser(int id) {
SQLiteDatabase db = this.getWritableDatabase();
String selection = "id = ?";
String[] selectionArgs = {String.valueOf(id)};
db.delete("users", selection, selectionArgs);
db.close();
}
以下是一个完整的示例代码,展示了如何创建和使用SQLite数据库:
public class MyDatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "example.db";
private static final int DATABASE_VERSION = 1;
public MyDatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_TABLE_SQL = "CREATE TABLE users (" +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"name TEXT, " +
"age INTEGER)";
db.execSQL(CREATE_TABLE_SQL);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 如果需要升级数据库,可以在这里添加代码
}
public void addUser(String name, int age) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", name);
values.put("age", age);
db.insert("users", null, values);
db.close();
}
public List<String> getAllUsers() {
List<String> userList = new ArrayList<>();
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query("users", new String[]{"name"}, null, null, null, null, null);
if (cursor.moveToFirst()) {
do {
String name = cursor.getString(cursor.getColumnIndex("name"));
userList.add(name);
} while (cursor.moveToNext());
}
cursor.close();
db.close();
return userList;
}
public void updateUser(int id, String name, int age) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", name);
values.put("age", age);
String selection = "id = ?";
String[] selectionArgs = {String.valueOf(id)};
db.update("users", values, selection, selectionArgs);
db.close();
}
public void deleteUser(int id) {
SQLiteDatabase db = this.getWritableDatabase();
String selection = "id = ?";
String[] selectionArgs = {String.valueOf(id)};
db.delete("users", selection, selectionArgs);
db.close();
}
}