如何在jdbc中更新值?

时间:2014-01-15 13:44:02

标签: java jdbc

当我尝试更新日期字段的值时,我收到异常java.lang.illegalargumentexception。我有一个SQL数据库,它有2个时间戳字段格式(0000-00-00 00:00:00)。

这是我的HTML代码:

<%=stade%>=2014-01-19 21:43:20.0
<%=edate%>=2014-08-31 01:45:03.0

StartDate</span>
<input type="text" name="sdate" maxlength="25" size="25"id="demo2" value="<%=sdate%>"><a href="javascript:NewCal('demo2','ddmmmyyyy',true,24)"></a>

ExpireDate
<input type="Text" id="demo1" name="edate"maxlength="25" size="25" value="<%=edate%>"><a href="javascript:NewCal('demo1','ddmmmyyyy',true,24)"></a>
                 <

我希望如果我不在这些字段中进行任何更改,那么edade和sdate插入的实际值会另外更新值插入

updade.jsp

<%
    String edate=request.getParameter("edate");
    String sdate=request.getParameter("sdate");

    try
    {
        String s1;
        String s2;
        Format formatter;
        Date d2=new Date(sdate);
        Date d1 = new Date(edate);
        Date date = new Date();
        formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        s = formatter.format(date);
        s1 = formatter.format(d1);
        s2=formatter.format(d2);
        out.println("\n"+s1);
        out.println("\n"+s2);
        psmnt= cn.prepareStatement("update Councel set StartDate=?,ExpireDate=? where CouncelRegNo=?");
        psmnt.executeUpdate(); 
        out.println("Student updated successfully");
    }
    catch(Exception e)
    {
        out.print("try not allowed"+e);
    }
%>

1 个答案:

答案 0 :(得分:3)

看看这段代码:

psmnt= cn.prepareStatement("update Councel set StartDate=?,ExpireDate=? where CouncelRegNo=?");
psmnt.executeUpdate(); 

您正在准备一个包含三个参数的声明,但不是设置其中任何一个。

此外,我建议将时间戳视为文本 - 相反,它们应该是适当的时间戳/日期时间/数据库中的任何字段,您应该避免将它们视为文本。您执行的字符串转换越多,您将使其中一个变得更加混乱的风险。

你应该避免使用已被弃用多年的Date(String)构造函数。

哦,并且更喜欢在首次使用时声明变量,而不是事先声明所有内容,然后然后分配值......