加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

将自己的SQLite数据库添加到Android应用程序

发布时间:2020-12-12 19:04:51 所属栏目:百科 来源:网络整理
导读:我们如何将自己的SQLite数据库添加到 android项目? 尝试这段代码: public class DataBaseHelper extends SQLiteOpenHelper { private Context mycontext; //private String DB_PATH = mycontext.getApplicationContext().getPackageName()+"/databases/";
我们如何将自己的SQLite数据库添加到 android项目? 尝试这段代码:
public class DataBaseHelper extends SQLiteOpenHelper {
     private Context mycontext;

     //private String DB_PATH = mycontext.getApplicationContext().getPackageName()+"/databases/";
     private static String DB_NAME = "(datbasename).sqlite"; //the extension may be .sqlite or .db
     public SQLiteDatabase myDataBase;
     /*private String DB_PATH = "/data/data/"
                             + mycontext.getApplicationContext().getPackageName()
                             + "/databases/";*/

     public DataBaseHelper(Context context) throws IOException {
         super(context,DB_NAME,null,1);
         this.mycontext = context;
         boolean dbexist = checkdatabase();
         if (dbexist) {
             //System.out.println("Database exists");
             opendatabase();
         } else {
             System.out.println("Database doesn't exist");
             createdatabase();
         }

     }

     public void createdatabase() throws IOException {
         boolean dbexist = checkdatabase();
         if (dbexist) {
             //System.out.println(" Database exists.");
         } else {
             this.getReadableDatabase();
             try {
                 copydatabase();
             } catch (IOException e) {
                 throw new Error("Error copying database");
             }
         }
     }
     private boolean checkdatabase() {
         //SQLiteDatabase checkdb = null;
         boolean checkdb = false;
         try {
             String myPath = DB_PATH + DB_NAME;
             File dbfile = new File(myPath);
             //checkdb = SQLiteDatabase.openDatabase(myPath,SQLiteDatabase.OPEN_READWRITE);
             checkdb = dbfile.exists();
         } catch (SQLiteException e) {
             System.out.println("Database doesn't exist");
         }

         return checkdb;
     }
     private void copydatabase() throws IOException {

         //Open your local db as the input stream
         InputStream myinput = mycontext.getAssets().open(DB_NAME);

         // Path to the just created empty db
         String outfilename = DB_PATH + DB_NAME;

         //Open the empty db as the output stream
         OutputStream myoutput = new FileOutputStream("/data/data/(packagename)/databases/(datbasename).sqlite");

         // transfer byte to inputfile to outputfile
         byte[] buffer = new byte[1024];
         int length;
         while ((length = myinput.read(buffer)) > 0) {
             myoutput.write(buffer,length);
         }

         //Close the streams
         myoutput.flush();
         myoutput.close();
         myinput.close();

     }

     public void opendatabase() throws SQLException {
         //Open the database
         String mypath = DB_PATH + DB_NAME;
         myDataBase = SQLiteDatabase.openDatabase(mypath,SQLiteDatabase.OPEN_READWRITE);

     }



     public synchronized void close() {
         if (myDataBase != null) {
             myDataBase.close();
         }
         super.close();
     }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读