zoukankan      html  css  js  c++  java
  • 安卓使用自己导入的db3数据库文件

    一、使用raw文件夹下的数据库【自己导入的】

    1.新建raw文件夹

     

     res鼠标右键->new->Android Resource Directory->下拉选择raw.

    复制db3或者db数据库文件进去

    2.然后写,读写代码:

     1 package com.example.wxy.kcsj2;
     2 
     3 import android.content.Context;
     4 import android.database.sqlite.SQLiteDatabase;
     5 import android.os.Environment;
     6 import android.util.Log;
     7 
     8 import java.io.File;
     9 import java.io.FileNotFoundException;
    10 import java.io.FileOutputStream;
    11 import java.io.IOException;
    12 import java.io.InputStream;
    13 
    14 public class DataBaseHelper {
    15     private final int BUFFER_SIZE = 400000;
    16     public static final String DB_NAME = "student.db3"; // 保存的数据库文件名
    17     public static final String PACKAGE_NAME = "com.example.wxy.kcsj2";// 应用的包名
    18     public static final String DB_PATH = "/data" + Environment.getDataDirectory().getAbsolutePath() + "/"
    19             + PACKAGE_NAME + "/databases/"; // 在手机里存放数据库的位置
    20     //sdcard的路径(在android 4.4中不好使,文件成功创建是在手机的)
    21     //public static final String DB_PATH = Environment.getExternalStorageDirectory().getAbsolutePath()+"/student";
    22     private SQLiteDatabase database;
    23     private Context context;
    24 
    25     public SQLiteDatabase getDatabase() {
    26         return database;
    27     }
    28 
    29     public void setDatabase(SQLiteDatabase database) {
    30         this.database = database;
    31     }
    32 
    33     public DataBaseHelper(Context context) {
    34         this.context = context;
    35     }
    36 
    37     public void openDatabase() {
    38         System.out.println(DB_PATH + "/" + DB_NAME);
    39         System.out.println("打开数据库");
    40         this.database = this.openDatabase(DB_PATH + "/" + DB_NAME);
    41     }
    42 
    43     public SQLiteDatabase openDatabase(String dbfile) {
    44         try {
    45             File myDataPath = new File(DB_PATH);
    46             if (!myDataPath.exists()) {
    47                 myDataPath.mkdirs();// 如果没有这个目录,则创建
    48                 System.out.println("目录,创建");
    49             }
    50             dbfile = myDataPath + "/" + DB_NAME;
    51             if (!(new File(dbfile).exists())) {// 判断数据库文件是否存在,若不存在则执行导入,否则直接打开数据库
    52                 InputStream is = context.getResources().openRawResource(R.raw.student); // 欲导入的数据库
    53                 FileOutputStream fos = new FileOutputStream(dbfile);
    54                 byte[] buffer = new byte[BUFFER_SIZE];
    55                 int count = 0;
    56                 while ((count = is.read(buffer)) > 0) {
    57                     fos.write(buffer, 0, count);
    58                 }
    59                 fos.close();
    60                 is.close();
    61             }
    62             SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile,
    63                     null);
    64             return db;
    65         } catch (FileNotFoundException e) {
    66             Log.e("Database", "File not found");
    67             System.out.println("文件啊没找到");
    68             e.printStackTrace();
    69         } catch (IOException e) {
    70             Log.e("Database", "IO exception");
    71             System.out.println("io输入输出错误");
    72             e.printStackTrace();
    73         }
    74         return null;
    75     }
    76 
    77     public void closeDatabase() {
    78         this.database.close();
    79         System.out.println("关闭数据库");
    80     }
    81 }
    DataBaseHelper

    参考很多前辈的代码,但是,忘记链接了就没写,多谢这些前辈了

    然后就是,复制DataBaseHelper.java,里面的包名数据库名需要修改成你自己的。

    然后再MainActivity类加

      private DataBaseHelper dataBaseHelper;

    在onCreate方法加

      sqLiteDBOperator = new SQLiteDBOperator(this);
      dataBaseHelper = new DataBaseHelper(this);

      dataBaseHelper.openDatabase();

    然后【如果你没有使用数据库操作类就免了这一步】

    SQLiteDBOperator.java数据库操作类添加打开数据库的语句:

      private DataBaseHelper dataBaseHelper;
      public SQLiteDBOperator(Context context) {
       //数据库名
       dataBaseHelper = new DataBaseHelper(context);
       db = SQLiteDatabase.openOrCreateDatabase(DataBaseHelper.DB_PATH + "/" + DataBaseHelper.DB_NAME, null);
       System.out.print("打开数据库" + DataBaseHelper.DB_PATH + DataBaseHelper.DB_NAME);}

    检查一下设备管理器的项目文件夹有没有生成数据库文件,再看一下db3的大小对不对的上。

    文件位置,data/data/包名/database/你的数据库名字

    基本就好了。

    2020/5/24


     

  • 相关阅读:
    ....
    CodeForces 375A(同余)
    POJ 2377 Bad Cowtractors (最小生成树)
    POJ 1258 AgriNet (最小生成树)
    HDU 1016 Prime Ring Problem(全排列)
    HDU 4460 Friend Chains(bfs)
    POJ 2236 Wireless Network(并查集)
    POJ 2100 Graveyard Design(尺取)
    POJ 2110 Mountain Walking(二分/bfs)
    CodeForces 1059B Forgery(模拟)
  • 原文地址:https://www.cnblogs.com/jiuzhen/p/12953159.html
Copyright © 2011-2022 走看看