Groovy在线运行

版本:

所属目录
点击了解高性能代码运行API
运行结果
教程手册
代码仓库
极速运行
终端运行
图形+终端

                        
以下是用户最新保存的代码
收货需求日期 发布于:2024-04-03 18:44 成品宽表(分项目) 测试 发布于:2024-03-21 09:45 def result = [ msgCode: '' ] return result 发布于:2024-02-19 14:41 筛选存在和不存在的对象 发布于:2024-01-18 16:29 计算金蝶鉴权 发布于:2024-01-17 20:37 骨密度结果回传 发布于:2024-01-12 10:56 骨密度获取信息返回 发布于:2024-01-11 15:02 骨密度获取信息入参 发布于:2024-01-11 09:43 自动提交定金学费 发布于:2023-12-25 10:44 多条【定金/学费】合并为一条【协议收款】 发布于:2023-12-22 14:38 顾问业绩学费更新顾问业绩 发布于:2023-12-22 14:37 编辑学费更新收款的顾问业绩拆分 发布于:2023-12-22 14:36 学费编辑器效验 发布于:2023-12-22 13:35 自动生成排课明细 发布于:2023-12-12 09:13 根据排课日期生成日程 发布于:2023-12-11 10:17 排课排课效验 发布于:2023-12-11 09:13 排课排课效验 发布于:2023-12-08 15:15 线索线索分发 发布于:2023-12-07 15:32 获取钉钉花名册数据 发布于:2023-11-23 11:53 日期函数转换 发布于:2023-11-22 11:37 济南肺功能回写出参 发布于:2023-10-14 17:54 肺功能结果回传入参 发布于:2023-10-14 17:54 济南肺功能申请单出参 发布于:2023-10-14 17:18 济南肺功能获取申请单入参 发布于:2023-10-13 17:41 济南身高体重仪结果回写出餐 发布于:2023-10-09 14:48 身高体重仪结果回传入参 发布于:2023-10-09 15:34 身高体重仪信息查询返回 发布于:2024-01-11 14:32 济南获取身高体重信息 发布于:2023-10-20 15:49 新his查档返回 发布于:2023-09-11 17:20 老HIS取消计费出参 发布于:2023-09-04 19:28 老HIS取消计费入参 发布于:2023-09-04 19:28 老HIS计费返回 发布于:2023-09-04 19:28 杭州老HIS结算入参 发布于:2023-08-31 14:32 统一接口出参微脉 发布于:2023-08-25 15:00 新his查档 发布于:2023-10-17 16:40 统一接口入参微脉 发布于:2023-08-25 15:00 老his团检计费 发布于:2023-07-04 17:59 老his发票查询档案 发布于:2023-07-06 17:29 分组list,分批list 发布于:2023-06-12 12:42 老HIS发票 发布于:2023-07-06 17:30 麦迪克斯返参 发布于:2023-06-08 14:26 麦迪克斯申请单入参 发布于:2023-06-08 14:22 groovy测试 发布于:2023-06-06 10:57 老HIS新计费 发布于:2023-05-31 22:00 uf3.0生成oracle数据库用户名 发布于:2023-05-29 11:43 人体成份结果回传返回 发布于:2023-05-23 20:01 人体成份结果回传入参 发布于:2023-05-23 17:36 人体成份出参 发布于:2023-05-22 11:51 人体成份入参 发布于:2023-10-08 17:50 老HIS项目计费返回 发布于:2023-06-30 17:48 [更多]
显示目录

数据库



学习嵌入式的绝佳套件,esp8266开源小电视成品,比自己去买开发板+屏幕还要便宜,省去了焊接不当搞坏的风险。 蜂鸣版+触控升级仅36元,更强的硬件、价格全网最低。

点击购买 固件广场

数据库

Groovy的groovy-sql模块提供了比当前Java的JDBC技术更高级的抽象。Groovy sql API支持各种各样的数据库,其中一些如下所示。

  • HSQLDB
  • Oracle
  • SQL Server
  • MySQL
  • MongoDB

在我们的示例中,我们将使用MySQL DB作为示例。为了使用MySQL与Groovy,首先要做的是从mysql站点下载MySQL jdbc jar文件。 MySQL的格式如下所示。

mysql-connector-java-5.1.38-bin

然后,确保将上述jar文件添加到工作站中的类路径。

数据库连接

在连接到MySQL数据库之前,请确保以下内容 -

  • 你已经创建了一个数据库TESTDB。
  • 您在TESTDB中创建了一个表EMPLOYEE。
  • 此表格包含FIRST_NAME,LAST_NAME,AGE,SEX和INCOME。
  • 用户ID“testuser”和密码“test123”设置为访问TESTDB。
  • 确保已下载mysql jar文件并将该文件添加到类路径。
  • 你已经通过MySQL教程来了解MySQL基础

