在android手机的应用程序中使用预先构建的数据库
我制作了一个android应用程序。我在里面使用数据库。我已经在手机上安装了.apk文件,它工作正常。但它并没有显示我在emulator上时在数据库中输入的任何数据。我需要使用以前填充的数据库表。我的数据库不在运行时创建。我如何才能让手机上的数据库看到应用程序与数据库完美运行?你可以将数据库文件保存在在android手机的应用程序中使用预先构建的数据库,android,database,sqlite,import,Android,Database,Sqlite,Import,我制作了一个android应用程序。我在里面使用数据库。我已经在手机上安装了.apk文件,它工作正常。但它并没有显示我在emulator上时在数据库中输入的任何数据。我需要使用以前填充的数据库表。我的数据库不在运行时创建。我如何才能让手机上的数据库看到应用程序与数据库完美运行?你可以将数据库文件保存在资产或res/raw目录下,在应用程序第一次启动时,将该数据库文件复制到/data/data/com.company.yourap/databases/,然后像往常一样打开数据库 将文件保存在ass
资产
或res/raw
目录下,在应用程序第一次启动时,将该数据库文件复制到/data/data/com.company.yourap/databases/
,然后像往常一样打开数据库
将文件保存在
assets
和res/raw
目录下的区别在于res/raw
下的文件被压缩,而assets
下的文件不被压缩。在Android 2.3之前,res/raw
下的文件不能超过1MB。因此,我建议您自己压缩数据库文件,并将其保存到资产
,然后在代码中使用gzip输入流
解压文件。如果您需要将数据库放在应用程序之外进行测试,那么我认为您应该将其导出到SD卡中
public static void exportfile(String applicationPackageName,String databaseName,String pathOfFolder) throws FileNotFoundException, IOException
{
InputStream myInput;
myInput = new FileInputStream("/data/data/"+applicationPackageName+"/databases/"+databaseName);
File directory = new File("/sdcard"+pathOfFolder);
if (!directory.exists())
{
directory.mkdirs();
}
OutputStream myOutput = new FileOutputStream(directory.getPath()+"/"+databaseName);
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer))>0)
{
myOutput.write(buffer, 0, length);
}
myOutput.flush();
myOutput.close();
myInput.close();
}
applicationPackageName:-应用程序包名称
数据库名称:-数据库文件名
PathFolder:-要在SD卡中导出文件的文件夹路径
不要忘记在清单文件中添加
并下载任何SQLite管理器以打开该文件
谢谢。。希望对您有所帮助。有关于如何复制现有数据库文件的指南吗?