MATT在他的博客中发表了一篇介绍动态创建SQL语句的博文
。
在文中,他讲到了自己在使用IN操作符进行数据库查询的时候遇到的问题:根据外部传入的集合个数决定IN操作符中占位符“?”的个数。
MATT给出了他的解决办法:
import java.sql.Connection
import java.sql.DriverManager
import java.sql.SQLException
def list = getResult()
Connection connection = DriverManager.getConnection(
"jdbc:Oracle:thin:username/password@xyz:1521:abc")
Sql sql = new Sql(connection)
def query =
"select * from foo where id in (${'?, '*(list.size()-1)}?)"
sql.query query, list, {ResultSet rs ->
println rs.getLong("id"); // and other stuff from foo
}
sql.close()
关键在这句:
${'?, ' * (list.size()-1)}?
“${..}”里面是将“?, ”重复list.size()-1次,再加上后面一个“?”,刚好凑够了list.size()个“?”。
还有网友提出了其它的解决方法
(['?'] * list.size()).join(', ')
分享到:
相关推荐
在编程领域,动态拼接SQL语句是一种常见的技术,它允许程序在运行时根据需要构建SQL查询。在易语言这个中国本土化的编程环境中,动态拼接SQL同样具有重要的应用价值。易语言以其独特的汉字编程风格,降低了编程的...
SQL(Structured Query Language)是用于管理和操作...综上所述,掌握SQL语句和动态SQL的基本语法对于任何IT从业者来说都至关重要,无论是数据库管理员还是开发者,都需要熟练运用这些技能来高效地操作和管理数据库。
在ABAP编程中,SQL语句的动态操作是高级编程技术的一个重要方面,它允许根据程序运行时的条件和用户输入来构建和执行SQL查询。本程序“ZSQL_EXEC_RICOO”展示了如何使用ABAP实现动态SQL操作,包括SELECT、UPDATE、...
"Java使用注解拼接SQL语句"是一个常见的实践,它使得动态构建SQL查询变得更为简洁和可维护。这种技术通常与ORM(对象关系映射)框架如MyBatis或Hibernate结合使用,但也可以通过自定义处理逻辑实现。 1. **自定义...
【SQL Builder创建SQL语句的关键技术】 SQL Builder是Borland C++ Builder 6.0中的一个工具,它集成在TQuery控件中,能够帮助开发者自动生成复杂的SQL查询语句,无需手动编写大量SQL代码。这个工具尤其适用于对SQL...
动态SQL允许我们在运行时构建SQL语句,而不是在编译时。这意味着我们可以根据程序运行时的条件生成不同的SQL命令。这对于处理不确定的查询结构或执行基于变量的复杂查询尤其有用。 **2. 动态SQL的应用场景** - **...
从提供的文件内容来看,本文主要介绍了一种利用ADO(ActiveX Data Objects)技术在Visual C++(VC++)中动态创建SQL Server数据库的方法。本文详细描述了ADO技术的核心对象及其在创建数据库过程中的应用,并给出了...
11. **动态SQL**:动态SQL允许在运行时构造和执行SQL语句,常用于复杂或不确定的查询需求。书中会探讨其优点和潜在的安全风险。 12. **安全性与权限管理**:SQL Server提供了丰富的权限系统,控制用户对数据库的...
以上知识点涉及了PowerBuilder环境下动态SQL语句的概念、实现方法以及在编程过程中的应用和注意事项,为数据库开发者提供了在使用PowerBuilder进行数据库编程时,实现动态SQL语句的技术指导和参考。
在IT行业中,数据库操作是应用开发中的重要环节,而动态封装SQL语句和配置文件的调用与封装是提升程序灵活性、可维护性的重要技术手段。下面将详细讲解这两个概念及其应用。 首先,动态封装SQL语句指的是在运行时...
文章主要介绍了模拟SQL Builder创建SQL语句的关键技术,这些技术包括动态创建控件、异常处理技术以及泛型设计。下面详细阐述这些技术的原理及其实现方法。 首先,文章指出SQL(Structured Query Language)是一种...
在SQL的世界里,动态SQL(Dynamic SQL)是一种强大的工具,尤其对于处理复杂查询或需要根据运行时条件构建SQL语句的场景。对于SQL初学者来说,掌握动态SQL的基本语法是提高编程灵活性的关键步骤。让我们深入了解一下...
《SQLServer2008技术内幕:T-SQL查询》这本书深入探讨了SQL Server 2008中的Transact-SQL(T-SQL)查询语言,这是SQL Server数据库管理系统的核心部分,用于数据检索、更新、插入和删除。T-SQL不仅包含标准的SQL语法...
### 基于ADO技术动态创建SQLServer数据库 #### 引言 在现代软件开发中,尤其是涉及到数据处理的应用程序,经常会遇到需要处理临时性数据的情况。这些数据可能源自某个计算过程的中间结果,也可能涉及与其他系统...
总结,自动生成SQL语句在C#开发中是一项实用的技术,可以帮助我们简化数据库操作,提高代码的可读性和维护性。无论是使用ORM框架如Entity Framework,轻量级库如Dapper,还是手工构造或利用辅助库,都有其适用的场景...
- SQL语句:`SELECT * FROM student_info WHERE NOT EXISTS (SELECT * FROM student WHERE student_info.id = student.id) AND 系名称 = ‘’" & strDepartmentName & "’’ AND 专业名称 = ‘’" & ...
1. **创建SQL语句**:在数据库客户端,例如MySQL Workbench、Oracle SQL Developer或者SQL Server Management Studio中,我们可以编写和测试SQL语句,确保其正确性和效率。 2. **转成String**:将验证过的SQL语句...
通过阅读《Microsoft SQL Server 2005技术内幕:T-SQL查询》,读者可以全面掌握SQL Server 2005中的T-SQL查询技巧,无论你是初学者还是经验丰富的DBA,都能从中受益匪浅。这本书将帮助你编写更高效、更精确的查询,...