程序开始的时候要创建一个数据库,然后还要建立表,表里面插入几条内容.
我看网上的例子都是写一个类,然后把数据库名字和表名字写在里面,然后每次new的时候都会创建.这样合理吗?能不能把创建数据库和表名的逻辑写另外一个单独的函数里面啊? 然后每次启动的时候就先检查数据库是否存在,表是否存在,不行就创建?
还有能把apk里面自带的数据库拷贝到手机的数据库目录吗?这样我觉得就省事了.但是网上找不到怎么拷贝的方法...
我看网上的例子都是写一个类,然后把数据库名字和表名字写在里面,然后每次new的时候都会创建.这样合理吗?能不能把创建数据库和表名的逻辑写另外一个单独的函数里面啊? 然后每次启动的时候就先检查数据库是否存在,表是否存在,不行就创建?
还有能把apk里面自带的数据库拷贝到手机的数据库目录吗?这样我觉得就省事了.但是网上找不到怎么拷贝的方法...
db写入你的文件的方法
private void dbImport()
{
try
{
File dir = new File(DATABASE_PATH);
// 如果/sdcard/testdb目录中存在,创建这个目录
if (!dir.exists())
dir.mkdir();
// 如果在/sdcard/testdb目录中不存在
// test.db文件,则从asset\db目录中复制这个文件到
// SD卡的目录(/sdcard/testdb)
if (!(new File(databaseFilename2)).exists())
{
// File f = (new File(databaseFilename2));
// f.delete();
// 获得封装testDatabase.db文件的InputStream对象
AssetManager asset = getAssets();
InputStream is = asset.open("db/eneverydaymyword.db");
FileOutputStream fos = new FileOutputStream(databaseFilename2);
byte[] buffer = new byte[1048576];
int count = 0;
// 开始复制testDatabase.db文件
while ((count = is.read(buffer)) > 0)
{
fos.write(buffer, 0, count);
}
fos.close();
is.close();
// asset.close();
}
}
catch (Exception e)
{
e.printStackTrace();
}
// deleteDatabase("testDatabase.db");//删除数据库
}
我记得是可以拷贝到自己的包里去,如果不行也可以写入sd卡。
我试着拷贝一个数据库文件到程序的databases目录 发现我调用sqlHelper的时候 还是会触发oncreate方法
如何能给数据库加版本号呢....