0

現在、病院管理システムのプロジェクトに取り組んでいます。私は医者と患者の 2 つのテーブルを持っており、それらの間にリンク テーブル Visits を作成しました。医師テーブルと患者テーブルの主キーは、それぞれ Visits テーブルの外部キーです。コードから医師のテーブルを更新できます。レコードが患者テーブルに挿入されるたびに、医師テーブルがチェックされ、割り当てられた医師が存在するかどうかが確認されます。医師が存在し、訪問テーブルに挿入が行われる場合。このために、Patients テーブルにトリガーを作成しました。患者を登録しようとするたびに、患者テーブルが更新されますが、コードはMySQLException「列数が行 1 の値数と一致しません」というメッセージをスローします。

コード

        this.stmt=this.mycon.createStatement();
         String query_add_patient="insert into patients values    ('"+nic+"','"+name+"','"+address+"','"+city+"',"+age+",'"+dob+"','"+telephone+"');";

        String query_select_employees="select * from employees where employee_type='Doctor' and employee_qualification='"+doctor+"'";
        ResultSet rs=this.stmt.executeQuery(query_select_employees);
        if(!rs.next()) {
            JOptionPane.showMessageDialog(this, "This Doctor is not available in this facility!!!","Admin Error",JOptionPane.ERROR_MESSAGE);
            return false;
        }
        rs.first();
        String pattern = "yyyy-m-d";
        SimpleDateFormat format = new SimpleDateFormat(pattern);
        String enic=rs.getString("employee_nic");
        System.out.println(enic);
        String query="insert into Visits (patient_nic,employee_nic) values ("+nic+","+enic+")";

        this.stmt.executeUpdate(query_add_patient);
        closeConnection();
        openConnection();
        this.stmt=mycon.createStatement();
        this.stmt.executeUpdate(query);
        return true;

ここで、「訪問に挿入」というステートメントが問題を引き起こします。接続を閉じて再度開いてみましたが、うまくいきませんでした。私の訪問テーブルの構造は

訪問

  patient_nic (varchar(45)) FK  --> patient.patient_nic
  employee_nic (varchar(45)) FK --> employee-->employee_nic
4

1 に答える 1

0

列名がそれぞれ一致する値を持ち、その逆であることを確認してください。

例えば

  Good
   $query = "INSERT INTO table (first_name, last_name)
      VALUES(Mr,Kyaw)";
   Bad
   $query = "INSERT INTO table (first_name, last_name)
      VALUES(Mr,Kyaw,Thu)"; //can give Column Count Does Not Match Value Count At Row 1 exception
于 2013-01-13T10:08:02.923 に答える