下面的示例显示如何连接MySQL数据库“TESTDB”。

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()  
   } 
}

运行此脚本时,会产生以下结果 -

5.7.10-log 
The Sql.newInstance method is used to establish a connection to the database.

创建数据库表

连接到数据库后的下一步是在数据库中创建表。以下示例显示如何使用Groovy在数据库中创建表。Sql类的execute方法用于对数据库执行语句。

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() 
   } 
}

插入操作

当您要将记录创建到数据库表中时需要。

例子

以下示例将在employee表中插入一条记录。代码放置在try catch块中,因此如果记录成功执行,事务将提交到数据库。如果事务失败,则执行回滚。

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 sqlstr = """INSERT INTO EMPLOYEE(FIRST_NAME,
         LAST_NAME, AGE, SEX, INCOME) VALUES ('Mac', 'Mohan', 20, 'M', 2000)""" 
      try {
         sql.execute(sqlstr);
         sql.commit()
         println("Successfully committed") 
      }catch(Exception ex) {
         sql.rollback()
         println("Transaction rollback") 
      }

      sql.close()
   } 
}

假设您只想根据条件选择某些行。以下代码显示如何添加参数占位符以搜索值。上面的例子也可以写成参数,如下面的代码所示。 $符号用于定义一个参数,然后可以在执行sql语句时将其替换为值。

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方法进行。

句法

eachRow(GString gstring, Closure closure)

执行给定的SQL查询调用,结果集的每一行给出闭幕。

参数

  • GString的 -这需要执行的SQL语句。

  • 封闭 -封闭语句来处理来自读操作retrived行。执行给定的SQL查询调用,结果集的每一行给出闭幕。

下面的代码示例演示了如何来从雇员表中的所有记录。

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])
      }  

      sql.close()
   } 
}

从上面的程序的输出将是 -

[Mac, Mohan, 20, M, 2000.0]

更新操作

任何数据库上进行更新操作手段来更新一个或多个记录,这已经在数据库中。下面的过程更新过性生活为“M”的所有记录。在这里,我们一岁增加所有男子的年龄。

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', 
         'test@123', 'com.mysql.jdbc.Driver')

      sql.connection.autoCommit = false
      def sqlstr = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = 'M'" 

      try {
         sql.execute(sqlstr);
         sql.commit()
         println("Successfully committed")
      }catch(Exception ex) {
         sql.rollback() 
         println("Transaction rollback")
      }

      sql.close()
   } 
}

删除操作

当你想从数据库中删除一些记录DELETE操作是必需的。以下是从哪里EMPLOYEE年龄超过20删除所有记录的过程。

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', 
         'test@123', 'com.mysql.jdbc.Driver')

      sql.connection.autoCommit = false
      def sqlstr = "DELETE FROM EMPLOYEE WHERE AGE > 20"

      try {
         sql.execute(sqlstr);
         sql.commit()
         println("Successfully committed")
      }catch(Exception ex) {
         sql.rollback()
         println("Transaction rollback")
      }

      sql.close()
   } 
}

执行事务

事务是确保数据一致性的机制。交易有以下四个属性 -

  • 原子性 -事务完成或根本没有任何事情发生。

  • 一致性 -事务必须以一致的状态开始,并使系统保持一致状态。

  • 隔离 -事务的中间结果在当前事务外部不可见。

  • 持久性 -一旦事务提交,即使系统发生故障,影响仍然持续。

这里是一个如何实现事务的简单示例。我们已经从DELETE操作的上一个主题中看到了这个示例。

def sqlstr = "DELETE FROM EMPLOYEE WHERE AGE > 20" 

try {
   sql.execute(sqlstr); 
   sql.commit()
   println("Successfully committed") 
}catch(Exception ex) {
   sql.rollback()
   println("Transaction rollback") 
} 
sql.close()

提交操作

提交操作是告诉数据库继续操作并完成对数据库的所有更改。

在我们的上述例子中,这是通过下面的语句实现 -

sql.commit()

回滚操作

如果您对一个或多个更改不满意,并希望完全还原这些更改,请使用回滚方法。在我们上面的例子中,这是通过以下语句实现的:

sql.rollback()

断开数据库

要断开数据库连接,使用Close方法。

sql.close()
由JSRUN为你提供的Groovy在线运行、在线编译工具
        JSRUN提供的Groovy 在线运行,Groovy 在线运行工具,基于linux操作系统环境提供线上编译和线上运行,具有运行快速,运行结果与常用开发、生产环境保持一致的特点。
yout