如何将 arrarylist 值存储到 sqlitedb 中?

Posted

技术标签:

【中文标题】如何将 arrarylist 值存储到 sqlitedb 中?【英文标题】:How to store the arrarylist values into sqlitedb? 【发布时间】:2016-01-13 09:40:15 【问题描述】:

我已经将手机中的所有数字存储到一个数组列表中,现在我需要将所有这些数字存储到 sqlitedb 中,以便我可以轻松地将它们转换为 excel 表。

列表列表 = new ArrayList();

字符串编号 = cur.getString(cur.getColumnIndex(CommonDataKinds.Phone.NUMBER)); list.add(number);

【问题讨论】:

***.com/questions/1243181/… 【参考方案1】:

试试这个方法获取店铺电话号码

public static void storeInDB(ArrayList longs) 抛出 IOException, SQLException

ByteArrayOutputStream bout = new ByteArrayOutputStream();
DataOutputStream dout = new DataOutputStream(bout);
for (long l : longs) 
    dout.writeLong(l);

dout.close();
byte[] asBytes = bout.toByteArray();

PreparedStatement stmt = null;  // however you get this...
stmt.setBytes(1, asBytes);
stmt.executeUpdate();
stmt.close();

public static ArrayList readFromDB() 抛出 IOException, SQLException

ArrayList<Long> longs = new ArrayList<Long>();
ResultSet rs = null;  // however you get this...
while (rs.next()) 
    byte[] asBytes = rs.getBytes("myLongs");
    ByteArrayInputStream bin = new ByteArrayInputStream(asBytes);
    DataInputStream din = new DataInputStream(bin);
    for (int i = 0; i < asBytes.length/8; i++) 
        longs.add(din.readLong());
    
    return longs;

【讨论】:

【参考方案2】:

您将使用 ContentValues 对象来保存值,并调用 SQLiteDatabase 对象的插入方法。例如

  database = SQLiteOpenHelper.getWritableDatabase();
  ContentValues values = new ContentValues();
  for(int i = 0; i < list.size(); i++)
  
     values.put(CommonDataKinds.Phone.NUMBER, list.get(i);
     database.insert(TABLE_NAME, null, values);
  

基本上我所做的是 1) 获取对数据库对象的可写引用; 2) 创建一个 contentValues 对象,该对象将被传递到可写数据库的 insert 方法中; 3) 遍历列表,并将列表中的每个元素添加到 contentValues 对象(每次迭代都添加到数据库中)。希望这对一些人有所帮助!我建议在 youtube 上查看 slidenerd 的关于 android 中的 SQLiteDataBases 的视频

【讨论】:

以上是关于如何将 arrarylist 值存储到 sqlitedb 中?的主要内容,如果未能解决你的问题,请参考以下文章

ArraryList方法

java中Vector,ArraryList和LinkedList的区别

JAVA热点基础大盘点<深入解析ArraryList>

JAVA热点基础大盘点<深入解析ArraryList>

安卓应用版本升级时sqlit数据库升级

JDK源码阅读:ArraryList源码解析