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
1
A
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.