java - "DriverManager.getConnection"方法中出现 NullPointerException

标签 java android mysql windows networking

我在通过 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 项目中启动以下行时,一切正常并且可以建立连接。但在我的设备上我仍然得到空指针...

昨天我更改了我的代码,以便它符合您的建议。但问题仍然存在......为了确保它与某些权限或网络设置无关,我已将数据库文件复制到我的 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 中运行...?

提前致谢!

最佳答案

MYSQL 连接字符串的 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]...

以下是示例连接 URL:

jdbc:mysql://localhost:3306/sakila?profileSQL=true

请相应更改

关于java - "DriverManager.getConnection"方法中出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10006220/

相关文章:

java - 如何将 A 类与 B 类关联起来,并从 A 类中的方法返回对 B 类的引用?

android - 当更新来自后台线程时如何处理进度条状态

MySQL:选择 if `field` = TRUE 否则获取最后一行

PHP MYSQL > 搜索用户名并回显列数据

未找到键 id 时 MySQL 不返回结果

java - 为什么我的两个不同的 angularjs 服务解析为同一个 Restful Java EE Web 服务?

java - JBoss 启动缓慢,可能与指向 Heroku Postgres 的数据源有关

java - 使用 Netty 的 LengthFieldBasedFrameDecoder 时应该如何处理 ASCII 值?

java - 如何从 ArrayList<Object> 中分离数据

android - 更改在android中单击的按钮的图库 View