鸿蒙开发SQLite数据库时如何差查一个数据,在text组件中显示一个数据,且上一个不会被覆盖。也给出不被覆盖代码
时间: 2024-05-10 07:15:20 浏览: 150
要在鸿蒙应用中使用SQLite数据库,需要先创建一个数据库和表,并向表中插入一些数据。以下是一个示例代码用于创建数据库和表,并插入一些数据:
```java
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) {
String sql = "CREATE TABLE IF NOT EXISTS example_table (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)";
db.execSQL(sql);
ContentValues values = new ContentValues();
values.put("name", "张三");
values.put("age", 20);
db.insert("example_table", null, values);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 数据库升级操作
}
}
```
要查询数据库中的数据,在text组件中显示,可以使用以下代码:
```java
public class MainPageAbilitySlice extends AbilitySlice {
private Text text;
@Override
public void onStart(Intent intent) {
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_ability_main);
text = (Text) findComponentById(ResourceTable.Id_text);
DatabaseHelper dbHelper = new DatabaseHelper(this);
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.query("example_table", new String[]{"name", "age"}, null, null, null, null, null);
StringBuilder stringBuilder = new StringBuilder();
while (cursor.moveToNext()) {
String name = cursor.getString(cursor.getColumnIndex("name"));
int age = cursor.getInt(cursor.getColumnIndex("age"));
stringBuilder.append("姓名:" + name + ",年龄:" + age + "\n");
}
cursor.close();
db.close();
text.setText(stringBuilder.toString());
}
}
```
以上代码中,我们先创建了一个DatabaseHelper对象,并获取可读的数据库对象。然后使用query方法查询example_table表中的数据,并使用StringBuilder将查询结果拼接为一个字符串。最后将拼接好的字符串设置到text组件中。
为了不覆盖上一个结果,可以在拼接查询结果时,将之前查询的结果也一并放入StringBuilder中,如下:
```java
public class MainPageAbilitySlice extends AbilitySlice {
private Text text;
@Override
public void onStart(Intent intent) {
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_ability_main);
text = (Text) findComponentById(ResourceTable.Id_text);
DatabaseHelper dbHelper = new DatabaseHelper(this);
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.query("example_table", new String[]{"name", "age"}, null, null, null, null, null);
StringBuilder stringBuilder = new StringBuilder(text.getText());
while (cursor.moveToNext()) {
String name = cursor.getString(cursor.getColumnIndex("name"));
int age = cursor.getInt(cursor.getColumnIndex("age"));
stringBuilder.append("姓名:" + name + ",年龄:" + age + "\n");
}
cursor.close();
db.close();
text.setText(stringBuilder.toString());
}
}
```
以上代码中,我们先将text组件中原来的文本内容获取到,并放入StringBuilder中。然后再拼接查询结果,最后将拼接好的字符串设置到text组件中。这样,每次查询的结果就会追加到text组件的末尾,不会覆盖之前的结果。
阅读全文