一、环境准备
1.1 达梦数据库安装
可访问达梦云适配中心下载试用,下载 DM8 数据库试用版并安装,安装步骤请参考数据库环境准备。
1.2 注册 ODBC 数据源
请参考通过 ODBC 连接数据库。
1.3 下载 Lua 源码
点击 luasql 下载源码。
二、配置 LuaSQL
2.1 解压 LuaSQL
unzip luasql-master.zip
2.2 修改配置文件
修改 odbc 配置参数。
cd luasql-master
vi config
DRIVER_LIBS_odbc ?= -L/usr/local/lib -lodbc //odbc动态链接库
DRIVER_INCS_odbc ?= -DUNIXODBC -I/usr/local/include //c头文件目录
2.3 生成 C 程序库
make odbc install
三、测试用例
3.1 测试连接
创建 test.lua 文件,测试连接的代码如下:
local luasql = require "luasql.odbc"
env = luasql.odbc()
con = env:connect ("DM8","SYSDBA","*****")
conn =assert(con)
if conn then
print("连接成功")
con:close()
else
print("连接失败")
end
env:close()
执行命令 lua test.lua
,结果如下:
3.2 测试插入
创建 test2.lua 文件,插入数据的代码如下:
local luasql = require "luasql.odbc"
env = luasql.odbc()
con = env:connect ("DM8","SYSDBA","*****")
conn =assert(con)
con:execute("DROP TABLE IF EXISTS SYSDBA.TEST01;")
local create_table_sql = [[
create table "SYSDBA"."TEST01"
(
"ID" INTEGER,
"NAME" VARCHAR(100)
);
]]
local res, err = conn:execute(create_table_sql)
if res then
print("Table created successfully!")
else
print("Failed to create table: " .. err)
end
local insert_sql = [[
INSERT INTO "SYSDBA"."TEST01" (ID, NAME) VALUES (1,'Alice');
INSERT INTO "SYSDBA"."TEST01" (ID, NAME) VALUES (2,'Bob');
]]
local res, err = conn:execute(insert_sql)
if res then
print("Data inserted successfully!")
else
print("Failed to insert data: " .. err)
end
local update_sql = "UPDATE SYSDBA.TEST01 SET ID = 31 WHERE NAME = 'Alice';"
local res, err = conn:execute(update_sql)
if res then
print("Data updated successfully!")
else
print("Failed to update data: " .. err)
end
local delete_sql = "DELETE FROM SYSDBA.TEST01 WHERE NAME = 'Bob';"
local res, err = conn:execute(delete_sql)
if res then
print("Data deleted successfully!")
else
print("Failed to delete data: " .. err)
end
cur = con:execute ("SELECT * FROM SYSDBA.TEST01;")
row = cur:fetch ({}, "a")
local result_set = {}
while row do
table.insert(result_set, row)
row = cur:fetch(row, "a")
end
cur:close()
con:close()
env:close()
for i, row in ipairs(result_set) do
for k, v in pairs(row) do
print(k, v)
end
print("-----")
end
执行命令 lua test.lua
,结果如下:
查看数据: