0

[解决了]

我终于解决了问题,连接一切正常吗...

问题出在 SQL 查询中,我在名为“arduinoData”的表中进行选择,而真正的名称是“arduinodata”。

这种方式在本地有效,但是当我在网上尝试时,它没有。

因为这个,返回是'null',Java 试图解析它并显示错误。

很抱歉给大家添麻烦了,谢谢大家。


我正在使用 JDBC 将我的程序连接到 MySQL 数据库。

我已经输入了端口号,是的,我的数据库有权访问。

当我使用 localhost 时工作正常,但是当我尝试连接到远程 MySQL 数据库时,在控制台上显示此错误。

java.lang.ExceptionInInitializerError
Caused by: java.lang.NumberFormatException: null
    at java.lang.Integer.parseInt(Integer.java:454)
    at java.lang.Integer.parseInt(Integer.java:527)
    at serial.BDArduino.<clinit>(BDArduino.java:25)
Exception in thread "main" Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 1 segundo)

先感谢您 !

4

3 回答 3

2

注意:这最初是一条评论,但太长了。似乎人们看到 NFE 并猜测它是空的端口。这是误导。这是一个显示端口的工作代码不是必需的。请避免误导性答案。

        try {
          Class.forName("com.mysql.jdbc.Driver");
          String sourceURL = "jdbc:mysql://localhost/sodb";

          Connection conn = DriverManager.getConnection(sourceURL, "naishe", "p2ssword");
          Statement st = conn.createStatement();
          ResultSet rs = st.executeQuery("select count(*) from test_tab");
          while(rs.next()){
              System.out.println(rs.getString(1));
          }
        } catch(ClassNotFoundException cnfe) {
          System.err.println(cnfe);
        } catch(SQLException sqle) {
          System.err.println(sqle);
        }

它正确打印3(这是表 test_tab 中的记录数)。


如果您使用的是标准驱动则不需要端口,默认为 3306!见这里 http://dev.mysql.com/doc/refman/5.5/en/connector-j-reference-configuration-properties.html

JDBC URL 格式

MySQL Connector/J 的 JDBC URL 格式如下,方括号 ([, ]) 中的项目是可选的:

jdbc:mysql://[host][,failoverhost...][:port]/[database] » [?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]...

如果未指定主机名,则默认为 127.0.0.1。如果未指定端口,则默认为 3306,这是 MySQL 服务器的默认端口号。

于 2012-10-20T04:44:47.057 回答
-1

我认为您在连接字符串中错过了端口号。

static String url = "jdbc:mysql://mysql.mydomain.com.br:3306/myDB";

代替

static String url = "jdbc:mysql://mysql.mydomain.com.br/myDB";

现在,如果遇到相同的错误意味着您可以将mysql.mydomain.com.br替换为 IP 地址,如下所示:

只需在数据库连接字符串中提供远程机器的 IP / 主机名,而不是 mysql.mydomain.com.br。例如:

jdbc:mysql://172.16.15.225:3306/yourdatabase

还要检查没有防火墙阻止对端口 3306 的访问。

确保您正在连接的用户被允许从这个特定的主机名进行连接。对于开发环境,这样做是安全的

'username'@'%'

这是为了授予用户 GRANT 手册的权限。

于 2012-10-20T04:33:15.753 回答
-1

你应该port numbers在你的connection url as 3306,并且请确保用户对数据库访问的权限如果没有被授予,你应该授予用户访问远程数据库的权限,请参考链接

于 2012-10-20T04:34:26.097 回答