前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Groovy-16.数据库

Groovy-16.数据库

作者头像
悠扬前奏
发布2019-05-30 20:19:46
3930
发布2019-05-30 20:19:46
举报

Groovy中的Groovy-sql API支持各种各样的数据库,包括:

  • HSQLDB
  • Oracle
  • SQL Server
  • MySQL
  • MongoDB

jar包

以MySql为例,需要下载的jar包为:

代码语言:javascript
复制
mysql-connector-java-5.1.38-bin

连接

以下代码连接了一个

  • 本地
  • 接口为3306
  • 库名为TESTDB
  • 连接名为testuser
  • 密码为test123
  • 驱动为com.mysql.jdbc.Driver

的数据库

代码语言:javascript
复制
import java.sql.*; 
import groovy.sql.Sql 

class Example {
   static void main(String[] args) {
      // Creating a connection to the database
      def sql = Sql.newInstance('jdbc:mysql://localhost:3306/TESTDB', 
         'testuser', 'test123', 'com.mysql.jdbc.Driver')
            
      // Executing the query SELECT VERSION which gets the version of the database
      // Also using the eachROW method to fetch the result from the database
   
      sql.eachRow('SELECT VERSION()'){ row ->
         println row[0]
      }
        
      sql.close()  
   } 
} 

建表

写好sql的字符串。以sql实例的execute方法执行即可。

代码语言:javascript
复制
import java.sql.*; 
import groovy.sql.Sql 

class Example { 
   static void main(String[] args) {
      // Creating a connection to the database
      def sql = Sql.newInstance('jdbc:mysql://localhost:3306/TESTDB', 'testuser',  
         'test123', 'com.mysql.jdbc.Driver')
            
      def sqlstr = """CREATE TABLE EMPLOYEE ( 
         FIRST_NAME CHAR(20) NOT NULL,
         LAST_NAME CHAR(20),
         AGE INT,
         SEX CHAR(1),
         INCOME FLOAT )""" 
                            
      sql.execute(sqlstr);
      sql.close() 
   } 
}

插入

$定义一个参数。在执行sql语句的时候替换为值:

代码语言:javascript
复制
import java.sql.*; 
import groovy.sql.Sql
 
class Example {
   static void main(String[] args) {
      // Creating a connection to the database
      def sql = Sql.newInstance('jdbc:mysql://localhost:3306/TESTDB', 'testuser', 
         'test123', 'com.mysql.jdbc.Driver')
            
      sql.connection.autoCommit = false  
      
      def firstname = "Mac"
      def lastname ="Mohan"
      def age = 20
      def sex = "M"
      def income = 2000  
        
      def sqlstr = "INSERT INTO EMPLOYEE(FIRST_NAME,LAST_NAME, AGE, SEX, 
         INCOME) VALUES " + "(${firstname}, ${lastname}, ${age}, ${sex}, ${income} )"
            
      try {
         sql.execute(sqlstr);
         sql.commit()
         println("Successfully committed") 
      } catch(Exception ex) {
         sql.rollback()
         println("Transaction rollback")
      }
        
      sql.close()
   }
}

使用SQL类的eachRow方法进行读操作。

代码语言:javascript
复制
eachRow(GString gString, Closure closure) 
  • gString:待需要执行的SQL语句。
  • closure:闭包,用来处理来自读操作的数据行。
代码语言:javascript
复制
import java.sql.*; 
import groovy.sql.Sql
 
class Example {
   static void main(String[] args) {
      // Creating a connection to the database
      def sql = Sql.newInstance('jdbc:mysql://localhost:3306/TESTDB', 'testuser', 
         'test123', 'com.mysql.jdbc.Driver')  
            
      sql.eachRow('select * from employee') {
         tp -> 
         println([tp.FIRST_NAME,tp.LAST_NAME,tp.age,tp.sex,tp.INCOME])
      }  // [Mac, Mohan, 20, M, 2000.0]
      sql.close()
   } 
}

更新,删除

UPDATE和DELETE操作都是写好SQL然后通过execute执行,但是需要commit()提交(在后文“提交”中介绍)。

事务

事务是保持数据一致性的机制,包括以下四种属性:

  • 原子性
  • 一致性
  • 隔离
  • 持久性

为了保证事务机制,需要有:

  • 提交操作sql.commit(),用于通知数据库完成操作
  • 回滚操作sql.close(),用于还原更改

断开连接

记得断开连接:

代码语言:javascript
复制
sql.close()
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.05.29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • jar包
  • 连接
  • 建表
  • 插入
  • 更新,删除
  • 事务
  • 断开连接
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档