Java 为什么赢了';我的查询运行不正常吗?每当我通过executeQuery方法传递字符串变量时,我都会得到一个错误
行中有一个错误,表示ps=stmt.executeQuery();。。。。错误表示接口语句中的方法executeQuery无法应用于给定类型; 必需:字符串 找到:没有参数 原因:实际参数列表和正式参数列表长度不同 但每当我将字符串传递到该行时,我都会收到一个错误,即在准备好的语句中不允许使用java.sql.SQLException:Method'executeQuery(String)' 此方法用于添加SQL表列中所有整数值的按钮Java 为什么赢了';我的查询运行不正常吗?每当我通过executeQuery方法传递字符串变量时,我都会得到一个错误,java,sql,sum,Java,Sql,Sum,行中有一个错误,表示ps=stmt.executeQuery();。。。。错误表示接口语句中的方法executeQuery无法应用于给定类型; 必需:字符串 找到:没有参数 原因:实际参数列表和正式参数列表长度不同 但每当我将字符串传递到该行时,我都会收到一个错误,即在准备好的语句中不允许使用java.sql.SQLException:Method'executeQuery(String)' 此方法用于添加SQL表列中所有整数值的按钮 private void btnCalculateActio
private void btnCalculateActionPerformed(java.awt.event.ActionEvent evt) {
try{
String SQL = "SELECT SUM(PRICE) FROM MENU";
stmt = con.prepareStatement(SQL);
ps = stmt.executeQuery();
if(ps.next()) {
String total = ps.getString("SUM(PRICE)");
textTotalCost.setText(total);
}
}
catch (SQLException err) {
JOptionPane.showMessageDialog(null, err);
}
}
问题更改后更新
SQL语句中没有为计算列SUM(PRICE)
明确指定列名。它几乎不会是“总和(价格)”。尝试命名您的列。另外,prepareStatement
在传递参数时也很有用。简单的Select
不需要它:
private void btnCalculateActionPerformed(java.awt.event.ActionEvent evt) {
try{
String SQL = "SELECT SUM(PRICE) As PRICE_TOTAL FROM MENU";
Statement stmt = con.createStatement();
ResultSet ps = stmt.executeQuery(SQL);
if(ps.next()) {
String total = ps.getString("PRICE_TOTAL");
textTotalCost.setText(total);
}
}
catch (SQLException err) {
JOptionPane.showMessageDialog(null, err);
}
}
或按列索引而不是名称访问值:
private void btnCalculateActionPerformed(java.awt.event.ActionEvent evt) {
try{
String SQL = "SELECT SUM(PRICE) FROM MENU";
Statement stmt = con.createStatement();
ResultSet ps = stmt.executeQuery(SQL);
if(ps.next()) {
String total = ps.getString(0);
textTotalCost.setText(total);
}
}
catch (SQLException err) {
JOptionPane.showMessageDialog(null, err);
}
}
获取数据时必须使用列名
谢谢我不完全理解您的描述,但我认为您正在尝试分配在中创建的PreparedStatement
stmt = con.prepareStatement(SQL)
到语句(stmt)类型的变量,而这正是导致错误的原因。上面的代码行之所以有效,是因为PreparedStatement是语句的扩展(或实现),但
ps = stmt.executeQuery();
失败,因为class语句没有不带参数的executeQuery方法,PreparedStatement有。
的解决方案和其他建议都很好(sum(price)的别名或按列索引获取值),如果可以使用常规语句的话。另一种方法是在原始代码中将stmt的类型更改为PreparedStatement。在哪一行出现错误?这个问题的框架很差。您是否尝试将
MQL
更改为SQL
?我在写ps=stmt.executeQuery(MQL);”的行中得到一个错误;。另外,当我将MQL更改为SQL时,仍然出现了一个错误。请提供有关该错误的详细信息。当我通过executeQuery方法传递字符串变量并运行该程序,然后单击该方法对应的按钮时,会出现一个错误,称为method'executeQuery(string)'not allowed on prepared Statement当我没有通过executeQuery方法传递字符串变量并运行程序时,我得到一个错误,上面写着“Exception in thread”AWT-EventQueue-0“java.lang.RuntimeException:不可编译的源代码-错误的符号类型:java.sql.Statement.the line ps=stmt.executeQuery(MQL);实际上应该是ps=stmt.executeQuery();这就是发生错误的地方