首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何操作结果集

如何操作结果集
EN

Stack Overflow用户
提问于 2014-05-09 05:10:54
回答 1查看 1.5K关注 0票数 1

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

代码语言:javascript
复制
 rs.updateString(2,s);

是我操作结果集的方法是正确的。由于无法通过上述语句更改结果集中存储的数据,在执行上述语句时,我将得到异常。请帮帮我..。

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

代码语言:javascript
复制
    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 
     }

我得到的错误列表

代码语言:javascript
复制
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)

修改后的代码中,

代码语言:javascript
复制
 rs.updateRow();

我还是搞错了

代码语言:javascript
复制
     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)
EN

Stack Overflow用户

发布于 2014-05-09 05:15:54

确保创建允许可更新的PreparedStatementResultSet。如果调用Connection#prepareStatement(String sql, int resultSetType, int resultSetConcurrency)并传递:

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

代码示例:

代码语言:javascript
复制
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基础。从结果集中检索和修改值。

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

票数 3
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23557028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档