我正在使用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,我在哪里可以找到有关缺失要求的文档?
实际上是用户错误。我搞混了;咄。
我的代码面向 QuickBooks Desktop。我从QuickBook POS(销售点(页面复制了该代码,而不是常规的QuickBooks Desktop页面。
显然,POS应用程序中的"客户"表具有一个名为"名称"而不是"姓氏"的列。常规 QuickBooks 应用程序中的客户表确实有一个名为"LastName"的列,这就是我想做的。
如果我错了,有人请纠正我,但是,消息"RSBOperation 需要属性名称"可以替换为"客户表没有名为"姓氏"的列。