Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么赢了';我的查询运行不正常吗?每当我通过executeQuery方法传递字符串变量时,我都会得到一个错误_Java_Sql_Sum - Fatal编程技术网

Java 为什么赢了';我的查询运行不正常吗?每当我通过executeQuery方法传递字符串变量时,我都会得到一个错误

Java 为什么赢了';我的查询运行不正常吗?每当我通过executeQuery方法传递字符串变量时,我都会得到一个错误,java,sql,sum,Java,Sql,Sum,行中有一个错误,表示ps=stmt.executeQuery();。。。。错误表示接口语句中的方法executeQuery无法应用于给定类型; 必需:字符串 找到:没有参数 原因:实际参数列表和正式参数列表长度不同 但每当我将字符串传递到该行时,我都会收到一个错误,即在准备好的语句中不允许使用java.sql.SQLException:Method'executeQuery(String)' 此方法用于添加SQL表列中所有整数值的按钮 private void btnCalculateActio

行中有一个错误,表示ps=stmt.executeQuery();。。。。错误表示接口语句中的方法executeQuery无法应用于给定类型; 必需:字符串 找到:没有参数 原因:实际参数列表和正式参数列表长度不同

但每当我将字符串传递到该行时,我都会收到一个错误,即在准备好的语句中不允许使用java.sql.SQLException:Method'executeQuery(String)'

此方法用于添加SQL表列中所有整数值的按钮

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();这就是发生错误的地方