【问题标题】:Select column from separate tables based on data from first table's column根据第一个表的列中的数据从单独的表中选择列
【发布时间】:2016-03-22 22:10:57
【问题描述】:

我正在尝试根据第一个查询从单独的表中选择数据。

Appointment Table

Treatment Table

我有一个文本框供用户输入他们的患者 ID,当按下搜索按钮时,应用程序将在数据库中查询患者的 ID 号,并在左侧的名称表和应用程序下显示治疗名称还将根据所进行的治疗搜索相关费用并将其显示在右侧。 我当时只能在应用程序上显示一个查询,我不知道为什么它不能同时运行这两个查询。

private void button_SearchActionPerformed(java.awt.event.ActionEvent evt) {                                              
                // when this is clicked total costs loads
                //by adding all of the costs column
    try{
    String str = field_PatientNumber.getText();
    int f = Integer.parseInt(str);
    String sql = "SELECT TreatmentName FROM Appointment WHERE PatientID='"+ f +"'";
    String sql2 = "SELECT Cost FROM Treatment WHERE Name IN (SELECT TreatmentName FROM Appointment WHERE PatientID='"+ f +"')";
    //String treatmentName = rs.getString("TreatmentName");

    //System.out.println(treatmentName);
    //String sql2 = "SELECT Cost FROM Treatment where Name='"+ treatmentName +"'";
    rs = stmt.executeQuery(sql);
    rs2 = stmt.executeQuery(sql2);
    stmt = con.prepareStatement(sql);       
    stmt = con.prepareStatement(sql2);
    jTableName.setModel(DbUtils.resultSetToTableModel(rs));
    jTableCost.setModel(DbUtils.resultSetToTableModel(rs2));

    double s=0;
        for(int i=0;i<jTableCost.getRowCount();i++){
        String d= jTableCost.getValueAt(i, 0).toString();
        double d1=Double.parseDouble(d);
        s+=d1;
        }

        String totalCost = String.valueOf(s);
        field_TotalCosts.setText(totalCost);

    }
    catch(Exception e){
     JOptionPane.showMessageDialog(null, e);
    }
}

【问题讨论】:

标签: java mysql sql netbeans mysql-workbench


【解决方案1】:

你正在覆盖一个你的变量。

stmt = con.prepareStatement(sql);       
stmt = con.prepareStatement(sql2);

http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html 显示一个示例,但在这种情况下它们是分开的- 引用:

...
updateSales = con.prepareStatement(updateString);
updateTotal = con.prepareStatement(updateStatement);

事实上,再仔细观察一下,您已经在实际准备语句之前执行了语句。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-15
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    • 2019-04-30
    相关资源
    最近更新 更多