gpt4 book ai didi

android - sqlite数据库字段如何存储arraylist

转载 作者:行者123 更新时间:2023-11-30 02:53:41 24 4
gpt4 key购买 nike

CREATE TABLE 
hindibible(ID INTEGER PRIMARY KEY AUTOINCREMENT ,
Book INTEGER ,
Chapter INTEGER ,
Version INTEGER ,
TB TEXT ,
NKJ TEXT );

我正在创建 sqlite 表并插入所有值。在上面的sqlite表中如何将NKJ字段数据存储到arraylist中。

最佳答案

我使用这些方法。有几点需要注意:

  1. sqlite 表是特殊的 - 确保您插入的数据适合您要将其发送到的表的列。
  2. insertArrayList 遍历每一行,但在全部完成之前不提交事务。这是为了性能。
  3. rowValues将行数据转换为以逗号分隔的字符串,sql就是这么用的
  4. rowValues 还将单引号替换为两个单引号,sqlite 将其用作转义字符。根据您对数据内容的期望,您可能必须使用其他内容

代码:

private String rowValues(ArrayList<String> rowdata) {
StringBuilder valString = new StringBuilder();
String separator = "";
valString.append("(");
for (String cell : rowdata) {
valString.append(separator + "'" + cell.replace("'", "''") + "'");
separator = ",";
}
valString.append(")");
return valString.toString();
}

public void insertArrayList(SQLiteDatabase db, String Table, ArrayList<ArrayList<String>> tabledata) {
Cursor cols = db.rawQuery("select * from " + Table + " limit 0",null);
db.beginTransaction();
try {
db.execSQL("delete from " + Table);
int Xtra = cols.getColumnCount() - tabledata.get(0).size();
for (ArrayList<String> item : tabledata) {
for (int a=0;a<Xtra;a++) {item.add("");}
db.execSQL("insert into " + Table + " values " + rowValues(item) + ";");
//Log.i("insertArrayList","insert into " + Table + " values " + rowValues(item) + ";");
}
db.setTransactionSuccessful();
} catch (Exception e) {
Log.e("DBWrapper", "insertArrayList error: " + e.getMessage());
} finally {
db.endTransaction();
}
}

关于android - sqlite数据库字段如何存储arraylist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23695077/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com