读书人

安卓创建数据库有关问题

发布时间: 2013-06-19 10:26:41 作者: rapoo

安卓创建数据库问题
程序开始的时候要创建一个数据库,然后还要建立表,表里面插入几条内容.
我看网上的例子都是写一个类,然后把数据库名字和表名字写在里面,然后每次new的时候都会创建.这样合理吗?能不能把创建数据库和表名的逻辑写另外一个单独的函数里面啊? 然后每次启动的时候就先检查数据库是否存在,表是否存在,不行就创建?


还有能把apk里面自带的数据库拷贝到手机的数据库目录吗?这样我觉得就省事了.但是网上找不到怎么拷贝的方法...
[解决办法]

引用:
另外我要建立两个表,两个表还有关联,如果每个表建立一个类,在类里面创建表的话,怎么把他们关联上啊...
小弟对数据库比较菜,希望高手多多帮助.谢谢了.
表的关联和类创建的类没有关系的,是表里点的列名有关,

比如有两个表:
表一包含:名字,学号,身高,性别,年龄;
表二包括:学号,成绩;

则,这两个表就可以通过学号连接起来;
[解决办法]
可以拷贝到data/data/...../databases/,你在adb shell下面看一下文件有没有过去
[解决办法]
引用:
Quote: 引用:

推荐你还是把db文件写在assets里面,然后写入手机里。
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");//删除数据库
}




请问我要是想把assert里面的数据库拷贝到我这个应用的那个目录 就是 data/data/...../databases/ 这个目录好像有权限 没法看见 拷贝的过去吗?

我记得是可以拷贝到自己的包里去,如果不行也可以写入sd卡。

读书人网 >Android

热点推荐