特殊的需求,在GRAILS调用GROOVY SQL直接做数据更新、插入和删除,如何控制原子事务?
比较特殊的处理方案(如果有更好的方案,还请赐教)。
场景:SQL是用DATASOURCE创建的。
描述:因为设置是否自动提交是由CONNECTION处理的,但是直接用dataSource来创建,是没法得到connection的引用,所以必须用如下方式:
def dbTran = new groovy.sql.Sql(dataSource)
def con = dbTran.createConnection()
def db = new groovy.sql.Sql(con)
try{
con.autoCommit = false
db.execute("delete from rcbinfo")
db.insert.........
con.commit()
}catch(Exception e){
con.rollback()
}finally{
con.autoCommit = true
}
import groovy.sql.Sql
class MyFancySqlController {
def dataSource // the Spring-Bean "dataSource" is auto-injected
def list = {
def db = new Sql(dataSource) // Create a new instance of groovy.sql.Sql with the DB of the Grails app
def result = db.rows("SELECT foo, bar FROM my_view") // Perform the query
[ result: result ] // return the results as model
}
}
分享到:
相关推荐
在Groovy中,`groovy.sql`包提供了方便的API来执行对数据库的CRUD(创建、读取、更新、删除)操作。本文将深入探讨如何使用Groovy进行数据库交互,以H2内存数据库为例。 首先,我们需要配置数据库连接。在Groovy中...
在Android环境中,由于安全限制,你可能需要使用`AsyncTask`或其他异步机制来执行数据库操作,避免阻塞UI线程。 ```java String url = "jdbc:db2://your_server:port/your_database"; String user = "your_...
你可以创建一个`@Repository`注解的接口来使用JPA(Java Persistence API),或者直接使用`JdbcTemplate`或`NamedParameterJdbcTemplate`来执行SQL语句。 例如,使用`JdbcTemplate`执行SQL: ```java import org....
本教程将通过一个简单易懂的示例来介绍如何在Android项目中使用ORMSQL进行数据存储和查询。 ### ORM概念 ORM全称为Object-Relational Mapping,即对象关系映射,它是一种技术,用于将关系数据库的数据模型与面向...
配置完成后,你就可以在Java代码中使用`java.sql.DriverManager`来建立与DB2的连接,如下所示: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public ...
在Android开发中,直接连接Microsoft SQL Server数据库是一个相对复杂的过程,因为Android系统原生并不支持直接与SQL Server交互。但通过一些技术手段,我们可以实现这一目标。以下是一些关键知识点和步骤: 1. **...
总的来说,理解和正确使用DB2的JDBC驱动对于Java开发者来说至关重要,它确保了Java应用能够高效、稳定地与DB2数据库进行交互。通过合理配置和管理这些JAR文件,可以有效地提升项目的可维护性和兼容性。
本篇文章将详细介绍如何在Android应用中使用DBSQLite进行数据的增删改查操作,并提供相关的测试方法。 首先,我们需要在Android项目中引入SQLite的相关库。通常,我们可以通过在build.gradle文件中添加以下依赖来...
本文将详细介绍如何在Android应用中使用Sqlcipher对sqlite数据库进行加解密。 首先,你需要在你的项目中集成Sqlcipher库。通常,可以通过Gradle依赖管理来添加Sqlcipher的依赖。在你的app级别的build.gradle文件中...
这个过程可以通过使用Groovy的流式API和闭包来进一步优化,提高代码的可读性和效率。此外,如果数据量巨大,考虑分批处理或者使用存储过程可能会更有效率。 在提供的压缩包"通过groovy自定义函数实现提取明细表字段...
它允许Java程序员使用SQL语言进行数据操作。在Android中,JDBC被用来创建与数据库之间的桥梁,但需要注意的是,由于Android的安全模型,不是所有的JDBC驱动都支持。 jdts.jar是一个开源的JDBC驱动,专为在Java环境...
然后在需要使用的地方注入`DaoSession`,调用对应的方法进行数据库操作。例如,插入用户数据: ```java User user = new User(); user.setName("John Doe"); user.setAge(25); MyApplication app = (MyApplication)...
它允许开发者用类似Java对象的方式来操作数据库,减少了对SQL语句的依赖。通过继承SugarRecord或使用注解,你可以快速地创建模型类,然后直接保存、查询和删除数据。 在这个项目中,开发者可以看到Groovy如何与...
在实际应用中,为了提高性能和安全性,建议使用预编译的`PreparedStatement`而非`Statement`来执行SQL语句。这可以防止SQL注入攻击,并允许数据库优化查询。 对于简单的增加操作,你可以调用`executeQuery`方法,...
ORM(Object-Relational Mapping,对象关系映射)是一种技术,它允许开发者用面向对象的方式来操作数据库,避免了直接编写SQL语句的繁琐过程。本文将详细介绍如何在Android中进行数据库ORM的封装,并通过一个名为`...
LitePal提供了强大的ORM(Object-Relational Mapping)功能,允许开发者通过简单的Java对象与数据库表进行映射,无需编写SQL语句即可完成数据的增、删、改、查操作。下面我们将详细探讨如何在Android应用中使用LitePal...
动态查询允许开发者使用Groovy的闭包来构建复杂的查询条件,而静态查询则提供了更直观的SQL语句转换,便于理解和调试。 4. **事务处理**:在需要保证数据一致性的操作中,事务是非常重要的。GORM_ADO模块通过`with...
通过使用 GreenDao,开发者可以将 Java 对象直接映射到数据库表,避免了手动编写 SQL 语句,提高了开发效率和代码可读性。 ### 1. 安装与配置 在 Android 项目中使用 GreenDao 首先需要添加其依赖。在 `build....
在应用中,你可以直接使用生成的DAO类来操作数据库: ```java // 获取DaoSession DaoSession daoSession = getDaoSession(); // 插入用户 User user = new User(); user.setName("John Doe"); user.setAge(25); ...
在Android应用开发中,使用GreenDao可以极大地提高开发效率,减少对SQL语句的直接操作。 ### 1. 安装与引入 首先,你需要在项目的build.gradle文件中添加GreenDao的依赖。目前最新的版本可以通过Gradle的依赖管理...