将所选行插入mysql

时间:2015-05-08 03:00:45

标签: java mysql

已编辑我已更改了SQL代码并且可以正常运行,但我得到了异常: “无法设置null tableModell

我见过许多非常相似的例子但不是我需要的例子。 因此,我们走了:

很简单 - 在InternalFrame中我插入Code,ProjectName,Teamleiter,Description并单击“Teilnehmer”以列出表“tbl_teinehmer”中所有项目的所有成员。只显示姓氏。

因此,我将对应的数据插入到字段中,列出项目成员并选择将参与我正在创建的新项目的成员。

为了将数据和选定行插入新表

   private void buttonAnlegenActionPerformed(java.awt.event.ActionEvent evt) {                                              
            String data = tbl_teilnehmer.getValueAt(tbl_teilnehmer.getSelectedRow(), 0).toString();
            String sql = "INSERT INTO TBL_PROJETO (PROJEKT_ID, PROJEKTNAME, TEAMLEITER, BESCHREIBUNG,**TEILNEHMER**)"; //now it works but I get the exception: cannot set a null TableModell.
                    + "  VALUES(?,?,?,?,?)";
            menu = new HauptMenu();
            try{
                PreparedStatement pst = conn.prepareStatement(sql);
                pst.setString(1, ct.getText());
                pst.setString(2, nt.getText());
                pst.setString(3, st.getText());
                pst.setString(4, beschreibungText.getText());
                pst.setString(5, data);
                pst.execute();
                menu.listaProjetos();
                JOptionPane.showMessageDialog(null, "Projekt added to Database");

            }
            catch(Exception e){
                System.out.println(e);
            }
            try{
                conn.close();
            }catch(SQLException ex){
                JOptionPane.showMessageDialog(null, ex.getMessage());
            }
            ct.setText("");
            nt.setText("");
            st.setText("");

        } 

这是错误:

  java.sql.SQLException: Parameter index out of range (5 > number of parameters, which is 4).

问题可能来自PreparedStatemend声明。 我已经设定了

pst.setString(5, data);

因为它会识别变量数据中的选定行,但我认为这是错误的。

3 个答案:

答案 0 :(得分:1)

按如下方式进行

 pst.setString(0, ct.getText());
 pst.setString(1, nt.getText());
 pst.setString(2, st.getText());
 pst.setString(3, beschreibungText.getText());
 pst.setString(4, data);

答案 1 :(得分:1)

谢谢你的帮助! 我首先通过更改SQL声明来解决问题:

首先在我放置了“+ data +”',这是一个占位符(如果我没记错的话)但我想将所选行设置为相应的列在DB 。 因此,我已将其更改为列名:TEILNEHMER,并将另一个问号“”设置为 VALUE

虽然有效,但我仍然收到错误>> 无法设置null TableModel 并在此错误下>> 不支持的排序规则'Latin7'或者像那样。

所以我已经将我的表的排序从Lati7设置为TableDefault,现在它完全有效。

非常感谢您帮助我!

答案 2 :(得分:0)

5th parameter查询中没有sql的占位符:

String sql = "INSERT INTO TBL_PROJETO (PROJEKT_ID, PROJEKTNAME, TEAMLEITER, BESCHREIBUNG,'"+data+"')"
             + "  VALUES(?,?,?,?,?)";