Verbinden einer Datenbank auf einem Computer in Android Studio

Aug 25 2020

Ich arbeite derzeit an einem Projekt in Android Studio. Ich hatte eine Datenbank mit Informationen auf meinem Computer erstellt und wollte, dass mein Programm speziell eine Verbindung zu dieser Datenbank herstellt.

Es scheint jedoch nicht für mich zu funktionieren. Zu Testzwecken habe ich eine Testdatenbank erstellt, um zu überprüfen, ob mein Code funktioniert. Es sieht ungefähr so ​​aus: (Ich habe mir nicht die Mühe gemacht, die create-Anweisungen für Tabellen / andere datenbankbezogene Methoden einzufügen.)

public class DatabaseHelper extends SQLiteOpenHelper {

private static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "sample_database";

public SampleDBSQLiteHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
   ...
}

@Override
public void onUpgrade(SQLiteDatabase db) {
   ...
}
}

Würde mich über jede Hilfe freuen. Wann immer ich nachgeschlagen habe, habe ich Antworten erhalten, um eine SQLite-Datenbank auf Remote-Servern zu verbinden.

Antworten

ThomasMorris Aug 25 2020 at 07:49

Sie sind sich nicht ganz sicher, was Ihre Frage ist, aber hier ist ein Beispiel für eine Datenbank-Hilfsklasse, mit der Sie Daten in SQL auf der mobilen App schreiben können.

public class DatabaseHelper extends SQLiteOpenHelper {

    public static final String DATABASE_NAME ="Database.db";
    // Database Version
    private static final int DATABASE_VERSION = 1;
    public static final String TABLE  = "TABLE";
  
    public static final String COL1 = "ID",COL2 = "D2", COL3 = "D3";
    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        // creating required tables
        String CREATED_TABLE = "CREATE TABLE " + TABLE + " (ID INTEGER PRIMARY KEY, " +
                "D1 TEXT, D2 TEXT)";
        db.execSQL(CREATED_TABLE);
  
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // on upgrade drop older tables
        db.execSQL("DROP TABLE IF EXISTS " + TABLE);
        onCreate(db);
    }
    public boolean addData_Sensor_Board(String d1, String d2){

        SQLiteDatabase db = this.getWritableDatabase();//Enable the database to be written to
        ContentValues contentValues = new ContentValues();//Setup the data input note COL1 is for the ID
        contentValues.put(COL2,d1);//2
        contentValues.put(COL3,22);//3
     

        long result = db.insert(TABLE,null,contentValues);//Check to see if pass in has been successful and pass in the data on this line via the pass in of content values
        if(result == -1){//Returned false when inputting data to the database
            return false;
        }
        else{
            return true;//No error
        }
    }
    public Cursor showData(){//Used to locate the data inside the database
        SQLiteDatabase db = this.getReadableDatabase();
        String selectQuery = "SELECT  * FROM " + TABLE;

        Cursor data = db.rawQuery(selectQuery, null);
        return data;
    }
    public void delete_table(){//Clears the entire database
        SQLiteDatabase db = this.getWritableDatabase();
        String clearDB = "DELETE FROM "+ TABLE;
        db.execSQL(clearDB);
    }  
}


ZsoltBoldizsár Aug 25 2020 at 09:32

Soweit ich weiß, gibt es keine einfache Möglichkeit, dies zu tun, aber Florina Muntenescu hat diesen großartigen Blogpost darüber geschrieben, wie Sie mit Room eine vorab ausgefüllte Datenbank in Ihre App laden können .

Nachdem Sie Ihre Datenbank erfolgreich geladen haben, können Sie die Datenbank mit Android Studio 4.1 mithilfe des integrierten Datenbankinspektors bearbeiten (muss auch das Android Gradle Plugin auf 4.1.0 oder höher aktualisieren).