将db文件放在res的raw路径(可以自己添加这个路径)下面,要打开它的时候这样:
private String filename = DB_PATH+"/"+DB_NAME
DB_PATH我是这样定义的:
public static final String DB_PATH = "/data"+Environment.getDataDirectory().getAbsolutePath()
+"/"+PACKAGE_NAME
DB_NAME肯定就是你数据库的名字啦。
public void open()throws SQLException
{
writefromraw(filename)
db = opendatabase()
}
private void writefromraw(String dbfile) {
// TODO Auto-generated method stub
try {
if (!(new File(dbfile).exists())) {
InputStream is = mContext.getResources().openRawResource(
R.raw.livetv_database)
FileOutputStream fos = new FileOutputStream(dbfile)
byte[] buffer = new byte[BUFFER_SIZE]
int count = 0
while ((count = is.read(buffer)) >0) {
fos.write(buffer, 0, count)
}
fos.close()
is.close()
}
} catch (FileNotFoundException e) {
Log.e("Database", "File not found")
e.printStackTrace()
} catch (IOException e) {
Log.e("Database", "IO exception")
e.printStackTrace()
}
}
下载一个Linux 的sqlite3工具(或到SqLite网站下载sqlite的源代码,在你的系统中编译出sqlite3工具),用这个工具打开:sqlite3 /tmp/test.db
连接失败 SQLiteConnection.Open()这句直接就会抛出异常。
另外可以随时通过 SQLiteConnection 对象的 State 属性来判断数据库连接状态,正常的话应该是 ConnectionState.Open 状态的。
另外你报错的详细信息是什么?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)