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

时间:2012-03-20 06:43:03

标签: android database sqlite import

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

2 个答案:

答案 0 :(得分:1)

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

assetsres/raw目录下保存文件的区别在于res/raw下的文件是压缩的,而assets下的文件则不是。 Android 2.3之前res/raw下的文件不能超过1 MB。因此,我建议您自己压缩数据库文件并将其保存到assets,并在代码中使用GZIPInputStream解压缩文件。

答案 1 :(得分:0)

如果您需要数据库外面的应用程序进行测试,那么我认为您应该将其导出到您的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: - 在sdcard中导出文件的文件夹的路径

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

下载任何SQLite Manager以打开该文件。

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