`
joe_zhjiang
  • 浏览: 156164 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

关于PreparedStatement中in的使用

    博客分类:
  • jdbc
SQL 
阅读更多
错误代码:
String[] names = new String[]{'name1','name2','name3'};
StringBuffer buffer = new StringBuffer();
buffer.append(names[0]).append(",").append(names[1]).append(",").append(names[2]);
String sql = "select e.* from employee e where e.name in (?)";
rs = pstmt.excuteQuery(sql);
pstmt.setString(1,buffer.toString());

上面的sql会被翻译成:select e.* from employee e where e.namme in {name1,name2,name3}
这{name1,name2,name3}会被当成一个变量,即一串字符,逗号也是字符的一部分,
所以它会到数据库中查是否有name为'name1,name2,name3'的记录
正确代码:
String[] names = new String[]{'name1','name2','name3'};
String sql = "select e.* from employee e where e.name in (?,?,?)";
rs = pstmt.excuteQuery(sql);
pstmt.setString(1,names[0]);
pstmt.setString(2,names[1]);
pstmt.setString(3,names[2]);

上面的sql会被翻译成:select e.* from employee e where e.namme in (name1,name2,name3)
它会到数据库中查是否有name为'name1','name2'或者为'name3'的记录
分享到:
评论

相关推荐

    使用PreparedStatement访问数据库

     包含于PreparedStatement对象中的SQL语句具有一个或多个IN参数。IN参数的值在SQL语句创建时未被指定。该语句为每一个IN参数保留一个问号(“?”)作为占位符。每个问号的值必须在语句执行之前,通过适当的Setxxx...

    JSP中的PreparedStatement对象操作数据库的使用教程

    包含于 PreparedStatement 对象中的 SQL 语句可具有一个或多个 IN 参数。IN参数的值在 SQL 语句创建时未被指定。相反的,该语句为每个 IN 参数保留一个问号(“?”)作为占位符。每个问号的值必须在该语句执行之前...

    NamedParameterPreparedStatement:使用参数名称而不是参数索引位置准备和执行 SQL 的库

    假设,在 PreparedStatement 中,用户参数表示为“?” 并使用位置标识(给定参数在给定的多个“?”集中的位置是多少,在处理索引号时会变得复杂)。 ## Solution If Hiberate is used, with the help of query ...

    Java数据库编程宝典2

    第2部分 在两层客户/服务器结构中使用JDBC和SQL 第5章 使用JDBC和SQL创建表 5.1 创建数据库 5.2 使用表 5.2.1 记录和字段、行和列 5.2.2 SQL数据类型 5.2.3 完整性约束 5.3 创建表 5.4 使用JDBC创建表 ...

    Java数据库编程宝典4

    第2部分 在两层客户/服务器结构中使用JDBC和SQL 第5章 使用JDBC和SQL创建表 5.1 创建数据库 5.2 使用表 5.2.1 记录和字段、行和列 5.2.2 SQL数据类型 5.2.3 完整性约束 5.3 创建表 5.4 使用JDBC创建表 ...

    Java数据库编程宝典1

    第2部分 在两层客户/服务器结构中使用JDBC和SQL 第5章 使用JDBC和SQL创建表 5.1 创建数据库 5.2 使用表 5.2.1 记录和字段、行和列 5.2.2 SQL数据类型 5.2.3 完整性约束 5.3 创建表 5.4 使用JDBC创建表 ...

    Java数据库编程宝典3

    第2部分 在两层客户/服务器结构中使用JDBC和SQL 第5章 使用JDBC和SQL创建表 5.1 创建数据库 5.2 使用表 5.2.1 记录和字段、行和列 5.2.2 SQL数据类型 5.2.3 完整性约束 5.3 创建表 5.4 使用JDBC创建表 ...

    JDBC 3.0数据库开发与设计

    4.2.2 IN、OUT及INOUT参数的使用 4.2.3 执行CallableStatement Object对象 4.2.4 CallableStatement对象使用实例 4.2.5 SQL Server存储过程编程经验技巧 4.3 成批更新(BatchedUpdate) 4.3.1 成批更新所使用的...

    c++ 连接 mysql 官方文档

    Create the City Table in the test Database for Code Examples ?Testing the MySQL Database Connectivity With the Connector/C++ ?Using Prepared Statements ?Using Transactions ?Accessing Result Set ...

    java经典面试2010集锦100题(不看你后悔)

    下列关于构造方法的说法中错误的是:(选择1项) A) 构造方法的可以被重载。 B) 构造方法不可以有返回类型,但是可以有参数。 C) 构造方法的名字必须与类名相同。 D) 构造方法不可以被覆盖。 题目28:c 所有的异常...

    java笔试题编程-note:学习笔记

    [JDBC为什么要使用PreparedStatement而不是Statement](./note/java/Why use PreparedStatement in Java JDBC .md) [Java为什么需要Lambda表达式(-)](./note/java/Why W Need Lambda Expressions in Java Part2.md)...

    解决oracle 驱动bug: preparestatement ArrayIndexOutOfBounds

    In Oracle Metalink (Oracle's support site - Note ID 736273.1) I found that this is a bug in JDBC adapter (version 10.2.0.0.0 to 11.1.0.7.0) that when you call preparedStatement with more than 7 ...

    mysql 的安装及操作的课件

    MySQL installation and configuration, operation MySQL database, the concept and commonly used interface JDBC, use Statement and PreparedStatement, use the ResultSet access database, Swing operated in ...

    二十三种设计模式【PDF版】

    使用类再生的两个方式:组合(new)和继承(extends),这个已经在 thinking in java中提到过. 设计模式之 Proxy(代理) 以 Jive 为例,剖析代理模式在用户级别授权机制上的应用 设计模式之 Facade(门面?) 可扩展的使用...

    数据库工具类DatabaseUtil.java

    * Description: 将大部分的数据库操作放入这个类中, 包括数据库连接的建立, 自动释放等. * * * @author beansoft 日期: 2004年04月 * @version 2.0 */ public class DatabaseUtil { /** 数据库连接 */ ...

    拦截器和控制器的区别

    5、拦截器是包裹在过滤器中使用的。 复习 converter 转换器 i18n struts2 spring MVC 拦截器 interceptor 过滤器 filter web.xml implements filter filterchain arg2.doFilter(req,resp); 监听器 servlet...

    java面试800题

    答案是否定的,比如在这个列中使用‘%sdfd%’来进行模糊查询 Q0034 给定了一些创建数据库试图的SQL语句问什么条件下才可以对试图执行修改,增加,删除操作 特别强调了WITH CHECK OPTION这个约束的含义,使用,...

    大数据java操作hive.pdf

    "造的数据"已经分好类 # 字段分割符是逗号 # 数组类型分隔符是^号 # map数据类型分割符是冒号 tom,18,lol^篮球^⾳乐,father:tom1^mother:lili,US^LOS^16 ⽤load上传本地数据到表中 load data local inpath '/usr/...

    面经:亿联网络(yealink)

    总体感受:  感觉面试非常标准,面试官问的题目多,深度浅,感觉是以量取胜,30min,大厂的面试题...5.PreparedStatement使用两次,需要两次close()吗? 6.反问环节 其他记不清了,期待有下文 作者:wusimin432503

    java7源码-coder-tools:开发者的工具箱,包含各种第三方类库,示例

    PreparedStatement的sever和client端区别 for UPDATE和lock IN share mode net-library bio nio aio udp netty gRPC email http client Httpclient4 HttpAsyncClient OkHttpClient Spark unirest spring-library ...

Global site tag (gtag.js) - Google Analytics