不断收到错误:至少有一个当前语句的参数未初始化
这是我正在执行的代码。在此代码中,我尝试更新y数据库,详细信息来自组合框。不断收到错误:至少有一个当前语句的参数未初始化
private void SubmitActionPerformed(java.awt.event.ActionEvent evt) {
Connection connection;
try {
int flag=1;
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (Exception ex) {
System.out.println("Error"+ex);
}
connection = DriverManager.getConnection("jdbc:derby://localhost:1527/loginDB", "login_user" ,"root");
String query = "INSERT into FACULTY_DETAILS (FACULTYNAME,LECTUREQUALITY,COMSKILLS,KNOWLEDGE,BEHAVIOUR,NOTESPROVIDED,PUNCTUALITY,SUGGESTION) values(?,?,?,?,?,?,?,?)";
PreparedStatement pt = connection.prepareStatement(query);
//Statement pt = connection.createStatement();
pt.executeUpdate();
ResultSet rs = pt.executeQuery("SELECT * FROM LOGIN_USER.FACULTY_DETAILS");
while(rs.next()){
if(rs.getString(1).equals(kapil.getText())){
pt.setString(2, (String) javalec.getSelectedItem());
pt.setString(3,(String)javacomm.getSelectedItem());
pt.setString(4,(String)javaknow.getSelectedItem());
pt.setString(5, (String) javabeh.getSelectedItem());
pt.setString(6, (String) javanot.getSelectedItem());
pt.setString(7, (String) javapun.getSelectedItem());
pt.setString(8,javatext.getText());
pt.executeUpdate(); flag=0;}
if(rs.getString(1).equals(ziaul.getText())){
pt.setString(2, (String) oslec.getSelectedItem());
pt.setString(3,(String)oscomm.getSelectedItem());
pt.setString(4,(String)osknow.getSelectedItem());
pt.setString(5, (String) osbeha.getSelectedItem());
pt.setString(6, (String) osnote.getSelectedItem());
pt.setString(7, (String) ospun.getSelectedItem());
pt.setString(8,ostext.getText());
pt.executeUpdate();
flag=0;}
if(rs.getString(1).equals(saurabh.getText())){
pt.setString(2, (String) daalec.getSelectedItem());
pt.setString(3,(String)daacomm.getSelectedItem());
pt.setString(4,(String)daakno.getSelectedItem());
pt.setString(5, (String) daabeh.getSelectedItem());
pt.setString(6, (String) daanot.getSelectedItem());
pt.setString(7, (String) daapun.getSelectedItem());
pt.setString(8,daatext.getText());
pt.executeUpdate();
flag=0;}
if(rs.getString(1).equals(gayatri.getText())){
pt.setString(2, (String) ecolec.getSelectedItem());
pt.setString(3,(String)ecocomm.getSelectedItem());
pt.setString(4,(String)ecokno.getSelectedItem());
pt.setString(5, (String) ecobeh.getSelectedItem());
pt.setString(6, (String) econot.getSelectedItem());
pt.setString(7, (String) ecopun.getSelectedItem());
pt.setString(8,ecotext.getText());
pt.executeUpdate();
flag=0;}
if(rs.getString(1).equals(tasleem.getText())){
pt.setString(2, (String) clec.getSelectedItem());
pt.setString(3,(String)ccomm.getSelectedItem());
pt.setString(4,(String)cknow.getSelectedItem());
pt.setString(5, (String) cbeh.getSelectedItem());
pt.setString(6, (String) cnote.getSelectedItem());
pt.setString(7, (String) cpun.getSelectedItem());
pt.setString(8,ctext.getText());
pt.executeUpdate();
flag=0;}
if(rs.getString(1).equals(saurabhs.getText())){
pt.setString(2, (String)graplec.getSelectedItem());
pt.setString(3,(String)grapcomm.getSelectedItem());
pt.setString(4,(String)grapknow.getSelectedItem());
pt.setString(5, (String) grapbeh.getSelectedItem());
pt.setString(6, (String) grapnot.getSelectedItem());
pt.setString(7, (String) grappun.getSelectedItem());
pt.setString(8,graphtext.getText());
pt.executeUpdate();
flag=0;}
if(rs.getString(1).equals(sanjay.getText())){
pt.setString(2, (String) softlec.getSelectedItem());
pt.setString(3,(String) softcomm.getSelectedItem());
pt.setString(4,(String) softknow.getSelectedItem());
pt.setString(5, (String) softbeh.getSelectedItem());
pt.setString(6, (String) softnot.getSelectedItem());
pt.setString(7, (String) softpun.getSelectedItem());
pt.setString(8,softtext.getText());
pt.executeUpdate();
flag=0;
}
if(flag==0){
JOptionPane.showMessageDialog(null,"Feedback Submitted Successfully");
}
}
} catch (SQLException ex) {
Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
}
}
这是我使用,请帮助我.. 我想执行我所提供的代码的代码,但它不断给我的错误“至少有一个参数设置为当前语句是初始化。 “所以,请帮助...
的SQL在准备好的声明中有参数标记:
String query = "INSERT into FACULTY_DETAILS (FACULTYNAME,LECTUREQUALITY,COMSKILLS,KNOWLEDGE,BEHAVIOUR,NOTESPROVIDED,PUNCTUALITY,SUGGESTION) values(?,?,?,?,?,?,?,?)";
这些参数需要,然后才能执行SQL(它根本没有任何意义,而不在值被设置?
的地方)。
但是,你想没有设定参数,执行语句:
PreparedStatement pt = connection.prepareStatement(query);
pt.executeUpdate();
导致您所描述的错误。在这一点上执行这个陈述你打算做什么并不是很清楚。
此外,您正在尝试为查询和更新使用相同的语句对象。我不相信这会起作用。为查询创建一个单独的声明:
PreparedStatement queryStatement = connection.prepareStatement("SELECT * FROM LOGIN_USER.FACULTY_DETAILS");
ResultSet rs = queryStatement.executeQuery();
最后请注意,以pt.executeUpdate()
的后续调用,在if
块,也可能发生而不设置所有的参数,因为你从来没有在任何这些参数1号案例。您还需要将该参数设置为适当的值。
实际上我想要执行的是,我想检查标签名称是否在数据库中的名称相同,然后插入以下内容。所以我应该做什么,我应该以后执行查询.. –
@SankalpSrivastava你已经执行“查询”(这不是查询,它是一个插入)。我不知道为什么在获得所需的信息之前,你还试图执行它。 –
好吧,请帮助我提供我写的代码或线索 –
这里的问题是你正在准备一份声明,你将在设置你需要的细节之后使用它。 然后你试图执行一个executeUpdate()
这会期望值的设置。
解决方法:取出得到ResultSet
和PreparedStatement
设定值之前使用的executeUpdate()
。
private void SubmitActionPerformed(java.awt.event.ActionEvent evt) {
Connection connection;
PreparedStatement pt;
Statement st;
ResultSet rs;
try {
int flag = 1;
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (Exception ex) {
System.out.println("Error" + ex);
}
connection = DriverManager.getConnection("jdbc:derby://localhost:1527/loginDB", "login_user", "root");
String query = "INSERT into FACULTY_DETAILS (FACULTYNAME,LECTUREQUALITY,COMSKILLS,KNOWLEDGE,BEHAVIOUR,NOTESPROVIDED,PUNCTUALITY,SUGGESTION) values(?,?,?,?,?,?,?,?)";
pt = connection.prepareStatement(query);
st = connection.createStatement();
rs = st.executeQuery("SELECT * FROM LOGIN_USER.FACULTY_DETAILS");
while (rs.next()) {
if (rs.getString(1).equals(kapil.getText())) {
pt.setString(2, (String) javalec.getSelectedItem());
pt.setString(3, (String) javacomm.getSelectedItem());
pt.setString(4, (String) javaknow.getSelectedItem());
pt.setString(5, (String) javabeh.getSelectedItem());
pt.setString(6, (String) javanot.getSelectedItem());
pt.setString(7, (String) javapun.getSelectedItem());
pt.setString(8, javatext.getText());
pt.executeUpdate();
flag = 0;
} else if (rs.getString(1).equals(ziaul.getText())) {
pt.setString(2, (String) oslec.getSelectedItem());
pt.setString(3, (String) oscomm.getSelectedItem());
pt.setString(4, (String) osknow.getSelectedItem());
pt.setString(5, (String) osbeha.getSelectedItem());
pt.setString(6, (String) osnote.getSelectedItem());
pt.setString(7, (String) ospun.getSelectedItem());
pt.setString(8, ostext.getText());
pt.executeUpdate();
flag = 0;
} else if (rs.getString(1).equals(saurabh.getText())) {
pt.setString(2, (String) daalec.getSelectedItem());
pt.setString(3, (String) daacomm.getSelectedItem());
pt.setString(4, (String) daakno.getSelectedItem());
pt.setString(5, (String) daabeh.getSelectedItem());
pt.setString(6, (String) daanot.getSelectedItem());
pt.setString(7, (String) daapun.getSelectedItem());
pt.setString(8, daatext.getText());
pt.executeUpdate();
flag = 0;
} else if (rs.getString(1).equals(gayatri.getText())) {
pt.setString(2, (String) ecolec.getSelectedItem());
pt.setString(3, (String) ecocomm.getSelectedItem());
pt.setString(4, (String) ecokno.getSelectedItem());
pt.setString(5, (String) ecobeh.getSelectedItem());
pt.setString(6, (String) econot.getSelectedItem());
pt.setString(7, (String) ecopun.getSelectedItem());
pt.setString(8, ecotext.getText());
pt.executeUpdate();
flag = 0;
} else if (rs.getString(1).equals(tasleem.getText())) {
pt.setString(2, (String) clec.getSelectedItem());
pt.setString(3, (String) ccomm.getSelectedItem());
pt.setString(4, (String) cknow.getSelectedItem());
pt.setString(5, (String) cbeh.getSelectedItem());
pt.setString(6, (String) cnote.getSelectedItem());
pt.setString(7, (String) cpun.getSelectedItem());
pt.setString(8, ctext.getText());
pt.executeUpdate();
flag = 0;
} else if (rs.getString(1).equals(saurabhs.getText())) {
pt.setString(2, (String) graplec.getSelectedItem());
pt.setString(3, (String) grapcomm.getSelectedItem());
pt.setString(4, (String) grapknow.getSelectedItem());
pt.setString(5, (String) grapbeh.getSelectedItem());
pt.setString(6, (String) grapnot.getSelectedItem());
pt.setString(7, (String) grappun.getSelectedItem());
pt.setString(8, graphtext.getText());
pt.executeUpdate();
flag = 0;
} else if (rs.getString(1).equals(sanjay.getText())) {
pt.setString(2, (String) softlec.getSelectedItem());
pt.setString(3, (String) softcomm.getSelectedItem());
pt.setString(4, (String) softknow.getSelectedItem());
pt.setString(5, (String) softbeh.getSelectedItem());
pt.setString(6, (String) softnot.getSelectedItem());
pt.setString(7, (String) softpun.getSelectedItem());
pt.setString(8, softtext.getText());
pt.executeUpdate();
flag = 0;
}
if (flag == 0) {
JOptionPane.showMessageDialog(null, "Feedback Submitted Successfully");
}
}
} catch (SQLException ex) {
Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
} finally {
if (rs != null) {
rs.close();
}
if (st != null) {
st.close();
}
if (pt != null) {
pt.close();
}
if (connection != null) {
connection.close();
}
}
}
注:我在if
地方使用else if
避免重复条件检查。并且,终止块以避免内存泄漏
执行您的代码后,我收到以下错误:方法'executeQuery(字符串)'不允许在准备好的语句。 –
@SankalpSrivastava Wierd!我试过相同的代码,它为我工作。没问题!只需创建一条语句为您执行查询。我更新了代码中的答案。 – Sridhar
'pt.setString(1,....)'从未在您的代码中发生 –
请帮我解决方案.. ?? –
您已在下面为您解答问题。在设置James_D解释的值之前,您无法执行语句。 –