openOrCreateDatabase()函数时 出现Failed to open the database错误

本文讨论了在Service中使用SQLiteDatabase.openOrCreateDatabase()函数时遇到的Failed to open the database错误,并提供了修改代码路径的方法来解决此问题。通过在调用前创建必要的文件夹,数据库成功被创建并打开。

在使用SQLiteDatabase.openOrCreateDatabase()函数时 出现Failed to open the database错误,致使数据库打不开。

Filef=context.getDatabasePath("downlog.db");
db=SQLiteDatabase.openOrCreateDatabase(FullPath,null);


怀疑是不是因为data/data/xx/databases文件夹不存在所以创建不了数据库,

 

 

修改后的代码

File f=context.getDatabasePath("downlog.db").getParentFile();
              if(f.exists()==false)f.mkdirs();//注意是mkdirs()有个s 这样可以创建多重目录。
              FullPath=f.getPath()+"/downlog.db";
db=SQLiteDatabase.openOrCreateDatabase(FullPath,null);


数据库可以正确创建了,这个问题解决了。

 

不过总觉得有点蹊跷,为什么openOrCreateDatabase(FullPath,null);不会自己创建文件夹呢……

函数不是在activity中使用的,是在service中调用DBHelper类,DBHelper的构造函数中调用的。不知道是不是这个原因。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rainfall007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值