使用另一个Java类更新ResultSet

时间:2014-04-05 14:43:03

标签: java mysql sql jdbc

我还在学习ResultSet,我试图使用另一个类更新ResultSet,但后来我被提示错误。错误是

“此结果集必须来自使用结果集类型ResultSet.CONCUR_UPDATABLE创建的语句,查询必须只选择一个表,不能使用函数,必须从该表中选择所有主键。”。< / p>

我的语句正在运行,它处于ResultSet.CONCUR_UPDATABLE模式。这是我的示例代码:

  

陈述类:

public abstract class Statements extends mysqlConnect {
     static Statement stmt;
     static ResultSet patient_details;
     String sql=null;

     public void getProfileDetails(String name) throws SQLException{

       stmt = con.createStatement(CONCUR_UPDATABLE, TYPE_SCROLL_SENSITIVE);
       sql="select patient_id, last_name, first_name, middle_name, age, birthdate, gender, height, weight, blood_type, office_location, added_by, picture
            from patient_table
            where concat(last_name, \", \", first_name, \" \", middle_name )
            like '"+name+"%';";
       patient_details = stmt.executeQuery(sql);   }//getProfileDetails
  

控制器类:

public class Controller extends Statements{

    void setLastName(String ln) throws SQLException{
     patient_details.absolute(patient_details.getRow());
     patient_details.updateString("last_name", ln);
     patient_details.updateRow();
    }//setLastName

}//controller

1 个答案:

答案 0 :(得分:2)

根据Connection.createStatement(int, int)

的文件

方法签名是:

Statement createStatement( int resultSetType,
                           int resultSetConcurrency ) throws SQLException
  

<强>参数
   resultSetType - 结果集类型;中的一个   ResultSet.TYPE_FORWARD_ONLY
  ResultSet.TYPE_SCROLL_INSENSITIVE或者   ResultSet.TYPE_SCROLL_SENSITIVE

     

resultSetConcurrency - 并发类型;中的一个   ResultSet.CONCUR_READ_ONLY
  ResultSet.CONCUR_UPDATABLE

但是您已将并发类型作为第一个参数。

更改

stmt = con.createStatement( CONCUR_UPDATABLE, TYPE_SCROLL_SENSITIVE );

stmt = con.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE,
                            ResultSet.CONCUR_UPDATABLE );