sql >> データベース >  >> RDS >> SQLite

データベースファイルをファイルエクスプローラーの/assetsから/data/dataフォルダーにコピーする-Android

    以下のコードを使用して、データベースをアセットからデータ/データ/パッケージディレクトリにコピーしてみてください

    package com.example.myapp;
    
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    
    import android.content.Context;
    import android.database.Cursor;
    import android.database.SQLException;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteException;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.util.Log;
    
          public class DataBaseHelper1 extends SQLiteOpenHelper{
          private static String DB_PATH = "/data/data/com.example.myapp/databases/";
    
          private static String DB_NAME = "myDB.sqlite";
    
          private SQLiteDatabase myDataBase;
    
          private final Context myContext;
    
          public DataBaseHelper1(Context context) 
          {
              super(context, DB_NAME, null, 1);
              this.myContext = context;
          }
    
          public void createDataBase() throws IOException{
    
    
        boolean dbExist = checkDataBase();
    
          if(dbExist)
          {
              Log.i("DB....", "database available....");
          }
          else
          {
              this.getWritableDatabase();
    
              try {
    
              copyDataBase();
    
              } catch (IOException e) {
    
              throw new Error("Error copying database");
    
              }
    
             Log.i("DB..", "database created.....");
           }   
    
          }
    
    
          public boolean checkDataBase(){
    
          SQLiteDatabase checkDB = null;
    
          try{
    
          String myPath = DB_PATH + DB_NAME;
    
          checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);
    
          }catch(SQLiteException e){
    
              Log.e("CheckDb","DB not found");
          //database does't exist yet.
    
          if(checkDB != null){
    
          checkDB.close();
    
          }
          }
          finally
          {
              if(checkDB != null){
    
                  checkDB.close();
    
                  } 
              this.close();
          }
          return checkDB != null ? true : false;
    
          }
    
    
    
    
          private void copyDataBase() throws IOException{
    
          InputStream myInput = myContext.getAssets().open(DB_NAME);
    
          String outFileName = DB_PATH + DB_NAME;
    
          OutputStream myOutput = new FileOutputStream(outFileName);
              byte[] buffer = new byte[1024];
    
          int length;
    
          while ((length = myInput.read(buffer))>0){
    
          myOutput.write(buffer, 0, length);
    
          }
    
          myOutput.flush();
    
          myOutput.close();
    
          myInput.close();
    
          }
    
          public SQLiteDatabase openDataBase() throws SQLException{
    
          String myPath = DB_PATH + DB_NAME;
    
          return myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);
    
          }
    
    
          @Override
    
          public synchronized void close() {
    
          if(myDataBase != null)
    
          myDataBase.close();
    
          super.close();
    
          }
    
          @Override
    
          public void onCreate(SQLiteDatabase db) {
    
          }
    
          @Override
    
          public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    
    
          }  
    
    
          public void getData()
          {
              SQLiteDatabase myDB ;
              Cursor cursor ;
               try {
    
                    myDB=this.openDataBase();                   
    
                        cursor=myDB.rawQuery("SELECT * FROM Country_Master",null);
    
    
                        if (cursor != null ) {
                           if  (cursor.moveToFirst()) {
                           do {
    
                               // put your code to get data from cursor                      
    
                           }while (cursor.moveToNext());
                           }
    
                        }
    
    
    
                       if(cursor != null)
                        {
                            myDB.close();
                           cursor.close();
                        }                      
                        }catch(SQLException sqle){
    
                        throw sqle;
    
                        }
    
    
            }
    }
    

    また、データベースをコピーするアクティビティのonCreateメソッドの下にこのコードを配置します。

     DataBaseHelper1 myDbHelper = new DataBaseHelper1(MyActivity.this); 
         try 
         {
             myDbHelper.createDataBase();
         }catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                }
    
         finally
         {
             myDbHelper.close();
         }
    



    1. SQLServerの「Waitforでクエリは許可されていません」エラー101

    2. SQL Serverで同等のデータベースを表示– sp_databases

    3. 結果セットを使用して複数のレコードを表示する

    4. ASP.NETとSQLServer間の接続プールの問題を解決するにはどうすればよいですか?