我还在学习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
答案 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 );