我有一个包含SQL CREATE TABLE
和INSERT
语句的大文本文件。如何使用SQLiteOpenHelper
onCreate
方法导入此文件?
或者,是否有直接使用二进制数据库文件的方法?
我需要它与Android 1.6兼容。
答案 0 :(得分:6)
我必须解决同样的问题。无法找到直接的方法,因此我将文件放入res / raw目录并使用openRawResource
在其上获取InputStream。然后我读取行,直到一个以;
结束。然后我将语句传递给sqlite数据库。
希望其他人有更好的方式,但我想我会添加我最终做的方式。
答案 1 :(得分:5)
按照Steve Prentice的回答。那是我的实施:
res / raw 中的mydb.sql文件
CREATE TABLE table1(col1 INTEGER PRIMARY KEY, col2 TEXT);
CREATE TABLE table2(col1 INTEGER PRIMARY KEY, col2 TEXT, col3 INTEGER);
MyClass.java
InputStream inputStream = context.getResources().openRawResource(R.raw.mydb);
String queries = "";
try {
queries = IOUtils.toString(inputStream);
} catch (IOException e) {
Util.logException(e);
}
for (String query : queries.split(";")) {
db.execSQL(query);
}
答案 2 :(得分:4)
在SQLiteOpenHelper onCreate()方法中,您只能使用db.execSQL(...)
,但这取决于您的“文本文件”的结构(以及它的大小)。
或者,您可以使用您的应用程序“发送”SQLite数据库 - 请参阅此链接以提供一些想法......
答案 3 :(得分:0)
导入自己的sqlite db文件的问题是,您必须确保您创建的文件的引擎版本与安装db的Android设备上的引擎版本相匹配。通过运行SQL脚本文件,您可以确保使用Android设备上实际安装的引擎创建数据库。