android sqlite3如何存储以及读取 List<Long>
时间: 2024-02-26 16:59:34 浏览: 195
android通过jxl读excel存入sqlite3数据库
在 Android SQLite3 中存储 `List<Long>` 可以使用 BLOB 类型的列,BLOB 类型可以存储任意二进制数据,包括 `List<Long>`。
以下是一个示例代码,展示如何将 `List<Long>` 存储到 SQLite3 数据库中,并且读取 `List<Long>`:
```java
// 假设你已经创建了一个名为 "mytable" 的表,其中包含一个名为 "mylist" 的 BLOB 类型列
// 存储 List<Long>
List<Long> list = new ArrayList<>();
list.add(1L);
list.add(2L);
list.add(3L);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(bos);
out.writeObject(list);
byte[] bytes = bos.toByteArray();
ContentValues values = new ContentValues();
values.put("mylist", bytes);
long result = db.insert("mytable", null, values);
// 读取 List<Long>
Cursor cursor = db.query("mytable", new String[]{"mylist"}, null, null, null, null, null);
if (cursor.moveToFirst()) {
byte[] bytes = cursor.getBlob(cursor.getColumnIndex("mylist"));
ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
ObjectInputStream in = new ObjectInputStream(bis);
List<Long> resultList = (List<Long>) in.readObject();
// resultList 就是读取到的 List<Long>
}
```
在这个示例中,我们使用了 Java 的对象序列化机制将 `List<Long>` 转换为字节数组,然后将字节数组插入到数据库中。在读取 `List<Long>` 时,我们可以使用类似的方式,将 BLOB 类型的列转换为字节数组,然后再将字节数组转换为 `List<Long>`。注意,读取 `List<Long>` 时应该使用 `getBlob` 方法获取字节数组,而不是 `getInt` 方法。
阅读全文