AndroidStudioのコンピューター上のデータベースに接続する

Aug 25 2020

私は現在、AndroidStudioでプロジェクトに取り組んでいます。私は自分のコンピューター上に情報でいっぱいのデータベースを作成しました、そして私は私のプログラムがそのデータベースに特別に接続することを望みました。

しかし、それは私にはうまくいかないようです。テストの目的で、コードが機能するかどうかを確認するためのテストデータベースを作成しました。これは次のようになります:(テーブル/他のデータベース関連メソッドのcreateステートメントをわざわざ入れていません)

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) {
   ...
}
}

これに関する助けをいただければ幸いです。調べてみると、リモートサーバー上のsqliteデータベースに接続するための回答が得られました。

回答

ThomasMorris Aug 25 2020 at 07:49

質問が何であるかは完全にはわかりませんが、モバイルアプリでSQLにデータを書き込むことができるデータベースヘルパークラスの例を次に示します。

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

私の知る限り、これを行う簡単な方法はありませんが、Florina Muntenescuは、事前に入力されたデータベースをRoomを使用してアプリにロードする方法についてこのすばらしいブログ投稿を書きました。

データベースが正常に読み込まれたら、Android Studio 4.1を使用して、組み込みのデータベースインスペクターを使用してデータベースを操作できます(Android Gradleプラグインを4.1.0以降に更新する必要もあります)。