我通過Java/Android建立與MySql數據庫的連接時出現問題。我的網絡中有一個Windows7計算機上的數據庫文件(MyDatabase.db)。當我從另一臺Windows7計算機(該文件可通過Windows資源管理器進行訪問,並且可以通過SQLDatabaseExplorer對數據庫進行更改)開發出以下代碼時,但在Galaxy Tab上安裝我的應用程序時,會出現「DriverManager」。 getConnection()「返回null。「DriverManager.getConnection」方法中的NullPointerException
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()");
}
SQLException中登錄logcat的是:
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-File複製到我的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之外,並在我的Androiddevice上失敗?我可能會有一個錯誤的驅動程序,這不適用於設備,但從Eclipse ...?
在此先感謝!
【如何用ServerDatabase syncronize數據?(http://stackoverflow.com/questions/9998519/how-to-syncronize-data-with-a-serverdatabase) – Snicolas 2012-04-04 06:55:39
使用'的getConnection的可能重複(網址,用戶名,密碼)'而不是'getConnection(url);' – 2012-04-04 06:57:56