Android對SQLite批量新增資料

2021-07-03 14:03:23 字數 1505 閱讀 9405

[+]

有人去面試的時候面試官問這麼乙個問題。

如何將大量的資料同時插入到sqlite?或者說批量資料插入資料庫?

本人總結了一下幾種方法,重點注意後面那一點

1. 使用contentvalues插入

db.begintransaction(); // 手動設定開始事務

for (contentvalues v : list)

db.settransactionsuccessful(); // 設定事務處理成功,不設定會自動回滾不提交

db.endtransaction(); // 處理完成

db.close();

這裡是把要插入的資料封裝到contentvalues類中,然後呼叫db.isert()方法執行插入

2. 使用db.execsql(sql)

這裡是把要插入的資料拼接成可執行的sql語句,然後呼叫db.execsql(sql)方法執行插入

public void inertorupdatedatebatch(listsqls)

// 設定事務標誌為成功,當結束事務時就會提交事務

db.settransactionsuccessful();

} catch (exception e) finally

} 3. 使用inserthelper類

inserthelper ih = new inserthelper(db, "bus_line_station");

db.begintransaction();

final int directcolumnindex = ih.getcolumnindex("direct");

final int linenamecolumnindex = ih.getcolumnindex("line_name");

final int snocolumnindex = ih.getcolumnindex("sno");

final int stationnamecolumnindex = ih.getcolumnindex("station_name");

try

db.settransactionsuccessful();

} finally

4. 使用sqlitestatement插入 這種效率高 速度快 也是面試官考你的重點就是這個

string sql = "insert into bus_line_station(direct,line_name,sno,station_name) values(?,?,?,?)";

sqlitestatement stat = db.compilestatement(sql);

db.begintransaction();

for (station line : buslines)

db.settransactionsuccessful();

db.endtransaction();

db.close();

Android中對SQLite的操作

1.總論 通常自定義類,並繼承自sqliteopenhelper,在預設的建構函式中,會呼叫父類的建構函式。只需將資料庫名傳入即可。super context,database name,null,database version 2.建立表 首先,獲取乙個可寫的資料庫物件 database thi...

Android 關於SQLite事務

應用程式初始化有可能需要批量的向 sqlite 中插入大量資料,單獨的使用 迴圈插入的 方法會導致應用響應緩慢,因為 sqlite 插入資料的時候預設一條語句就是乙個事務,有多少條資料就有多少次磁碟操作。我的應用初始 5000 條記錄也就是要 5000 次讀寫磁碟操作。那我們就可以新增事務處理,把 ...

android 資料儲存SQLite

sqlite是一種輕量級的關係型資料庫,它的運算速度非常的快,占用資源很少,特別適合在移動裝置上使用 建立資料庫 下面我們建立乙個名為book和category的資料庫 建立mydatabasehelper類繼承自sqliteopenhelper類 如下 public class mydatabas...