Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java sql更新/删除不执行任何操作_Java_Sql - Fatal编程技术网

java sql更新/删除不执行任何操作

java sql更新/删除不执行任何操作,java,sql,Java,Sql,我不知道这是不是地方,但我出主意了,下面是我的程序的更新代码,很简单,但由于某种原因是不起作用 private void txt_updateActionPerformed(java.awt.event.ActionEvent evt) { try{ String value1= txt_id.getText(); String value2= txt_title.getText(); String value3= txt_firstname.g

我不知道这是不是地方,但我出主意了,下面是我的程序的更新代码,很简单,但由于某种原因是不起作用

private void txt_updateActionPerformed(java.awt.event.ActionEvent evt) {
   try{
       String value1= txt_id.getText(); 
       String value2= txt_title.getText();
       String value3= txt_firstname.getText();
       String value4= txt_lastname.getText();

        String sql="update publishers set publisher_id='"value1"', publisher_title='"value2"', publisher_name='"value3"', publisher_lastname='"value4"' WHERE publisher_id='"value1"'";
        pst=conn.prepareStatement(sql);            
        pst.execute();
        JOptionPane.showMessageDialog(null, "Updated");
    }
    catch(Exception e){
        JOptionPane.showMessageDialog(null, e);
    }
    Update_table();  
}
我不知道出了什么问题。我试着改变一下,但没用。它在程序中工作,但实际上并不更新数据库。因此,当我重新启动程序时,一切都没有改变

好的,我也尝试了以下方法,但没有成功

private void txt_updateActionPerformed(java.awt.event.ActionEvent evt) {
   try{
       String value1= txt_id.getText(); 
       String value2= txt_title.getText();
       String value3= txt_firstname.getText();
       String value4= txt_lastname.getText();
         String sql="update publishers set publisher_id='" + value1 + "', publisher_title='" + value2 + "',publisher_name='" + value3 + "', publisher_lastname='" + value4 + "'WHERE publisher_id='" + value1 + "'";
        pst=conn.prepareStatement(sql);

        pst.execute();
        conn.setAutoCommit(true);
        JOptionPane.showMessageDialog(null, "Updated");
    }
    catch(Exception e){
        JOptionPane.showMessageDialog(null, e);
    }
    Update_table();  
}
这个呢

private void txt_updateActionPerformed(java.awt.event.ActionEvent evt) {
   try{


        String sql="update publishers set publisher_id=?, publisher_title=?, publisher_name=?, publisher_lastname=? WHERE publisher_id=?";

        pst=conn.prepareStatement(sql);
        pst.setString(1, txt_id.getText());
        pst.setString(2, txt_title.getText());
        pst.setString(3, txt_firstname.getText());
        pst.setString(4, txt_lastname.getText());
        pst.setString(5, txt_id.getText());

        pst.execute();
        conn.setAutoCommit(true);
        JOptionPane.showMessageDialog(null, "Updated");
    }
    catch(Exception e){
        JOptionPane.showMessageDialog(null, e);
    }
    Update_table();  
}
更新表如下所示

    private void Update_table(){
        try{
        String sql="select publisher_id, publisher_title, publisher_name, publisher_lastname from publishers";
        pst=conn.prepareStatement(sql);
        rs=pst.executeQuery();
        Table_Publishers.setModel(DbUtils.resultSetToTableModel(rs));
        }
        catch(Exception e){
            JOptionPane.showMessageDialog(null, e);
        }

   }

该代码看起来无法编译。改为使用preparedstatement的参数

  String sql="update publishers set publisher_id=?, publisher_title=?, publisher_name=?, publisher_lastname=? WHERE publisher_id=?";
    pst=conn.prepareStatement(sql);
    pst.setString(1, value1);
    pst.setString(2, value2);
    pst.setString(3, value3);
    pst.setString(4, value4);
    pst.setString(5, value1);
    pst.execute();

该代码不会编译,因为您没有在查询中正确连接字符串,应该是:

String sql="update publishers set publisher_id='"+value1+"', publisher_title='"+value2+"', publisher_name='"+value3+"', publisher_lastname='"+value4+"' WHERE publisher_id='"+value1+"'";

修改您的程序,以便使用:

Statement st = con.createStatement();
int updateCount = st.executeUpdate(sql);
if(updateCount <= 0) {
  System.out.println("Nothing update in database");
} else {
  System.out.println("Number of records updated: " + updateCount);
}
st.close();

是否存在实际错误?事实上,这段代码不应该编译。我明白你的意思,我在发布时做了一些更改。我已经按照下面的建议进行了尝试,但没有任何错误。看起来你的构建过程已经结束。您是否编译了正确的文件?那么您运行的文件是否正确?如果您在此函数中输出消息,会发生什么情况?您是收到消息还是什么也没有发生?对于
Update_table(),此方法是什么在catch块中使用
e.printStackTrace()
。而不是使用
pst.execute()尝试使用
pst.executeUpdate()您确定表中存在您提供的id吗?另外,请删除设置发布者_id=?从查询中,由于该字段没有更改,可能是一个自动递增字段。id在那里,我从querry WO中取出了字段,但没有任何结果
if(!con.getAutoCommit()) {
  con.commit();
}