更新 DBManager 类:
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
public class DBManager {
private DBHelper dbHelper;
private SQLiteDatabase database;
public DBManager(Context context) {
dbHelper = new DBHelper(context);
}
public void open() throws SQLException {
database = dbHelper.getWritableDatabase();
}
public void close() {
dbHelper.close();
}
public long insertUser(String username, int age) {
ContentValues values = new ContentValues();
values.put(DBHelper.COLUMN_USERNAME, username);
values.put(DBHelper.COLUMN_AGE, age);
return database.insert(DBHelper.TABLE_NAME, null, values);
}
public Cursor getAllUsers() {
String[] columns = {DBHelper.COLUMN_ID, DBHelper.COLUMN_USERNAME, DBHelper.COLUMN_AGE};
return database.query(DBHelper.TABLE_NAME, columns, null, null, null, null, null);
}
public Cursor getUserById(long userId) {
String[] columns = {DBHelper.COLUMN_ID, DBHelper.COLUMN_USERNAME, DBHelper.COLUMN_AGE};
String selection = DBHelper.COLUMN_ID + " = ?";
String[] selectionArgs = {String.valueOf(userId)};
return database.query(DBHelper.TABLE_NAME, columns, selection, selectionArgs, null, null, null);
}
public int updateUser(long userId, String newUsername, int newAge) {
ContentValues values = new ContentValues();
values.put(DBHelper.COLUMN_USERNAME, newUsername);
values.put(DBHelper.COLUMN_AGE, newAge);
String whereClause = DBHelper.COLUMN_ID + " = ?";
String[] whereArgs = {String.valueOf(userId)};
return database.update(DBHelper.TABLE_NAME, values, whereClause, whereArgs);
}
public int deleteUser(long userId) {
String whereClause = DBHelper.COLUMN_ID + " = ?";
String[] whereArgs = {String.valueOf(userId)};
return database.delete(DBHelper.TABLE_NAME, whereClause, whereArgs);
}
}
在这个扩展的例子中,我们添加了几个新的方法:
- getUserById: 通过用户 ID 查询单个用户的数据。
- updateUser: 更新用户数据。
- deleteUser: 删除用户数据。
在 Activity 中使用:
import android.database.Cursor;
import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private DBManager dbManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbManager = new DBManager(this);
try {
dbManager.open();
// 插入用户数据
long userId1 = dbManager.insertUser("Alice", 25);
long userId2 = dbManager.insertUser("Bob", 30);
// 获取所有用户数据
Cursor allUsersCursor = dbManager.getAllUsers();
displayUserData("All Users:", allUsersCursor);
// 获取单个用户数据
Cursor userByIdCursor = dbManager.getUserById(userId1);
displayUserData("User by ID:", userByIdCursor);
// 更新用户数据
dbManager.updateUser(userId1, "Updated Alice", 26);
// 获取更新后的用户数据
Cursor updatedUserCursor = dbManager.getUserById(userId1);
displayUserData("Updated User:", updatedUserCursor);
// 删除用户数据
dbManager.deleteUser(userId2);
// 获取删除后的用户数据
Cursor usersAfterDeleteCursor = dbManager.getAllUsers();
displayUserData("Users after Delete:", usersAfterDeleteCursor);
} catch (Exception e) {
e.printStackTrace();
} finally {
dbManager.close();
}
}
private void displayUserData(String title, Cursor cursor) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(title).append("\n");
while (cursor.moveToNext()) {
int id = cursor.getInt(cursor.getColumnIndex(DBHelper.COLUMN_ID));
String username = cursor.getString(cursor.getColumnIndex(DBHelper.COLUMN_USERNAME));
int age = cursor.getInt(cursor.getColumnIndex(DBHelper.COLUMN_AGE));
stringBuilder.append("ID: ").append(id).append(", ")
.append("Username: ").append(username).append(", ")
.append("Age: ").append(age).append("\n");
}
TextView textView = findViewById(R.id.textView);
textView.append(stringBuilder.toString());
}
}
在这个例子中,我们打开了数据库连接,并执行了插入、查询、更新和删除操作,最后关闭了数据库连接。请注意,由于数据库操作可能会涉及到 I/O 操作,因此最好在后台线程执行,以避免阻塞主线程。这里为了简洁性,仍然在主线程执行。在实际应用中,你可能需要使用异步任务或其他机制来执行数据库操作。
转载请注明出处:http://www.pingtaimeng.com/article/detail/15190/Android