【问题标题】:net.ucanaccess.jdbc.UcanaccessSQLException: Column not found: 0net.ucanaccess.jdbc.UcanaccessSQLException:找不到列:0
【发布时间】:2014-12-19 01:26:23
【问题描述】:

我是 UCanAccess 的新手

package checktpsystemdatabase;

import java.sql.*;

public class CheckTPSystemDatabase {

    public static void main(String[] args) throws SQLException {
        try {
            Connection con = DriverManager.getConnection("jdbc:ucanaccess://D:/Java/TransactionProcessingSystem/src/transactionprocessingsystem/Resources/TPSystem.accdb");

            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT * FROM Product");

            while (rs.next()) {
                System.out.println(rs.getInt(0) + "\t" + rs.getString(1) + "\t" + rs.getString(2));
            }
            rs.close();

        } catch (SQLException e) {
            System.out.println(e);
        }
    }
}

当我执行这段代码时,它显示"net.ucanaccess.jdbc.UcanaccessSQLException: Column not found: 0"。请帮帮我!

【问题讨论】:

  • 确保产品表有列,描述产品表并确定列。
  • 是的product表有列,不知道为什么会出现问题!

标签: java jdbc ucanaccess


【解决方案1】:

您看到该错误是因为 JDBC ResultSet 的数字索引值以 1 开头,而不是 0。或者,正如他们在 Java 教程 here 的“从行中检索列值”部分中所说的那样:

ResultSet 接口声明了用于从当前行检索列值的 getter 方法(例如,getBoolean 和 getLong)。您可以使用列的索引号或列的别名或名称来检索值。列索引通常更有效。 列从 1 开始编号

(强调我的。)

【讨论】:

  • 非常感谢@Gord Thompson。现在我使用的是列名而不是索引,它工作正常
【解决方案2】:

简单

ResultSet rs 以索引 1 而不是 0 开头,因此您应该编写 rs.getInt(1) 或 rs.getObject(1)

【讨论】:

    猜你喜欢
    • 2015-07-04
    • 1970-01-01
    • 2015-04-15
    • 1970-01-01
    • 2018-04-13
    • 2013-06-27
    • 2021-08-06
    • 2013-10-10
    相关资源
    最近更新 更多