Rexx - 数据库
Rexx 能够使用下面列出的各种数据库。
- HSQLDB
- Oracle
- SQL Server
- MySQL
- MongoDB
点击以下链接即可找到Rexx数据库的所有信息 − https://rexxsql.sourceforge.net/
在我们的示例中,我们将使用 MySQL DB 作为示例。 因此,第一步是确保从 Rexx SQL 站点下载所需的驱动程序,以便 Rexx 程序可以相应地使用 SQL。 因此,请按照后续步骤确保Rexx程序可以与MySQL数据库配合使用。
步骤 1 − 从 Rexx 站点转至以下驱动程序下载页面 − https://sourceforge.net/projects/rexxsql/files/rexxsql/2.6/
步骤 2 − 下载 MYSQL 驱动程序 - rxsql26B3_my_w32_ooRexx
步骤 3 − 将内容解压到本地计算机。
步骤 4 − 将解压文件夹的路径添加到您计算机上的路径变量中。
对于所有后续示例,请确保以下指针已就位 −
您已创建数据库 TESTDB。
您已在 TESTDB 中创建了一个表 EMPLOYEE。
该表包含字段 FIRST_NAME、LAST_NAME、AGE、SEX 和 INCOME。
设置用户 ID"testuser"和密码"test123"来访问 TESTDB。
确保您已下载 mysql jar 文件并将该文件添加到类路径中。
您已完成 MySQL 教程
数据库连接
要建立数据库连接,首先需要Rexxsql DLL,然后使用SQLConnect函数建立与数据库的连接。 下面给出了如何实现这一点的语法和示例。
语法
SQLConnect(cname,username,password,dbname)
参数
cname − 这是为连接指定的名称。
username − 连接数据库的用户名。
password − 连接数据库的密码。
dbname − 要连接的数据库架构。
返回值
等于0的值表示数据库连接成功。
示例
/* 主程序 */ Call RxFuncAdd 'SQLLoadFuncs', 'rexxsql', 'SQLLoadFuncs' Call SQLLoadFuncs say SQLConnect(c1,' testuser ',' test123','testdb')
上述程序的输出如下所示。
0
创建数据库表
连接到数据库后的下一步是在我们的数据库中创建表。 以下示例显示如何使用 Rexx 在数据库中创建表。 Rexx SQL 中的所有命令均通过使用 SQLCommand 函数执行。
语法
SQLConnect(sname,statement)
参数
sname − 这是要执行的语句的名称。
statement − 这是需要对数据库执行的语句。
返回值
值等于 0 表示命令成功。
示例
/* 主程序 */ Call RxFuncAdd 'SQLLoadFuncs', 'rexxsql', 'SQLLoadFuncs' Call SQLLoadFuncs if SQLConnect(c1,'testuser','test123','testdb') == 0 then say 'Connect Succedded' if SQLCommand(u1,"use testdb") == 0 then say 'Changed database to testdb' sqlstr = 'create table employee (first_name char(20) not null, last_name char(20),age int, sex char(1), income float)' if SQLCommand(c2,sqlstr) == 0 then say 'Employee table created'
上述程序的输出如下所示。
Connect Succedded Changed database to testdb Employee table created
对数据库表的操作
以下类型的操作最常在数据库表上执行。
序号 | 操作 & 描述 |
---|---|
1 | 插入操作
当您想要将记录创建到数据库表中时,这是必需的。 |
2 | 读操作
对任何数据库的读取操作都意味着从数据库中获取一些有用的信息。 |
3 | 更新操作
任何数据库上的 UPDATE 操作都意味着更新数据库中已有的一条或多条记录。 |
4 | 删除操作
当您想从数据库中删除某些记录时,需要执行 DELETE 操作。 |
5 | 关闭连接
以下命令可用于关闭与数据库的连接。 |
执行事务
事务是一种确保数据一致性的机制。 事务具有以下四个属性 −
原子性 − 一个事务是一个不可分割的工作单位,事务中包括的许多操作要么都做,要么都不做。
一致性 − 事务必须是使数据库从一个一致性的状态变到另外一个一致性状态。一致性与原子性的密切相关的。
隔离性 − 一个事务的执行不能被其他事务干扰。既一个事务内部操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能相互干扰。
持久性 − 持续性也称永久性。指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的,接下来的其他操作或者故障对其没有任何的影响。
这是一个如何实现事务的简单示例。
示例
/* 主程序 */ Call RxFuncAdd 'SQLLoadFuncs', 'rexxsql', 'SQLLoadFuncs' Call SQLLoadFuncs if SQLConnect(c1,'testuser','test123','testdb') == 0 then say 'Connect Succedded' if SQLCommand(u1,"use testdb") == 0 then say 'Changed database to testdb' sqlstr = "DELETE FROM EMPLOYEE WHERE AGE > 20" if SQLCommand(c2,sqlstr) == 0 then if sqlcommit() == 0 then say committed
上述程序的输出如下所示。
Connect Succedded Changed database to testdb COMMITTED
提交操作
提交操作告诉数据库继续操作并完成对数据库的所有更改。 在上面的示例中,这是通过以下命令实现的。
Sqlcommit()
回滚操作
如果您对一项或多项更改不满意,并且想要完全恢复这些更改,请使用回滚方法。 在上面的示例中,这是通过以下命令实现的。
SqlRollback()