【问题标题】:Java NetBeans JDBC Connection working in Debug, not in RunJava NetBeans JDBC 连接在调试中工作,而不是在运行中
【发布时间】:2011-04-26 16:23:55
【问题描述】:

我正在构建一个小的内部工具(非生产代码),它可以从我们的 MS SQL DB 中获取一些东西。我想试用 NetBeans 6.9.1,所以正在使用它。

我有这个连接数据库的功能,我有用于 FAND_DEV 的系统 DSN 设置为 SQL Native Client。

private static Connection GetConnection() {
            Connection conn = null;
        try {            
            conn = DriverManager.getConnection("jdbc:odbc:FAND_DEV");
        } catch (SQLException ex) {
            Logger.getLogger(DAL.class.getName()).log(Level.SEVERE, null, ex);
        }

        return conn;
}

当我在调试模式下单步执行代码时,一切正常。我可以毫无问题地从数据库中取回预期的数据。

但是,当我尝试运行(在 NetBeans 中运行主项目)时,它会在数据库连接上引发异常。对此的任何帮助将不胜感激。

java.sql.SQLException: [Microsoft][ODBC Driver Manager] Invalid string or buffer length
        at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
        at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
        at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(JdbcOdbc.java:3907)
        at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(JdbcOdbcResultSet.java:5698)
        at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:354)
        at sun.jdbc.odbc.JdbcOdbcConnection.buildTypeInfo(JdbcOdbcConnection.java:1503)
        at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:381)
        at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)
        at java.sql.DriverManager.getConnection(DriverManager.java:582)
        at java.sql.DriverManager.getConnection(DriverManager.java:207)
        at gosDbCopy.db.DAL.GetConnection(DAL.java:53)

【问题讨论】:

  • 这似乎是 JDBC-ODBC 代码深处的一个微妙的线程错误。真的,尝试只使用 JDBC,正如@John 建议的那样。

标签: java sql-server netbeans


【解决方案1】:

使用 MS SQL,您应该能够使用 JDBC 而不是使用 JDBC-ODBC 桥。原因可能与this 有关。原因可能是您返回的数据类型。 This 似乎就是一个例子。

【讨论】:

  • 我最终放弃了这个,只是切换到 JDBC。
猜你喜欢
  • 1970-01-01
  • 2019-03-22
  • 2014-06-19
  • 1970-01-01
  • 1970-01-01
  • 2016-01-05
  • 1970-01-01
  • 2014-09-27
  • 1970-01-01
相关资源
最近更新 更多