根据第一个表格列中的数据从单独的表中选择列

时间:2015-12-16 16:54:35

标签: java mysql sql netbeans mysql-workbench

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

Appointment Table

Treatment Table

我有一个文本框供用户输入他们的patientID,当按下搜索按钮时,应用程序将在数据库中查询患者的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);
    }
}

1 个答案:

答案 0 :(得分:0)

你压倒了你的一个变量。

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

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

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

事实上,再次仔细观察,你已经在实际准备之前执行了你的陈述。