java - [Microsoft][ODBC 驱动程序管理器] 无效字符串或缓冲区长度异常

标签 java sql sql-server sqlexception

这是我的代码的一部分我的代码:

  Connection dbcon=null;
    Statement stm;
    ResultSet rs;
    ResultSetMetaData metadata;
    try {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        } catch (java.lang.ClassNotFoundException e) {
        System.out.print("ClassNotFoundException: ");
            System.out.println(e.getMessage());         
        }
    try {
       dbcon = DriverManager.getConnection("jdbc:odbc:Bus_Info");
       stm = dbcon.createStatement();
        rs = stm.executeQuery("select distinct number, name, min(Stop_Times.departure_time), max(Stop_Times.departure_time) from Routes, Stop_Times, Stops, trips, Calendar where(stops.stop_name like'ΣΟΝΙΑ' and Stops.stop_id=Stop_Times.stop_id and Stop_Times.trip_id=trips.trip_id and trips.route_id=Routes.route_id and trips.direction='outbound' and sunday=1 and Calendar.service_id=trips.service_id)group by number, name");

        metadata = rs.getMetaData();
        int columns = metadata.getColumnCount();
    System.out.printf("%s\t%s\t%s\t%s", "ΑΡΙΘΜΟΣ ΓΡΑΜΜΗΣ",
                          "ΟΝΟΜΑ ΓΡΑΜΜΗΣ", "ΧΡΟΝΟΣ ΔΥΙΕΛΕΣΗΣ ΠΡΩΤΟΥ ΔΡΟΜΟΛΟΓΙΟΥ",
                          "ΧΡΟΝΟΣ ΔΙΕΛΕΥΣΗΣ ΤΕΛΕΥΤΑΙΟΥ ΔΡΟΜΟΛΟΓΙΟΥ");
    System.out.println();

    while(rs.next()) {

        System.out.printf("%s\t%s\t%s\t%s\n", rs.getString("number"), rs.getString("name"),
                         rs.getString("min(Stop_Times.departure_time)"),
                         rs.getString("max(Stop_Times.departure_time") );

    }
    rs.close();
    stm.close();
        dbcon.close(); 

} catch (SQLException e) {
        System.out.print("SQLException: ");
        System.out.println(e.getMessage());
}

这里的问题是,当我想显示两列或更多列时,我收到此消息:

[Microsoft][ODBC Driver Manager] 无效字符串或缓冲区长度异常 "

我做错了什么? 提前致谢!

最佳答案

我会发表评论,但我没有足够的声誉。

它不应该与您尝试打印的列数有关。它只是不喜欢您正在获取的至少一个字符串的格式。尝试只打印名称列,看看它是否有效。如果不是,那么它可能没有被正确解码。

如果是这种情况,请转到您的 ODBC 数据源管理器,从用户 DSN 或系统 DSN 中选择相关的驱动程序,单击配置并在那里更改编码。如果这不起作用,请尝试更新/降级您的驱动程序。 (我遇到了同样的问题,并将我的 4D 驱动程序从 v13 更新到 v14 修复了它)。

关于java - [Microsoft][ODBC 驱动程序管理器] 无效字符串或缓冲区长度异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20204553/

相关文章:

Java webapp无法将图像写入webapp创建的文件夹

c# - 返回查询中的最大值

mysql - 连接两个选择查询,其中一个查询的结果依赖于另一查询

sql-server - SQL Server 中时态表之间的数据同步

sql - 编写 SQL 查询来替换值并包含所有日期

java - 将 HTML 文件解析为 DOM 树以进行提取 (Java)

java - 需要了解java中的thread(this,ThreadName)吗?

java - 检查端口功能

mysql - 选择其中一个列值而不是两者

c# - 是什么导致了 MSSQL 中的错误 "Operation on non-blocking socket would block"?