android中在使用sqlite3时怎么判断要打开的数据库是否已经被打开,在打开数据库之前怎样获取到数据库的状

android中在使用sqlite3时怎么判断要打开的数据库是否已经被打开,在打开数据库之前怎样获取到数据库的状,第1张

我之前要将外部的数据库读进来的做法是:

将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 状态的。

另外你报错的详细信息是什么?


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6686314.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存