Java/Android 経由で MySql データベースへの接続を確立する際に問題があります。ネットワーク内の Windows7 コンピュータにデータベース ファイル (MyDatabase.db) があります。別の Windows7 コンピューター (ファイルは Windows エクスプローラー経由でアクセスでき、SQLDatabaseExplorer 経由でデータベースに変更を加えることができます) から開発している場合、Eclipse から次のコードが機能しますが、Galaxy Tab にアプリケーションをインストールすると、"DriverManager. getConnection()" は null を返します。
try {
String url = "http://192.168.178.21/Users/test/userdata/Database/MyDatabase.db";
Class.forName ("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection (url);
System.out.println ("Database connection established");
} catch (SQLException e) {
Log.d("SQLException", "e.toString()");
}
LogCat に記録された SQLException は次のとおりです。
java.sql.SQLException: path to '//192.168.178.21/Users/test/userdata/Database/MyDatabase.db': '/192.168.178.21' does not exist
私の問題はURL文字列にあると思います...? しかし、接続を確立できるように変更する方法がわかりませんでした。
助けてくれてありがとう、ティム
編集: これまでご協力いただきありがとうございました! 昨日、コードを調べずに頭から質問を書きました...多くのことを混同してしまったため、申し訳ありません...それはMySqlデータベースではなく、sqliteデータベースです...しかし、それはコーディングではあまり変わらないと思います。jdbc sqlite ドライバーを使用しています。Java-Eclipse プロジェクトで以下の行を開始すると、すべて正常に動作し、接続を確立できます。しかし、私のデバイスでは、まだ Nullpointer を取得しています...
昨日、あなたのアドバイスに合うようにコードを変更しました。しかし、問題は解決しません...いくつかの権利やネットワーク設定と関係がないことを確認するために、DBファイルをAndroidデバイスにコピーし、次のコード行で直接接続しようとしました:
try {
Class.forName("org.sqlite.JDBC");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Connection conn = DriverManager.getConnection("jdbc:sqlite://mnt/sdcard/MyVideos34.db");
if (conn == null) {
Log.d("ConnectionError", "Connection is null");
return;
}
しかし、ここでも getConnection が NullPointer をスローしますが、その理由はわかりません...誰かが、Eclipse から接続を確立でき、私の Android デバイスで失敗する理由を推測しましたか? デバイスではなくEclipseから動作する間違ったドライバーを使用できますか...?
前もって感謝します!