我在通过 Java/Android 建立与 MySql 数据库的连接时遇到问题。我的网络中的 Windows7 计算机上有一个数据库文件 (MyDatabase.db)。当我从另一台 Windows7 计算机上开发时(该文件可通过 Windows 资源管理器访问,并且我可以通过 SQLDatabaseExplorer 更改数据库),以下代码有效,但在我的 Galaxy Tab 上安装我的应用程序时,“DriverManager. getConnection()" 返回空值。
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-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 之外建立连接并在我的 Android 设备上失败?我可能有一个错误的驱动程序,它不能在设备上工作,而是来自 Eclipse ......?
提前致谢!