java - Java 中非常奇怪的 PreparedStatement?

标签 java sql jdbc prepared-statement

我今天在一个程序中发现了一个非常奇怪的 PreparedStatement 来处理我收到的错误。顺藤摸瓜,发现了一些令人费解的SQL。现在,我不是 SQL 或 PreparedStatements 的高手,但这似乎是非常错误的。我还应该提到,这适用于同事的计算机,但不适用于我的计算机。

static final String SELECT_UNCOMPLETE_TASKS_FOR_UPGRADE =
"SELECT i.employeeid, i.taskid, i.itptaskarchivecd, i.itptaskstartdt, i.itptaskcompletiondt,t.taskobsoletecd, "
+ "t.taskknowledgetx, t.taskProductid, t.taskrfrncid, t.taskcorecd, t.taskwartimecd, t.parentheaderid, "
    + "t.taskparentindcd, i.itptaskstatuscd, i.itptaskarchivedt, t.certified "
    + "FROM itptask i,task t "
    + "WHERE (i.itptaskcompletiondt is NULL "
        + "AND i.employeeid = ?1 "
        + "AND i.taskid = t.taskid "
        + "AND i.itptaskarchivecd = ?2 "
        + "AND t.taskproductcd = ?3 "
        + "AND t.taskobsoletecd = ?4 "
        + "AND t.taskcorecd = ?5) "
    + "OR (i.employeeid = ?6 "
        + "AND i.taskid = t.taskid "
        + "AND 'T' = t.taskparentindcd "
        + "AND t.taskproductcd = ?7)";

我的问题很简单,参数占位符(问号)后面的数字是干什么用的?如果这是完全不正确的语法,那么什么可以让它在另一个工作区/环境中工作?任何和所有帮助将不胜感激。谢谢。

最佳答案

该特定语法看起来特定于 JPA 语法。在 JPA 中,您可以指定 ?# 通过查询对象指定参数索引。

Query myQuery = entityManager.createNativeQuery("select * from my_table where foo = ?1 and bar = ?2");

q.setParameter(1,myFoo);
q.setParameter(2,myBar);

关于java - Java 中非常奇怪的 PreparedStatement?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24518052/

相关文章:

java - 登录设计器后的 Tooltwist 堆栈跟踪 : "com.dinaa.xpc.XpcConfigException: Unknown user type: ' phinza'"

java - 如何在android中使用自动完成文本

sql - 如何查找末尾带有特殊字符的列数据

sql - Postgresql 如何以正确的顺序获得此排名顺序

MySQL - 如何将此表减少到总成本?

postgresql - 无法为 Keycloak 配置 postgreSQL 数据源

java - 在字符串中查找子字符串的位置(不是 indexOf)

java - 从数据库中获取值后如何清除 jComboBox

sql - 在我的表、存储过程和 SQL Server View 中查找文本

java - 如何解决此错误 : The data types text and varchar are incompatible in the equal to operator?