为了使我们的代码更加标准,我们被要求更改将SQL变量硬编码为预处理语句的所有位置,然后绑定变量。
但是我遇到了问题setDate()
。
这是代码:
DateFormat dateFormatYMD = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
DateFormat dateFormatMDY = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
Date now = new Date();
String vDateYMD = dateFormatYMD.format(now);
String vDateMDY = dateFormatMDY.format(now);
String vDateMDYSQL = vDateMDY ;
java.sql.Date date = new java.sql.Date(0000-00-00);
requestSQL = "INSERT INTO CREDIT_REQ_TITLE_ORDER (REQUEST_ID," +
" ORDER_DT, FOLLOWUP_DT) " + "values(?,?,?,)";
prs = conn.prepareStatement(requestSQL);
prs.setInt(1,new Integer(requestID));
prs.setDate(2,date.valueOf(vDateMDYSQL));
prs.setDate(3,date.valueOf(sqlFollowupDT));
执行SQL时出现此错误:
java.lang.IllegalArgumentException
at java.sql.Date.valueOf(Date.java:138)
at com.cmsi.eValuate.TAF.TAFModuleMain.CallTAF(TAFModuleMain.java:1211)
我应该setString()
改为使用to_date()
?
使用 java.sql.Date
如果表中的列类型为DATE:
java.lang.String
该方法java.sql.Date.valueOf(java.lang.String)
接收到一个字符串,该字符串代表格式的日期yyyy-[m]m-[d]d
。例如:
ps.setDate(2, java.sql.Date.valueOf("2013-09-04"));
java.util.Date
假设你有一个endDatetype
类型的变量java.util.Date
,则可以这样进行转换:
ps.setDate(2, new java.sql.Date(endDate.getTime());
当前
如果要插入当前日期:
ps.setDate(2, new java.sql.Date(System.currentTimeMillis()));
// Since Java 8
ps.setDate(2, java.sql.Date.valueOf(java.time.LocalDate.now()));
使用 java.sql.Timestamp
如果表中的列类型为TIMESTAMP或DATETIME:
java.lang.String
该方法java.sql.Timestamp.valueOf(java.lang.String)接收到一个字符串,该字符串代表格式的日期yyyy-[m]m-[d]d hh:mm:ss[.f...]
。例如:
ps.setTimestamp(2, java.sql.Timestamp.valueOf("2013-09-04 13:30:00");
java.util.Date
假设你有一个endDatetype类型的变量java.util.Date,则可以这样进行转换:
ps.setTimestamp(2, new java.sql.Timestamp(endDate.getTime()));
当前
如果你需要当前时间戳记:
ps.setTimestamp(2, new java.sql.Timestamp(System.currentTimeMillis()));
// Since Java 8
ps.setTimestamp(2, java.sql.Timestamp.from(java.time.Instant.now()));
ps.setTimestamp(2, java.sql.Timestamp.valueOf(java.time.LocalDateTime.now()));
问题内容: 为了使我们的代码更加标准,我们被要求更改将SQL变量硬编码为预处理语句的所有位置,然后绑定这些变量。 但是我遇到了问题。 这是代码: 我在执行SQL时收到此错误: 我应该改为使用? 问题答案: Using 使用 如果您的表的列类型为: 该方法接收到一个字符串,该字符串表示格式为日期的日期。例如: 假设您有一个type类型的变量,则可以这样进行转换: 当前的 如果要插入当前日期: Usi
为了使我们的代码更加标准,我们被要求将所有我们将SQL变量硬编码为准备好的语句的地方改为绑定变量。
问题内容: 有人可以解释如何使用完全准备好的使用dbcp的连接池吗?(如果可能,请提供一些示例代码)。我已经弄清楚了如何打开它- 将KeyedObjectPoolFactory传递给PoolableConnectionFactory。但是,那之后如何定义特定的准备好的语句呢?现在,我仅使用PoolingDataSource从池中获取连接。如何使用池中准备好的语句? 问题答案: 在谈论从池中获得连接
如果我们运行查询(带或不带where子句参数),它都能正常工作。 如果我们在准备好的语句中使用硬编码的参数运行查询,它也可以正常工作。 如果以编程方式设置prepared语句的参数,则不起作用。 以上测试确认JDBC连接正常工作。 使用PreparedStatement、JdbcTemplate或NamedParameterJdbcTemplate时也会出现相同的错误,因此我怀疑PreparedS
问题内容: 一直很麻烦的一件事是,当您具有PreparedStatement而不是查询本身时,记录SQL(JDBC)错误。 您总是会收到以下消息: 当然,我可以编写一个辅助方法来检索值并用实际值解析/替换问号(如果我没有得到这个问题的结果,很可能会走这条路),但是我只是想知道是否此问题已由其他人解决,并且/或者是否有任何通用的日志记录帮助程序可以自动为我完成此任务。 经过几个答案编辑: 到目前为止
问题内容: 由于某些奇怪的原因,我似乎无法将UTF-8数据添加到我的MySQL数据库中。输入非拉丁字符时,将其存储为?????。其他所有东西都存储良好。因此,例如,“ this is aexample®™”可以很好地存储,而“和英辞典”则存储为“ ????”。 连接网址很好: 正如您所料,我正在使用PreparedStatement,甚至有人尝试输入“ set names utf8”。 该表本身似