通过DSN的Java MySql连接



我正试图通过我设置的系统DSN连接到我的一个MySql数据库。DSN是用我的SSL证书、用户名、密码、端口正确设置的,数据库填充DSN数据库下拉列表,"测试"连接通过。我似乎无法用Java连接。我花了两天时间浏览了Stack上的一些示例,但它们都引用了Access数据库,并使用了Java8中不再可用的JDBC-ODBC桥。我试着将UCanAccess与Jackess一起使用,但我在哪里都找不到。下面的代码是我在过去几个小时里一直在修改的。我通常用PHP连接到MySql数据库,并以JSON或直接用JDBC驱动程序接收结果,但对于这个项目来说,两者都不是真正的选项。任何想法。我很感激你的帮助。

//String username = "<username>";
//String password = "<password>";
//String database = "<database_name>";
try {
    Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
    //Connect to cllients MySql Database
    Connection conn = DriverManager.getConnection("jdbc:ucanaccess:" + database);
    //Call VerifyLabel(<MAC>,<MODEL>); Call provided client
    CallableStatement cStmt = conn.prepareCall("{CALL verify(?, ?)}");
    //MAC
    cStmt.setString(1, "mac address");
    //model            
    cStmt.setString(2, "model");
    cStmt.execute();
    //Getting results from "Status" column
    ResultSet rs1 = cStmt.getResultSet();
    //Iterate results and print.
    while (rs1.next()) {
        System.out.println(rs1.getString("Status"));
    }
    //Close connection conn
    rs1.close();
} catch (SQLException ex) {
    Logger.getLogger(CambiumStoredTest.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClassNotFoundException ex) {
    Logger.getLogger(CambiumStoredTest.class.getName()).log(Level.SEVERE, null, ex);
}

使用MySql驱动程序:

    Class.forName("com.mysql.jdbc.Driver"); 
    Connection conn = DriverManager.getConnection("jdbc:mysql:"+ database);

也尝试过:

  Class.forName("com.mysql.jdbc.Driver"); 
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/"+ database);

MySql驱动程序错误:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

1)DSN最常见的关联是ODBC(通常与MS Access关联)。因此,所有的联系。ODBC不是DSN所必需的。

2) 不要使用Ucanaccess。对mySQL使用J/Connector。

3) 请确保您可以从命令行与mySQL进行通信。然后集中精力让一个小型的"helloworld"JDBC应用程序进行连接。第二个和第三个示例看起来不错。请务必检查mySQL日志中是否有任何警告/错误。

经过一整天的努力和几个小时的睡眠,我终于开始工作了。UCanAccess和mysql连接器无法工作。由于没有其他连接到此客户端数据库的方法是可接受的,因此最简单的事情就是用Java 7而不是8来推送此应用程序。这使我能够毫无问题地连接到DSN。我知道这种方法不是最好的解决方案,但它是完美有效的。此外,我可以使用Connector/J,而不是使用一些组装好的第三方libs和jar。感谢所有试图帮助我的人。万一其他人遇到这个问题,我就是这样做的。

  1. 用Java 7而不是8开发应用程序
  2. 设置系统DSN

    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

    //如果是在DSN中设置的,则无需提供用户名或密码Connection conn=DriverManager.getConnection("jdbc:odbc:"+数据库);

相关内容

  • 没有找到相关文章

最新更新