最近遇到一个需求,一个同学不会搭服务器,但是Android课程设计需要用到很多数据,这样就出现了一个问题,一个内容型的APP,怎么初始化数据库呢?
很容易想到俩种方案,一个是在App中写一个录入内容的页面,用手动的方式录入数据;另一个是在外部建立一个数据库,用数据库工具录入;第一种方案太慢,太麻烦,手动的录入简直就能把人折磨死,所以最后采用了外部建库的方式,用navicate for sqlite 很容易建立了一个数据库

得到了mydb.db数据库,那么怎么导入到Android App中尼,用下面的方案:
1.将mydb.db 放到raw文件夹下
2.编写将mydb.db 复制到sd卡中的工具类并获得SQLiteDatabase 的工具类

public class DBUtil {      private static SQLiteDatabase database;      public static final String DATABASE_FILENAME = "myb.db";      public static final String PACKAGE_NAME = "com.mobilexu.test";      public static final String DATABASE_PATH = "/data" + Environment.getDataDirectory().getAbsolutePath() + "/" + PACKAGE_NAME;      public static SQLiteDatabase openDatabase(Context context) {          try {              String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME;              File dir = new File(DATABASE_PATH);              if (!dir.exists()) {                  dir.mkdir();              }              if (!(new File(databaseFilename)).exists()) {                  InputStream is = context.getResources().openRawResource(R.raw.mydb);                  FileOutputStream fos = new FileOutputStream(databaseFilename);                  byte[] buffer = new byte[8192];                  int count = 0;                  while ((count = is.read(buffer)) > 0) {                      fos.write(buffer, 0, count);                  }                  fos.close();                  is.close();              }              database = SQLiteDatabase.openOrCreateDatabase(databaseFilename, null);              return database;          } catch (Exception e) {              e.printStackTrace();          }          return null;      }  } 

3.在数据中查询的时候:直接用工具类获得SQLiteDatabase来查询

public static List<Season> findAllSeason(Context context) {         List<Season> seasons = new ArrayList<Season>();        SQLiteDatabase myDateBase = DBUtil.openDatabase(context);        String sql = "select * from Season";        try {             Cursor c = myDateBase.rawQuery(sql, null);            c.moveToFirst();            while (!c.isAfterLast()) {                 Season season = new Season();                season.setId(c.getInt(c.getColumnIndex("id")));                season.setName(c.getString(c.getColumnIndex("name")));                seasons.add(season);                c.moveToNext();            }             if (!c.isClosed()) {                 c.close();            }             if (myDateBase.isOpen()) {                 myDateBase.close();            }         } catch (Exception e) {             e.printStackTrace();        }         return seasons;    }  

就可以直接查询。

更多相关文章

  1. 1.Android查看手机内部储存目录及数据库文件之通过模拟器Monitor
  2. iOS自动化测试(一)-技术方案、环境配置与疯狂踩坑
  3. 【android】个人推崇的数据库升级方式
  4. Android(安卓)sdk content loader 0%的解决方案
  5. Android(安卓)Studio导入项目gradle报错,解决方案
  6. Android(安卓)Studio打不开,无法启动,无反应的解决方案
  7. Android实现一个简单的SQLite数据库的增删改查
  8. Android(安卓)Studio JNI javah遇到的问题
  9. 天天记录 - 双休安装双系统并搭建环境的悲惨遭遇

随机推荐

  1. 禁止横屏和竖屏切换,竖屏后横屏防止再次
  2. [置顶] Android的导航抽屉---Navigation
  3. Android也架构之四:门面模式解析获取的htm
  4. Android(安卓)HttpClient && HttpPost简
  5. Android通过反射EthernetManager Api设置
  6. android 导入项目gradle(无法下载/下载慢/
  7. 【android】手写一套Java的Handler程序,深
  8. Android应用的uid和pid
  9. Android(安卓)官方博客 - Android应用程
  10. Android进程和应用生命周期