zoukankan      html  css  js  c++  java
  • SQL 引号中的问号在PrepareStatement 中不被看作是占位符

      SQL 引号中的问号在PrepareStatement 中不被看作是占位符。

      如:SELECT P.NAME, S.YEAR, S.QUANTITY FROM SALES S LEFT JOIN PRODUCT P ON S.PRODUCT_ID = P.ID WHERE P.NAME LIKE '%?%'

      会报java.sql.SQLException: 无效的列索引。

      可以用字符串拼接的方式处理,拼接可以是在SQL 上,也可以是在传参的时候处理。

      即

        一、SQL 改写为SELECT P.NAME, S.YEAR, S.QUANTITY FROM SALES S LEFT JOIN PRODUCT P ON S.PRODUCT_ID = P.ID WHERE P.NAME LIKE '%' || ? || '%'  (这是oracle 的写法)

        二、SQL 改写为SELECT P.NAME, S.YEAR, S.QUANTITY FROM SALES S LEFT JOIN PRODUCT P ON S.PRODUCT_ID = P.ID WHERE P.NAME LIKE ?

          传参时prepareStatement.setString(theIndex, "%" + param + "%");

  • 相关阅读:
    MYSQL
    spider
    git命令
    just_connect.py
    3sql
    4sql
    2sql
    springMVC3学习(六)--SimpleFormController
    springMVC3学习(五)--MultiActionController
    springMVC3学习(四)--访问静态文件如js,jpg,css
  • 原文地址:https://www.cnblogs.com/phoenix-smile/p/7442762.html
Copyright © 2011-2022 走看看