Android初始化本地数据库

来源:互联网 发布:linux 浏览网页 编辑:程序博客网 时间:2024/06/05 00:10

最近遇到一个需求,一个同学不会搭服务器,但是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;     }  

就可以直接查询。

0 0
原创粉丝点击