bool DataBaseUtil::OpenDataBase(const char *DataBaseName)
{
if (m_pDataBase!=NULL)
{
return true;
}
string path;
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
path=DataBaseName;
//path=CCFileUtils::sharedFileUtils()->getWritablePath()+DataBaseName; //暂时注释
#else
path=DataBaseName;
#endif
CCLog("%s",path.c_str());
int res=sqlite3_open(path.c_str(),&m_pDataBase);
if (res!=SQLITE_OK)
{
CCLog(“打开数据库失败,错误码:%d”,res);
return false;
}
return true;
}
以上是我打开数据库的代码。
我再说一下我的设置情况。
我先准备了一个数据库,放到assets文件夹下。
按理说,如果要读取assets下的文件,是不需要加CCFileUtils::sharedFileUtils()->getWritablePath()的,直接写文件名就可以了。
我一开始也的确是只写文件名。
然后就发现,读取数据库失败。
CCLog打印的数据库地址是文件名,然后有错误代码14,也就是说res!=SQLITE_OK。
然后我在文件名前加上CCFileUtils::sharedFileUtils()->getWritablePath(),再执行。
CCLog打印的数据库地址是/data/data/包名/files/数据库文件名
但并没有打印错误代码,也就是说res==SQLITE_OK,但这种情况应该是由于该路径下没有该文件,所以自动创建了新的文件。
请教如何在安卓平台读取一个已经准备好了的数据库?
我把数据库放在assets下是不是不对的选择?因为assets是个只读文件夹。
如果不能放在assets下,那我要怎么把我的数据库放到可写路径下?