繁体   English   中英

在 java.netbeans 和 mysql 中插入数据时出错

[英]error insert data in java netbeans and mysql

我是一名学习编程的初学者,我试图将所学知识应用到java中的应用示例中,但遇到了问题。 我希望你能找到解决办法。 当我向 combobox (combo_produits) 插入数据时,它没有给我指定的值,代码没有错误,但是尽管使用了 function getSelectedIndex(),但 combobox 没有给我们所需的值。


/*method of combobox combo_produits */
   private void combo_PRODUIT() {

       try {
           String qyP = "SELECT CONCAT(NOM_COM,'  ',lib_court,' ',DOSAGE ,' ',UNITE , ' ', CONDIT)AS DESIGNATION "
                   + "FROM produit  JOIN forme USING(cd_forme) ";
           prs_sort = connectio.prepareStatement(qyP);
           rs_sort = prs_sort.executeQuery();
           while (rs_sort.next()) {
               combo_produits.addItem(rs_sort.getString("DESIGNATION"));

           }

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

   }

/* button of insert */
    private void valider_bpActionPerformed(java.awt.event.ActionEvent evt) {                                           

       int pharID = 0;
       int donid = 0;
       int lotID = 0;
       int prodid= 0 ;

       try {
           String qr1 = "insert into tbl_pharmacien (NOM_PHARM) values ('" + combo_pharm.getSelectedItem() + "')";
           prs_sort = connectio.prepareStatement(qr1, prs_sort.RETURN_GENERATED_KEYS);
           prs_sort.executeUpdate();
           rs_sort = prs_sort.getGeneratedKeys();
           while (rs_sort.next()) {

               pharID = rs_sort.getInt(1);
           }

           String qr2 = "insert into donner_medic (PHARM_ID , DATE_ECHANDONN) values "
                   + "('" + pharID + "', '" + new SimpleDateFormat("yyyy-MM-dd").format(date_prod_sort.getDate()) + "' )";
           prs_sort = connectio.prepareStatement(qr2, prs_sort.RETURN_GENERATED_KEYS);
           prs_sort.executeUpdate();
           rs_sort = prs_sort.getGeneratedKeys();
           while (rs_sort.next()) {

               donid = rs_sort.getInt(1);

              
           }

           int index =combo_produits.getSelectedIndex();
           

           String qr3 = " insert into tbl_lot (NUM_ENR,PPA, QNT) values "
                   + "('" +index  + "', '" + txtf_ppa.getText() + "', '" + txt_Qnt.getText() + "' )";
           prs_sort = connectio.prepareStatement(qr3, prs_sort.RETURN_GENERATED_KEYS);
           prs_sort.executeUpdate();
           rs_sort = prs_sort.getGeneratedKeys();
           while (rs_sort.next()) {

               lotID = rs_sort.getInt(1);
           }

           String qr4 = "insert into tbl_donnelot (LOT_ID,DONN_ID) values ('" + lotID + "', '" + donid + "')";
           prs_sort = connectio.prepareStatement(qr4);
           prs_sort.executeUpdate();

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

       Table_prod_sort();
   }                            

例如,让我们用学生的名字创建一个组合框:首先,我们用学生的名字和 id 为他工作 class,然后我们执行 Setter、getter 和 Constructor 函数。 其次,我们创建一个 function 将数据库与学生的 class 链接起来,因此:

public class class_array {
         private Connection co=get_connection.ConnDb() ;
  private  PreparedStatement prst ;
   private ResultSet res ;
    
     public HashMap<String, Integer> fillCombobox(){
        String sqls = "SELECT `ID_student`, `Name_student` FROM `student`";
    HashMap<String, Integer> hmp = new HashMap<String, Integer>();
       try {
           prst = co.prepareStatement(sqls);
           res = prst.executeQuery();
           student st ;
           while(res.next()){
               st = new student(res.getInt(1), res.getString(2));
               hmp.put(st.getName_stud(), st.getId_stu());
           }
       } catch (SQLException ex) {
           Logger.getLogger(student_f.class.getName()).log(Level.SEVERE, null, ex);
       }
    
    return hmp ;
    }}

第三,在表单中,我们编写组合框内容显示 function,如下所示:

private void combo(){
        class_array std = new class_array();
     HashMap<String, Integer> hmp = std.fillCombobox();
        for (String cb :hmp.keySet()) {
            combo_st.addItem(cb);
        }
        
    }

最后,和前面的例子一样,我们要使用 combobox 的最后一个选择,所以我们写如下:

 private void bp_valid_indexActionPerformed(java.awt.event.ActionEvent evt) {                                               
       
        class_array stb = new class_array();
        HashMap<String,Integer> has = stb.fillCombobox();
        int index = has.get(combo_st.getSelectedItem().toString()).toString();
    } 

我找到了解决方案,它在于显示 combobox 的内容并将其链接到他的 ID 号,这样当我们使用 getSelectedItem 时,会使用他的 ID 选择 combobox 的值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM