2016-06-29 15 views
1

beginnt Ich möchte meine Anwendung mit einer vor gemachten SQLite Datenbank, starten, die ich lesen und schreiben könnte. Ich verwende derzeit Active Android in meiner Anwendung zum Lesen und Schreiben von MySQL-Tabellen. Gibt es eine Möglichkeit, eine SQLite-Datenbanktabelle aus der Datei mit Active Android zu öffnen, oder gibt es eine bessere Möglichkeit, dies zu erreichen?wie man Anwendung mit einer bereiten SQL-Datenbank mit aktivem android

Antwort

3

Sie können Ihre DB-Datei (.sqlite) aus Assets-Ordner in Android lesen. Sie können Ihre Datenbankdatei (.sqlite) online über diese url und dem Java-Code erstellen, um diese Datei zu lesen sind unten angegeben: -

import android.content.Context; 
import android.database.Cursor; 
import android.database.SQLException; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 

import com.freshstartappz.appusagetracker.dto.AppInfo; 

import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 
import java.util.ArrayList; 


public class DataBaseHelper extends SQLiteOpenHelper { 

    // All Static variables 
    // Database Version 
    private static final int DATABASE_VERSION = 1; 

    // Database Name 
    private static final String DATABASE_NAME = "AppTracker.sqlite"; 

    private static final String DB_PATH_SUFFIX = "/databases/"; 
    static Context ctx; 

    public DataBaseHelper(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
     ctx = context; 
    } 


    public void CopyDataBaseFromAsset() throws IOException { 


     InputStream myInput = ctx.getAssets().open(DATABASE_NAME); 

     // Path to the just created empty db 

     String outFileName = getDatabasePath(); 

     // if the path doesn't exist first, create it 
     File f = new File(ctx.getApplicationInfo().dataDir + DB_PATH_SUFFIX); 

     if (!f.exists()) 

      f.mkdir(); 

     // Open the empty db as the output stream 

     OutputStream myOutput = new FileOutputStream(outFileName); 


     // transfer bytes from the inputfile to the outputfile 

     byte[] buffer = new byte[1024]; 

     int length; 

     while ((length = myInput.read(buffer)) > 0) { 

      myOutput.write(buffer, 0, length); 

     } 


     // Close the streams 

     myOutput.flush(); 

     myOutput.close(); 

     myInput.close(); 


    } 

    private static String getDatabasePath() { 

     return ctx.getApplicationInfo().dataDir + DB_PATH_SUFFIX 

       + DATABASE_NAME; 

    } 


    public SQLiteDatabase openDataBase() throws SQLException { 

     File dbFile = ctx.getDatabasePath(DATABASE_NAME); 


     if (!dbFile.exists()) { 

      try { 

       CopyDataBaseFromAsset(); 

       System.out.println("Copying sucess from Assets folder"); 

      } catch (IOException e) { 

       throw new RuntimeException("Error creating source database", e); 
      } 

     } 


     return SQLiteDatabase.openDatabase(dbFile.getPath(), null, SQLiteDatabase.NO_LOCALIZED_COLLATORS | SQLiteDatabase.CREATE_IF_NECESSARY); 

    } 

    @Override 

    public void onCreate(SQLiteDatabase db) { 

    } 

    @Override 

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 

     // TODO Auto-generated method stub 


    } 


    //add your public methods for insert, get, delete and update data in database. 
    public ArrayList<AppInfo> getAppsInfo() { 
     ArrayList<AppInfo> appInfos = new ArrayList<AppInfo>(); 
     String selectQuery; 
     Cursor cursor; 
     // Select All Query 
     selectQuery = "SELECT * FROM appinfo"; 
     SQLiteDatabase db = this.getReadableDatabase(); 
     cursor = db.rawQuery(selectQuery, null); 

     // looping through all rows and adding to list 
     if (cursor.moveToFirst()) { 
      do { 
       AppInfo appInfo = new AppInfo(cursor.getInt(0), cursor.getString(1), cursor.getString(2), cursor.getString(3)); 
       appInfos.add(appInfo); 
      } while (cursor.moveToNext()); 

     } 
     return appInfos; 
    } 
} 

Dies ist ein Beispielcode ändern SQLite Dateinamen und Tabellennamen mit Ihren Feldern.