gpt4 book ai didi

java - 如何操作结果集

转载 作者:行者123 更新时间:2023-12-02 05:50:49 26 4
gpt4 key购买 nike

我在我的应用程序中使用 java 和 postgres。我正在从数据库中获取数据,并对结果集中存储的数据使用我的逻辑。之后我想通过语句操作结果集的第二个字段

 rs.updateString(2,s);

我操作结果集的方法是正确的。因为我无法通过上述语句更改存储在结果集中的数据,并且在执行上述语句时我收到异常。请帮忙...

使用建议后,我修改了程序,我的代码是

    Connection con = getNonTConnection();
ResultSet rs = null;
try {
String strSQL = "Query for fetching two fields from database";
pstmt=con.prepareStatement(strSQL,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
pstmt.setString(1, locationID);
log.debug(pstmt);
rs = pstmt.executeQuery();
while (rs.next())
{
piscode = rs.getString("pis_code").trim();
password = rs.getString("pis_passwd").trim();
passwdMatched = checkPassword(piscode,password); // return true or false
if(passwdMatched)
s="true";
else
s="false";
rs.updateString(2,s);// this statement still result in error
}

我遇到的错误列表

org.postgresql.util.PSQLException: The column name location not found.
13602ms [AWT-EventQueue-0] DEBUG: 2014-May-09 @ 12:35:58,327 (JRXmlDigesterFactory.java:createParser:1333)
Using SAX parser factory class net.sf.jasperreports.engine.xml.JRReportSaxParserFactory
at org.postgresql.jdbc1.AbstractJdbc1ResultSet.findColumn(AbstractJdbc1ResultSet.java:673)
at org.postgresql.jdbc2.AbstractJdbc2ResultSet.isUpdateable(AbstractJdbc2ResultSet.java:1351)
at org.postgresql.jdbc2.AbstractJdbc2ResultSet.updateValue(AbstractJdbc2ResultSet.java:1517)
at org.postgresql.jdbc2.AbstractJdbc2ResultSet.updateString(AbstractJdbc2ResultSet.java:1122)

修改后的代码中

 rs.updateRow();

我仍然遇到错误

     org.postgresql.util.PSQLException: The column name location not found.
at org.postgresql.jdbc1.AbstractJdbc1ResultSet.findColumn(AbstractJdbc1ResultSet.java:673)
at org.postgresql.jdbc2.AbstractJdbc2ResultSet.isUpdateable(AbstractJdbc2ResultSet.java:1351)
at org.postgresql.jdbc2.AbstractJdbc2ResultSet.updateValue(AbstractJdbc2ResultSet.java:1517)
at org.postgresql.jdbc2.AbstractJdbc2ResultSet.updateString(AbstractJdbc2ResultSet.java:1122)
at org.postgresql.jdbc2.AbstractJdbc2ResultSet.updateString(AbstractJdbc2ResultSet.java:1211)

最佳答案

您确保创建允许可更新的 ResultSetPreparedStatement。如果您调用Connection#prepareStatement(String sql, int resultSetType, int resultSetConcurrency),这将起作用。并通过:

  • ResultSet.TYPE_SCROLL_SENSITIVE 作为 resultSetType 参数。
  • ResultSet.CONCUR_UPDATABLE 作为 resultSetConcurrency 参数。

代码示例:

Connection con = ...
String sql = "SELECT ...";
PreparedStatement pstmt = con.prepareStatement(
sql,
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
//...
String s = ...;
//...
rs.updateString(2,s);
//important!
rs.updateRow();
}

更多信息:

请注意,如果您的 JDBC 驱动程序不支持 ResultSet 的这些值,则此操作可能会失败。

关于java - 如何操作结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23557028/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com