JDBCを用いたMySQLサーバーへの接続

提供:TuntunkunMediaWiki

移動: 案内, 検索

目次

JDBCとは

JDBCは、JavaからデータベースにアクセスするためのAPIです。JDBCを使用することで、データベースの種類に依存せずコードを記述する事ができますが、実際に稼動させるためには個々のデータベースに対応したドライバ(JDBCドライバ)を導入する必要があります。今回は、AndroidでJDBCを使用してMySQLに接続を行いました。

準備(mysql-connector-javaのダウンロード)

以下のURLからMySQLに接続を行うためのAPIをダウンロードします。 http://downloads.mysql.com/archives/mysql-connector-java-3.0/mysql-connector-java-3.0.17-ga.zip

パスの設定

ダウンロードした後、適当なプロジェクトのディレクトリに配置します。(プロジェクト名/libs とか)配置を行ったら、mysql-connector-java-3.0.17-ga-bin.jarを追加します。ライブラリのパスを通したら、今度はビルドを行う際のパスを通します。mysql-connector-java-3.0.17-ga-bin.jarは、ダウンロードしたzipファイルの中に含まれています。

cd build.gradeが存在するディレクトリ
vim build.grade
~省略~
dependencies {
    compile files('libs/android-support-v4.jar')
    compile files('libs/mysql-connector-java-3.0.17-ga-bin.jar')
}
~省略~
./gradlew clean

注意点

AndroidでMySQLサーバーへの接続を行うためには注意を行うべき点がいくつかあります。

AndroidManifest.xmlの設定

AndroidManifest.xmlの設定を行っていない場合、JDBCドライバがインターネットへのアクセスを行う際に例外を投げられます。

<uses-permission android:name="android.permission.INTERNET" />

ネットワーク通信を行うスレッドは、非同期で実行すること

現在のAndroidは、ネットワーク通信処理をUIを実行しているメインスレッドから実行する事を禁止されています。メインスレッドでネットワーク処理を実行することで通信相手からの応答を待つ必要があるため、ユーザーへのレスポンスがリアルタイム性を失う可能性があります。

サンプルコード

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
 
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
 
public class MysqlSample01Activity extends Activity {
 
    private static final String url = "jdbc:mysql://<server>:<port>/<database>";
    private static final String user = "<username>";
    private static final String pass = "<password>";
 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        testDB();
    }
 
    public void testDB() {
    	TextView tv = (TextView)this.findViewById(R.id.text_view);
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection(url, user, pass);
            /* System.out.println("Database connection success"); */
 
            String result = "Database connection success\n";
            Statement st = con.createStatement();
            ResultSet rs = st.executeQuery("select * from table_name");
            ResultSetMetaData rsmd = rs.getMetaData();
 
            while(rs.next()) {
            	result += rsmd.getColumnName(1) + ": " + rs.getInt(1) + "\n";
            	result += rsmd.getColumnName(2) + ": " + rs.getString(2) + "\n";
            	result += rsmd.getColumnName(3) + ": " + rs.getString(3) + "\n";
            }
            tv.setText(result);
        }
        catch(Exception e) {
            e.printStackTrace();
            tv.setText(e.toString());
        }   
 
    }
}

参考文献

http://capdroid.wordpress.com/2012/07/10/configuring-and-accessing-mysql-jdbc-driver-on-android-application/

個人用ツール
名前空間
変種
操作
案内
ツールボックス