这是我的代码2016-09-08 05:57:03.513
,这是我想要比较的日期 - 时间格式。
我认为转换有问题。
我想将所选行与sql列进行比较,其中我使用了getdate
函数,该函数具有上述类型的日期时间
try {
String buy_qty=qtycus.getText();
Integer bq= Integer.parseInt(buy_qty);
Integer aa = sell_outside_cus.getSelectedRow();
String rr=sid_sell.getSelectedItem().toString();
String dat = sell_outside_cus.getValueAt(aa,2).toString();
System.out.println(dat);
Date result;
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-mm-dd hh:mi:ss.mmm ");
try {
result = formatter.parse (dat);
System.out.println(result);
String namesup = sell_outside_cus.getValueAt(aa,4).toString();
Integer s_avilable=Integer.parseInt(namesup);
Integer rest= s_avilable-bq;
System.out.println(rest);
try {
String sql=("UPDATE supreg SET available_stock=('"+rest+"') where ((SupplementId='"+rr+"')AND(supadd_date='"+result+"'))");
pst = con.prepareStatement(sql);
rs= pst.executeQuery();
} catch(Exception e) {
JOptionPane.showMessageDialog(null, e);
}
} catch (ParseException ex) {
JOptionPane.showMessageDialog(null, ex);
}
} catch(Exception e) {
JOptionPane.showMessageDialog(null, e);
}
答案 0 :(得分:0)
你可以试试这个:
String sql = ("UPDATE supreg SET available_stock=? where ((SupplementId=?)AND(supadd_date=to_date(?, yyyy-mm-dd hh24:mi:ss))");
pst = con.prepareStatement(sql);
pst.setInt(1, rest);
pst.setString(2, dat);
rs = pst.executeQuery();
不要这样写:
String sql=("UPDATE supreg SET available_stock=('"+rest+"') where ((SupplementId='"+rr+"')AND(supadd_date='"+result+"'))");
因为这段代码错误的SQL注入
答案 1 :(得分:0)
我使用了一个getdate函数,它具有上面类型的日期时间
这不是真的!! GETDATE()
会返回类型安全DATETIME
。你看到的是为人类读者准备的字符串表示。使用哪种格式取决于文化设置。您永远不应该在字符串级别上比较日期/时间值...
在这一行中,您将通过在正确的位置连接所有值来创建命令,就像您在SSMS或SQL控制台中编写它一样。
String sql=("UPDATE supreg SET available_stock=('"+rest+"') where ((SupplementId='"+rr+"')AND(supadd_date='"+result+"'))");
这是一种不好的方法,因为
使用参数代替串联。这使它的类型安全可靠。
如果必须坚持这一点,则必须确保有效的字符串文字
DateTime可能会被放入这些格式(2016.12.31 23:59:59的所有示例)
为避免隐式演员,你应该写一些类似
的内容AND(supadd_date=CONVERT(DATETIME,'"+result+"',key))
虽然key
是您选择的格式from here, e.g. 126 for ISO8601
任何其他格式都可能导致例外或误解(例如2016-09-08可能是9月或8月的日期。这取决于系统的文化)。