您的位置:首页 > 数据库

如何将SQLite数据库与apk文件一起发布

2014-05-07 22:38 363 查看
可以将XX.db文件复制到Eclipse Android工程中的res\raw目录中,如图1所示。所有在res\raw目录中的文件不会被压缩,这样可以直接提取该目录中的文件。

使用openDatabase方法来打开数据库文件,如果该文件不存在,系统会自动创建/sdcard/dictionary目录,并将res\raw目录中的 XX.db文件复制到/sdcard/dictionary目录中。openDatabase方法的实现代码如下:这里以dictionary.db为例

[java] view
plaincopy

private SQLiteDatabase openDatabase()  

  {  

      try  

      {  

          // 获得dictionary.db文件的绝对路径  

          String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME;  

          File dir = new File(DATABASE_PATH);  

          // 如果/sdcard/dictionary目录中存在,创建这个目录  

          if (!dir.exists())  

              dir.mkdir();  

          // 如果在/sdcard/dictionary目录中不存在  

          // dictionary.db文件,则从res\raw目录中复制这个文件到  

          // SD卡的目录(/sdcard/dictionary)  

          if (!(new File(databaseFilename)).exists())  <
ee6a
/span>

          {  

              // 获得封装dictionary.db文件的InputStream对象  

              InputStream is = getResources().openRawResource(R.raw.dictionary);  

              FileOutputStream fos = new FileOutputStream(databaseFilename);  

              byte[] buffer = new byte[8192];  

              int count = 0;  

              // 开始复制dictionary.db文件  

              while ((count = is.read(buffer)) > 0)  

              {  

                  fos.write(buffer, 0, count);  

              }  

  

              fos.close();  

              is.close();  

          }  

          // 打开/sdcard/dictionary目录中的dictionary.db文件  

          SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(  

                  databaseFilename, null);  

          return database;  

      }  

      catch (Exception e)  

      {  

      }  

      return null;  

  }  

 在openDatabase方法中使用了几个常量,这些常量是在程序的主类(Main)中定义的,代码如下:

[java] view
plaincopy

public class Main extends Activity implements OnClickListener, TextWatcher  

{  

    private final String DATABASE_PATH = android.os.Environment  

            .getExternalStorageDirectory().getAbsolutePath()  

            + "/dictionary";  

    private final String DATABASE_FILENAME = "dictionary.db";  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: