一个程序使用SQlite3数据库,其中有个功能是数据的恢复出厂设置,程序的目录下有个文件夹./dataFile,数据库文件就放在这个文件夹下,
然后在资源文件里有
<file>data/sourceData.db</file>
这个sourceData.db文件是初始数据,然后程序里如果用户选择了恢复出厂设置,就会执行类似下面的代码
QString oldFile = tr("E:/TFH/dataFile/sourceData.db");
QString newFile = tr(":/data/sourceData.db");
QFile fs;
fs.copy(oldFile,newFile); //直接赋值替换掉用户使用的数据库文件
然后问题来了,当用户再次修改数据库文件,数据库直接回复
"attempt to write a readonly database"
这数据库文件里的数据库变只读文件了,然后我试了下,把资源文件里的直接赋值过去,既关闭程序,然后直接把E:/TFH/sourceData.db这个文件赋值替换掉E:/TFH/dataFile/sourceData.db,程序再次运行一切正常,我想问下为什么这个数据库文件放入资源文件后复制下,里面的数据库就变成只读的了?