Android应用开发中,数据库是非常重要的一部分,除了存储和管理数据外,还有不少应用涉及到几个或多个表格之间的相互关系,因此,良好的数据库设计和实现就显得尤为重要了。
一、SQLite数据库
Android 被设计为高性能的移动操作系统,它使用轻量级的 SQLite 数据库来存储应用程序数据。SQLite 是一种免费,开源的数据库引擎,它最初是一个独立的项目,并在多个编程语言,平台和操作系统上使用,包括 Android 中。SQLite 并不是一个完整的数据库服务器,而是一个库,即嵌入式库,由一个小型的,自包含的,正式的 ANSI C 的源码库组成,它在需要时可以动态链接库。SQLite 旨在提供一种嵌入式 ACID 数据库,适用于从小型的嵌入式设备到超大型的信息库的服务器情景。
下面是 Android 中简单使用 SQLite 的例子:
1.创建一个 Helper 从而打开/创建一个数据库
public class DBHelper extends SQLiteOpenHelper {
private static final String DB_NAME = "mydata.db";
private static final int DB_VERSION = 1;
public static final String TABLE = "t_person";
public DBHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + TABLE + "(_id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR, age INTEGER)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE);
onCreate(db);
}
}
在MyApplication里初始化数据库
public class MyApplication extends Application {
public static DBHelper dbHelper;
@Override
public void onCreate() {
super.onCreate();
dbHelper = new DBHelper(this);
}
@Override
public void onTerminate() {
super.onTerminate();
dbHelper.close();
}
}
在Activity里执行SQL语句
Button bt_insert = (Button)findViewById(R.id.bt_insert);
bt_insert.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SQLiteDatabase db = MyApplication.dbHelper.getWritableDatabase();
String sql = "INSERT INTO " + DBHelper.TABLE + "(name,age) values (?,?)";
Object[] bindArgs = {"Tom",12};
db.execSQL(sql, bindArgs);
}
});
2.数据库操作语句
SQLite 通过 SQL 语句进行数据库操作,包括增、删、改和查四个基本操作,下面列出一些 SQLite 常用的 SQL 语句:
创建表格: CREATE TABLE table_name (column_name data_type);
删除表格: DROP TABLE table_name;
清空数据表: DELETE FROM table_name;
查询数据: SELECT column1, column2, ... FROM table_name;
插入数据: INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
更新数据: UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE some_column = some_value;
删除数据: DELETE FROM table_name WHERE some_column = some_value;
二、数据库基本操作示例
1.插入数据
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", "Tom");
values.put("age", "12");
db.insert(DBHelper.TABLE, null, values);
db.close();
2.获取数据
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.query(DBHelper.TABLE, new String[] { "_id", "name", "age" }, null, null, null, null, null);
if (cursor.moveToFirst()) {
do {
int idIndex = cursor.getColumnIndex("_id");
int id = cursor.getInt(idIndex);
String name = cursor.getString(cursor.getColumnIndex("name"));
int age = cursor.getInt(cursor.getColumnIndex("age"));
//代码处理...
} while (cursor.moveToNext());
}
3.修改数据
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("age", 20);
db.update(DBHelper.TABLE, values, "name = ?", new String[] { "Tom" });
db.close();
4.删除数据
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.delete(DBHelper.TABLE, "_id = ?", new String[] { "1" });
db.close();
三、总结
Android中的 SQLite 数据库是一款轻量级数据库,适用于中小型的数据库应用,它支持 SQL 语句。在使用 SQLite 数据库时,应该遵循数据库设计的一些基本原则,如遵循约定,不重复,在设计时应该考虑未来的扩展性和变更,保持简单并且易于维护。以上内容只是数据库知识的一个简要介绍,希望能对你有所帮助。