JDBCダウンロード
AndroidからDBに直接接続できないので、JDBCドライバが必要になる。
MySQLインストール時にしなかった方は、こちらのConnecter/Jというリンクからダウンロード・インストールできる。
https://dev.mysql.com/downloads/
C:\Program Files (x86)\MySQL\Connector J 8.0の階層にmysql-connector-java-8.0.18.jarがあるので、これをビルドパスに追加する。
ビルドパス設定
jarファイルをapp/libsの下に追加。
さらにbuild.gradleに以下を追加。
dependencies {
compile files('libs/mysql-connector-java-8.0.18.jar)
}
その後、おそらく同期ボタンが出てくるので同期する。
・参考URL
https://qiita.com/icchi_h/items/8ce738ce8511ef69c799
パーミッション
ネットワークを使うのでパーミッションが必要。以下を追加。
<manifest>
<uses-permission android:name="android.permission.INTERNET" />
</manifest>
MySQLへの接続プログラム
MainActivity.java
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try {
//データベースに接続
Connection con = MySqlConnect.getConnection();
//ステートメントオブジェクトを作成
Statement stmt = (Statement) con.createStatement();
//SQL
String mySql = "select date from table;";
ResultSet rs = stmt.executeQuery(mySql);
while(rs.next()) {
Toast.makeText(getApplicationContext(), rs.getString("date"), Toast.LENGTH_LONG).show();
}
//オブジェクトを解放
rs.close();
stmt.close();
con.close();
} catch (Exception e) {
}
MySqlConnect.java
class MySqlConnect{
static Connection getConnection() throws Exception {
//JDBCドライバのロード
Class.forName("com.mysql.jdbc.Driver");
//各設定
String url = "jdbc:mysql://ホスト名/db名";
String user = "user_name";
String pass = "password";
//データベースに接続
Connection con = DriverManager.getConnection(url,user,pass);
return con;
}
}
・参考URL
https://qiita.com/ks_513/items/0b286c4932a8e36c672e
困ったところ
現在以下のエラーが発生しており、未完状態である。
・ClassLoader referenced unknown path
・java.lang.UnsupportedOperationException
ビルドパスの設定、gradleファイルの見直しなど試してみたが突破できなかった。
感想
簡単にできると思っていたが、意外と時間がかかる。
様々なサイトを見たが、非同期処理についてはほとんど書かれていなかったので関係ないとみている。
しかしhttps://qiita.com/ks_513/items/0b286c4932a8e36c672e
の一番下に非同期処理したほうが良いといった旨の記述がされているので、試す価値はありそうだ。