- 首先,需要创建一个数据库类,并继承自SQLiteOpenHelper类,重写onCreate()和onUpgrade()方法,其中onCreate()方法用于创建数据库和表,onUpgrade()方法用于更新版本时对数据库的操作。
- 在Activity中创建一个DatabaseHelper对象,在onCreate()方法中初始化该对象。
- 在主线程中创建一个Handler,并重写handleMessage()方法,在该方法中进行数据库的操作,如插入数据、获取数据等。
- 在子线程中通过sendMessage()方法将消息发送到主线程的Handler对象中。
- 在主线程中接收消息,并根据消息类型进行相应的数据库操作。
下面是一个示例代码:
DatabaseHelper.java
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "my_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 my_table (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS my_table");
onCreate(db);
}
}
MainActivity.java

public class MainActivity extends AppCompatActivity {
private DatabaseHelper dbHelper;
private Handler handler;
private static final int INSERT_DATA = 1;
private static final int GET_DATA = 2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbHelper = new DatabaseHelper(this);
handler = new Handler() {
@Override
public void handleMessage(@NonNull Message msg) {
switch (msg.what) {
case INSERT_DATA:
String name = (String) msg.obj;
insertData(name);
break;
case GET_DATA:
getData();
break;
}
}
};
new Thread() {
@Override
public void run() {
Message message = Message.obtain();
message.what = INSERT_DATA;
message.obj = "张三";
handler.sendMessage(message);
}
}.start();
}
private void insertData(String name) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", name);
db.insert("my_table", null, values);
db.close();
Message message = Message.obtain();
message.what = GET_DATA;
handler.sendMessage(message);
}
private void getData() {
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.query("my_table", null, null, null, null, null, null);
if (cursor != null) {
while (cursor.moveToNext()) {
String name = cursor.getString(cursor.getColumnIndex("name"));
Log.d("MainActivity", "name: " + name);
}
cursor.close();
}
db.close();
}
}
很抱歉,我不太理解您的问题。请提供更多背景或详细说明,这样我才能更好地回答您的问题。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/159361.html