使用SQLite数据库是Android应用中常见的数据存储方法,适用于需要存储大量结构化数据的场景。下面是如何在Android应用中使用SQLite数据库的基本步骤:
步骤 1: 创建 SQLiteOpenHelper 类
首先,你需要创建一个继承自 SQLiteOpenHelper
的类。这个类将帮助你管理数据库的创建和版本管理。
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "example.db";
private static final int DATABASE_VERSION = 1;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// 创建表
db.execSQL(
"CREATE TABLE IF NOT EXISTS contacts (" +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"name TEXT, " +
"phone TEXT, " +
"email TEXT)"
);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 在这里处理数据库的版本更新
if (oldVersion < 2) {
// db.execSQL("ALTER TABLE contacts ADD COLUMN new_column TEXT");
}
}
}
步骤 2: 使用数据库
你可以在Activity或其他组件中实例化你的 DatabaseHelper
并使用它来执行数据库操作。
public class MainActivity extends AppCompatActivity {
private DatabaseHelper dbHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbHelper = new DatabaseHelper(this);
insertContact("John Doe", "123456789", "john@example.com");
queryContacts();
}
private void insertContact(String name, String phone, String email) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", name);
values.put("phone", phone);
values.put("email", email);
db.insert("contacts", null, values);
}
private void queryContacts() {
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.query("contacts", new String[] {"id", "name", "phone", "email"}, null, null, null, null, null);
while (cursor.moveToNext()) {
int id = cursor.getInt(cursor.getColumnIndex("id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
String phone = cursor.getString(cursor.getColumnIndex("phone"));
String email = cursor.getString(cursor.getColumnIndex("email"));
// 使用数据
Log.d("Database", "Contact: " + id + ", " + name + ", " + phone + ", " + email);
}
cursor.close();
}
}
步骤 3: 管理数据库连接
确保在不需要时关闭数据库连接。你可以在Activity的 onDestroy()
方法中关闭数据库帮助器。
@Override
protected void onDestroy() {
dbHelper.close();
super.onDestroy();
}
注意事项
- 线程安全:数据库操作可能是耗时的,应避免在主线程上执行复杂的查询或长时间的数据库操作。考虑使用
AsyncTask
或者Loader
来在后台线程处理数据库操作。 - 数据迁移:当应用升级并且数据库结构发生变化时,需要在
onUpgrade()
方法中处理数据迁移。 - 安全性:确保对输入进行验证。