我在我的应用程序中使用了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)发布于 2014-05-09 05:15:54
确保创建允许可更新的PreparedStatement的ResultSet。如果调用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的这些值,这可能会失败。
https://stackoverflow.com/questions/23557028
复制相似问题