java - 在 spring jdbctemplate 中传递不带单引号的字符串

标签 java database spring oracle

我的要求是通过 Spring JDBCTemplate 创建一个插入语句,我可以在其中传递在数据库中执行的 oracle 函数。

例如 - 假设我有一个表 employee 具有列 enter_time(数据类型为数字(20))并且值将类似于 20170106213124630560。并且该表的插入语句类似于 -

insert into employee (ID, enter_time ) values (1, to_number(to_char(sys_extract_utc(systimestamp),'YYYYMMDDHH24MISSFF')));

我必须像这样从 spring JDBCTemplate 代码发送 enter_time -

preparedStatement.setString(1,"to_number(to_char(sys_extract_utc(systimestamp),'YYYYMMDDHH24MISSFF'))");

但是当我使用 setString() 时,值带有单引号并且无法执行 oracle 函数。也是当我尝试

 preparedStatement.setLong(1, to_number(to_char(sys_extract_utc(systimestamp),'YYYYMMDDHH24MISSFF')));

它在“YYYYMMDDHH24MISSFF”给出编译错误。

请帮助我如何编写代码,以便当 spring 创建插入语句时它可以直接在数据库上运行。

请帮助我找到解决方案。

最佳答案

您不需要将其设置为参数,因为您无需设置任何内容。 systimestamp 是 oracle 内置的。试试这个:

String sql = "insert into TEST_UTC_TIMESTAMP (ID, UTC_TIMESTAMP) values (?, to_number(to_char(sys_extract_utc(systimestamp),'YYYYMMDDHH2‌​4MISSFF')))";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, 2);
int n = ps.executeUpdate();

关于java - 在 spring jdbctemplate 中传递不带单引号的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41522319/

相关文章:

database - 清理 couchdb 并重新启动

java - 在 Spring Boot 数据休息应用程序中获取 EntityManager

java - 如何使用指数因子格式化十进制数?

java - 富文本编辑器

mysql - 如何在 DataGrip 中创建或连接到本地主机数据库?

Spring boot 和 Spring Data JPA @Transactional 不工作

spring - 如何在 SpringJunit4TestRunner 中将 @ComponentScan 与特定于测试的 ContextConfigurations 一起使用?

java - 用Java控制数据库中的数据

java - java中如何在函数返回之前等待某个回调方法被调用?

组合两个表的Sql查询