不执行数据库更新

时间:2013-11-22 10:52:38

标签: java jdbc sql-update prepared-statement

PreparedStatement st = con.prepareStatement("update schedule set date='"+date+"',stime='"+stime+"',etime='"+etime+"',hall='"+hall+"',loc='"+loc+"' where dept='"+dept+"' and code='"+code+"' ");
            st.setString(6,loc);
            st.setString(7,hall);
            st.setString(8,date);
            st.setString(9,stime);
            st.setString(10,etime);
            st.executeUpdate();
            fwd="success";
            return(fwd)

它不会返回成功。代码中有问题吗?

4 个答案:

答案 0 :(得分:2)

您需要使用占位符(?)。这就是为什么你首先选择PreparedStatment,以避免SQL注入。

PreparedStatement st = con.prepareStatement("update schedule set date = ? ..");
// st.setDate(paramIndex, value);
st.setDate(1, new Date()); // first index

同样,对于您想要设置的每个值,您需要放置占位符并相应地设置值。参数索引在1处开始。

答案 1 :(得分:1)

试试这个。。您还要确保查询正确。我假设查询有效。

PreparedStatement st = con.prepareStatement("update schedule set date=?,stime=?,etime=?,hall=?,loc=? where dept=? and code=? ");

            st.setString(1,date);
            st.setString(2,stime);
            st.setString(3,etime);
            st.setString(4,hall);
            st.setString(5,loc);
            st.setString(6,date);
            st.setString(7,code);

            st.executeUpdate();

答案 2 :(得分:0)

表是合适的表吗?那么你必须将它指向你想改变的领域,如

PreparedStatement st = con.prepareStatement("update schedule set date='"+date+"',stime='"+stime+"',etime='"+etime+"',hall='"+hall+"',loc='"+loc+"' where dept='"+dept+"' and code='"+code+"' where scheduleId="+scId); 

答案 3 :(得分:-1)

谢谢大家...

PreparedStatement st = con.prepareStatement("update schedule set date='"+date+"',stime='"+stime+"',etime='"+etime+"',hall='"+hall+"',loc='"+loc+"' where dept='"+dept+"' and code='"+code+"' ");

      int result=st.executeUpdate();
      if(result==1)            
             fwd="success";
       else
             fwd="fail";
       return(fwd);