跳到主要内容

批量执行SQL语句

命令说明

批量执行SQL语句,返回影响的结果数(select语句暂不支持返回操作影响行数),根据SQL属性进行批量。SQL语句占位符:MySQL、SQLServer、PostgreSQL使用%s,Sqlite3使用?,Oracle使用:1

命令原型

iRet = Database.ExecuteBatchSQL(objDatabase ,sql, optionArgs)

命令参数

参数必选类型默认值说明
objDatabaseTrueexpressionobjDatabase数据库对象,使用“创建数据库对象“命令(Database.CreateDB)创建的数据库对象
sqlTruestring""增删改SQL语句
argsFalseexpression[]SQL语句参数,遍历参数的二维数组循环执行SQL语句,SQL语句占位符:MySQL 、SQLServer、PostgreSQL都使用%s,Sqlite3使用?,Oracle使用:1

返回结果

iRet,将命令运行后的结果赋值给此变量。

运行实例

/*********************************批量执行SQL语句***************************************
命令原型:
iRet = Database.ExecuteBatchSQL(objDatabase ,sql, args)
入参:
objDatabase--数据库对象,使用“创建数据库对象“命令(Database.CreateDB)创建的数据库对象
sql--增删改SQL语句
args--SQL语句参数,遍历参数的二维数组循环执行SQL语句,SQL语句占位符:MySQL 、SQLServer、PostgreSQL都使用%s,Sqlite3使用?,Oracle使用:1
出参:
iRet--命令运行后的结果
注意事项:
数据库连接使用完后记得及时关闭
连接命令的charset参数需要与服务端保持一致
Oracle数据库的SQL与其他数据库略微有区别,使用Oracle时,SQL语句中表名、列名需要使用双引号,SQL尾部不能带‘;’分号
**********************************************************************************/
Dim objDatabase,sql,iRet
Dim ip,port,username,password,db

//*********************************MySQL***************************************
// 连接MySQL数据库
ip = "127.0.0.1"
port = "3306"
username = "root"
password = "rg+d2Wr8T+Dv10iQBk7VUw=="
db = "test"
objDatabase = Database.CreateDB("MySQL", {
"host": ip,
"port": port,
"user": username,
"password": password,
"database": db,
"charset": "utf8"
})
// 批量插入
sql = "INSERT IGNORE INTO `test` (`name`, `age`, `aa`, `bb`) VALUES (%s, %s, %s, %s);"
iRet = Database.ExecuteBatchSQL(objDatabase ,sql, {"args": [["test3", 12, 2, 2], ["test4", 12, 2, 2]]})
TracePrint(iRet)
// 关闭数据库连接
Database.CloseDB(objDatabase)

//*********************************PostgreSQL***************************************
// 连接PostGreSQL数据库
ip = "127.0.0.1"
port = "5432"
username = "root"
password = "rg+d2Wr8T+Dv10iQBk7VUw=="
db = "postgres"
objDatabase = Database.CreateDB("PostgreSQL", {
"host": ip,
"port": port,
"user": username,
"password": password,
"database": db
})
// 执行批量插入语句
sql = "INSERT INTO test (name, age, id) VALUES (%s, %s, %s);"
iRet = Database.ExecuteBatchSQL(objDatabase ,sql, {"args": [["test3", 12, 4],["test4", 13, 5]]})
TracePrint(iRet)
// 关闭数据库连接
Database.CloseDB(objDatabase)

//*********************************Sqlite3***************************************
// 连接Sqlite3数据库
objDatabase = Database.CreateDB("Sqlite3", {"filepath": '''D:\工作文档\sqlite\test.db'''})
// 执行批量插入语句
sql = "INSERT INTO test (name, age, id) VALUES (?, ?, ?);"
iRet = Database.ExecuteBatchSQL(objDatabase ,sql, {"args": [["test3", 12, 6],["test4", 13, 7]]})
TracePrint(iRet)
// 关闭数据库连接
Database.CloseDB(objDatabase)

//*********************************SQLServer***************************************
// 连接SQLServer数据库
ip = "127.0.0.1"
port = "1433"
username = "SA"
password = "rg+d2Wr8T+Dv10iQBk7VUw=="
db = "TestDB"
objDatabase = Database.CreateDB("PostgreSQL", {
"host": ip,
"port": port,
"user": username,
"password": password,
"database": db,
"charset": "utf8"
})
// 执行批量插入语句
sql = "INSERT INTO Inventory (name, quantity, id) VALUES (%s, %s, %s);"
iRet = Database.ExecuteBatchSQL(objDatabase ,sql, {"args": [["test3", 12, 3],["test4", 13, 4]]})
TracePrint(iRet)
// 关闭数据库连接
Database.CloseDB(objDatabase)

//*********************************Oracle***************************************
// 连接Oracle数据库
ip = "127.0.0.1"
port = "1521"
username = "oracle"
password = "OvUZIny9qZUrgJE0ho2tnQ=="
service_name = ""
sid = "helowin"
objDatabase = Database.CreateDB("Oracle", {
"host": ip,
"port": port,
"user": username,
"password": password,
"service_name": service_name,
"sid": sid,
"charset": "utf8"
})
// 执行批量插入语句
sql = '''insert into "student"("id","name","age") VALUES (:1, :1, :1)'''
iRet = Database.ExecuteBatchSQL(objDatabase ,sql, {"args": [[1, "test1", 11],[2, "test2", 22]]})
TracePrint(iRet)
// 关闭数据库连接
Database.CloseDB(objDatabase)

可视化样例