1

我正在使用来自 CData(cdata.com) 的 JDBC 驱动程序来访问 QuickBooks 实例。下面的代码就在 CData 网站上(qbConnString 除外)。getConnection 调用工作正常,但执行查询时会引发异常。

            connection = DriverManager.getConnection(qbConnString);

            String cmd = "INSERT INTO Customers (LastName) VALUES (?)";
            QuickBooksPreparedStatement pstmt =   
              (QuickBooksPreparedStatement) connection.prepareStatement(cmd,
                Statement.RETURN_GENERATED_KEYS);
            pstmt.setString(1, "Hook");
            int count = pstmt.executeUpdate();
            System.out.println(count + " rows are affected");
            ResultSet rs = pstmt.getGeneratedKeys();
            while (rs.next()) {
                System.out.println(rs.getString("ListId"));
            }
            connection.close();

这是调用 executeUpdate 时生成的堆栈跟踪:

XcoreXquickbooksX160X6254.ymc: The attribute name is required by RSBOperation.
    at XcoreXquickbooksX160X6254.qi.executeUpdate(Unknown Source)
    at app.JDBCConnect.qbConnect(JDBCConnect.java:49)
    at app.JDBCConnect.<init>(JDBCConnect.java:34)
    at app.JDBCConnect.main(JDBCConnect.java:25)

所以我的问题是:什么是 RSBOperation,我在哪里可以找到有关缺失要求的文档?

4

1 回答 1

1

实际上是用户错误。我搞混了;呃。

我的代码针对的是 QuickBooks Desktop。我从 QuickBook POS(销售点)页面而不是常规的 QuickBooks Desktop 页面复制了该代码。

显然,POS 应用程序中的 Customer 表有一个名为“name”而不是“LastName”的列。常规 QuickBooks 应用程序中的 Customer 表确实有一个名为“LastName”的列,这就是我想要做的。

如果我错了,请有人纠正我,但是,消息“RSBOOperation 需要属性名称”可以替换为“客户表没有名为“LastName”的列。

于 2017-05-25T14:37:41.857 回答