执行SQL语句
命令说明
执行SQL语句,返回影响的结果数(select语句暂不支持返回操作影响行数)。SQL语句占位符:MySQL、SQLServer、PostgreSQL使用%s,Sqlite3使用?,Oracle使用:1
命令原型
iRet = Database.ExecuteSQL(objDatabase ,sql, optionArgs)
命令参数
参数 | 必选 | 类型 | 默认值 | 说明 |
---|---|---|---|---|
objDatabase | True | expression | objDatabase | 数据库对象,使用“创建数据库对象“命令(Database.CreateDB)创建的数据库对象 |
sql | True | string | "" | 增删改SQL语句 |
args | False | expression | [] | SQL语句参数,SQL语句占位符:MySQL和SQLServer使用%s,Sqlite3使用?,Oracle使用:1 |
返回结果
iRet,将命令运行后的结果赋值给此变量。
运行实例
/*********************************执行SQL语句***************************************
命令原型:
iRet = Database.ExecuteSQL(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.ExecuteSQL(objDatabase ,sql, {"args": ["test2", 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.ExecuteSQL(objDatabase ,sql, {"args": ["test", 12, 3]})
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.ExecuteSQL(objDatabase ,sql, {"args": ["test", 12, 3]})
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.ExecuteSQL(objDatabase ,sql, {"args": ["test5", 130, 5]})
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.ExecuteSQL(objDatabase ,sql, {"args": [1, "test1", 11]})
TracePrint(iRet)
// 关闭数据库连接
Database.CloseDB(objDatabase)