更新表中的一列并插入新行。 sqlite,java

时间:2018-08-22 12:20:03

标签: java sql jdbc sql-update sql-insert

我在修改表中的数据时遇到一些问题。 我需要更新特定表中的整个列,如果没有足够的行,则需要插入更多的行。

更确切地说,用户将能够在包含来自db的当前数据的文本区域中,从界面修改数据。 我将所有文本放在列表中,每一行代表列表的一个元素。

在某一列中,我必须遍历每一行并使用列表项对其进行修改。如果文本区域中的行多于该表中的行数,则需要插入新行,其中将包含列表中的其余项。

如果有人可以帮助我,我将不胜感激。 谢谢!

 @FXML
    public void modify() throws SQLException {

        String col= selectNorme.getValue().toString();
        String text=texta.getText();

        List<String>  l1notes= new ArrayList<>( Arrays.asList( text.split("\r\n|\r|\n")  ));

        Statement stmt=null;

        String client = this.clientCombobox.getValue().toString();
        String tab1Client= client+ "_" +this.selectLang1.getValue().toString();

        String query="SELECT * FROM "+tab1Client+" WHERE ["+ selectNorme.getValue().toString()+ "]= "+col+"";
        String sqlUpdate1= "UPDATE  ["+tab1Client+"] SET ["+ this.selectNorme.getValue().toString() +"] = ?";

        try {
            Connection conn = dbConnection.getConnection();

            PreparedStatement modif=conn.prepareStatement(sqlUpdate1);
            int i=0;

            if (rss.next()) {

                stmt = conn.createStatement();
                rss = stmt.executeQuery(query);

                stmt.executeUpdate(sqlUpdate1);
                modif.setString(1, l1notes.get(i));
                i++;
                modif.execute();
            }
            else {
                
                PreparedStatement pstmt = conn.prepareStatement("INSERT INTO ["+this.clientCombobox.getValue().toString()+"_"+this.selectLang1.getValue().toString()+"] (["+ this.selectNorme.getValue().toString() +"]) values (?)" );
             


                for (int row=i; row< l1notes.size(); row++)
                {

                    pstmt.setString(1, l1notes.get(row));
                    pstmt.executeUpdate();
                }

            }
        }
        finally {

            try {
         
                if (conn !=null)
                    conn.close();
                }
            catch (SQLException se){
                se.printStackTrace();
            }
        }

    }

0 个答案:

没有答案