我在使用Java / Android建立与MySql数据库的连接时遇到问题。我的网络中的Windows7计算机上有一个数据库文件(MyDatabase.db)。当我从另一台Windows7计算机开发(该文件可通过Windows资源管理器访问,我可以通过SQLDatabaseExplorer对数据库进行更改)时,以下代码可以正常工作,但在我的Galaxy选项卡上安装我的应用程序时,“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 String ......?但我没弄清楚如何更改它,以便建立连接。
感谢您的帮助, 添
编辑: 感谢您一直以来的帮助!我昨天写了这个问题,没有查看我的代码...我很抱歉,因为我混淆了很多东西......它不是MySql数据库而是sqlite数据库...但我认为这在编码方面并没有太大变化。我正在使用jdbc sqlite驱动程序。在Java-Eclipse Project中开始下面的行时,一切正常并且可以建立连接。但在我的设备上我仍然有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 ...?
提前致谢!
答案 0 :(得分:3)
MYSQL conenction字符串的url格式为
jdbc:mysql://[host][,failoverhost...][:port]/[database] »
[?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]...
如果未指定主机名,则默认为 127.0.0.1。如果未指定端口,则默认为3306,即MySQL服务器的默认端口号。
jdbc:mysql://[host:port],[host:port].../[database] »
[?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]...
以下是一个示例连接网址:
jdbc:mysql://localhost:3306/sakila?profileSQL=true
请相应更改
答案 1 :(得分:0)
JDBC urls的格式为:jdbc:mysql:///但请查看重复的代码。您可能不希望从这样的移动设备直接连接到数据库,但更喜欢使用Web服务包装器来执行此操作。
答案 2 :(得分:0)
try {
String url = "jdbc:mysql://localhost:3306/MyDatabase?user=root&password=root";
Class.forName ("com.mysql.jdbc.Driver").newInstance();
Connection connection = DriverManager.getConnection (url);
System.out.println ("Database connection established");
} catch (SQLException e) {
System.out.println("SQLException" + e.toString());
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}