在Android手机应用程序中使用预建数据库

问题描述:

我制作了一个Android应用程序。我正在使用它的数据库。我在手机上安装了.apk文件,并且工作正常。但是当我在模拟器上时,它不显示我在数据库中输入的任何数据。我需要使用先前填充的数据库表。我的数据库不会在运行时创建。如何在手机上获取数据库以查看应用程序与数据库完美匹配?在Android手机应用程序中使用预建数据库

您可以保存assetsres/raw目录下的数据库文件,在应用程序的第一次启动时,该数据库文件复制到/data/data/com.company.yourapp/databases/,并打开数据库像往常一样。

assetsres/raw目录保存文件之间的不同之处在于res/raw下的文件进行压缩,而assets下的文件都没有。在Android 2.3之前,res/raw之下的文件不能超过1 MB。所以我建议你自己压缩你的数据库文件并保存到assets,并在你的代码中使用GZIPInputStream解压文件。

+0

有关如何复制我拥有的数据库文件的任何指南? – 2012-09-07 18:59:10

如果您需要将数据库用于测试应用程序,那么我认为您应该将其导出到您的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: - 应用程序包的名称

的databaseName: - 数据库文件名

pathOfFolder: - 在将文件导出SD卡中的文件夹的路径

不要忘记添加<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>在你的清单文件中。

并下载任何SQLite管理器来打开该文件。

谢谢..希望它可以帮助你。

+0

如果这个答案可以帮助你,那么请不要忘记接受它.. – 2012-03-20 07:26:31