Android的SQLite数据库默认是同步读写操作的。这意味着当一个线程正在执行写操作时,其他线程必须等待写操作完成后才能执行读或写操作。
以下是一个使用SQLite数据库的简单示例:
首先,创建一个SQLiteOpenHelper类来管理数据库的创建和版本控制:
public class MyDatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "mydatabase.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) {
db.execSQL("CREATE TABLE contacts (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, phone TEXT);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Handle database upgrade logic here
}
}
然后,在您的Activity或Fragment中使用该SQLiteOpenHelper类:
public class MainActivity extends AppCompatActivity {
private SQLiteDatabase mDatabase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyDatabaseHelper dbHelper = new MyDatabaseHelper(this);
mDatabase = dbHelper.getWritableDatabase();
// Insert a record
ContentValues values = new ContentValues();
values.put("name", "John");
values.put("phone", "1234567890");
mDatabase.insert("contacts", null, values);
// Query the records
Cursor cursor = mDatabase.query("contacts", null, null, null, null, null, null);
while (cursor.moveToNext()) {
String name = cursor.getString(cursor.getColumnIndex("name"));
String phone = cursor.getString(cursor.getColumnIndex("phone"));
Log.d("MainActivity", "Name: " + name + ", Phone: " + phone);
}
cursor.close();
}
@Override
protected void onDestroy() {
super.onDestroy();
mDatabase.close();
}
}
在上面的示例中,我们使用MyDatabaseHelper类创建了一个SQLite数据库,并获取了一个可写的数据库实例。然后我们插入了一条记录,并查询了所有记录。请注意,在每次读写操作之后,我们都应该关闭数据库以释放资源。
请注意,如果您在多个线程中同时访问数据库,您可能需要使用适当的同步机制来确保数据的一致性和安全性。