2

我是 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". 请帮我!

4

2 回答 2

5

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

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

(强调我的。)

于 2014-10-23T22:10:18.157 回答
0

简单地

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

于 2014-12-08T22:52:57.737 回答