通过connection直接执行sql语句,sql执行完成后会自动提交事务。//执行sql语句,创建表
if _, err := db.Exec("CREATE TABLE " + tbl_name + " (name_spainish VARCHAR2(100) not null, name_chinesses VARCHAR2(100), name_russian VARCHAR2(100))"); err != nil {
return err
}
//执行sql,插入数据
if _, err = db.Exec("INSERT INTO " + tbl_name +
" (name_spainish, name_chinesses, name_russian) " +
" VALUES (" + ttst_strings + ")"")"); err != nil {
return err
}
- 通过绑定参数执行sql,sql执行完成后会自动提交事务。
_,err = db.Exec("create table tst_batchbind (id real, name varchar(20))")
if err != nil {
return err
}
// 创建statement
stmt, err = db.Prepare("insert into tst_batchbind values (:1,:2)")
if err != nil {
return err
}
// 批量绑定参数执行sql
var intput = [5][2]driver.Value {{1.2,"Golus"}, {2.3, "Bonus"}, {3.5, "Franj"}, {4.6, "Wliian"}, {5.7, "Dous"}}
for _,value := range intput {
_, err = stmt.Exec(value[0], value[1])
if err != nil {
return err
}
}
- 通过事务块执行sql,通过事务块整体结束后整体提交事务。
//创建事务块
tx, err := db.Begin()
if err != nil {
return err
}
//执行sql
if _,err := db.Exec("create table tst_autocommit (id bigint, name char(30))"); err != nil {
return err
}
if _,err := tx.Exec("insert into tst_autocommit values (3, 'Golus')"); err != nil {
return err
}
if _,err := tx.Exec("insert into tst_autocommit values (4, 'Hellen')"); err != nil {
return err
}
//提交事务
if err := tx.Commit(); err != nil {
return err
}
- 通过事务块执sql,通过事务块进行回滚。
//创建事务块
tx, err := db.Begin()
if err != nil {
return err
}
//执行sql
if _,err := tx.Exec("insert into tst_autocommit values (5, 'WELLROM')"); err != nil {
return err
}
if _,err := tx.Exec("insert into tst_autocommit values (6, 'Bobi')"); err != nil {
return err
}
//回滚事务
if err := tx.Rollback(); err != nil {
return err
}
- 多条sql拼接成一条长sql执行,执行时需遵循以下约束:
- 多条sql之间应以分号进行分割。
- sql中不能出现绑定参数。
- sql中不支持PL类型语句,如存储过程、匿名块等。
- 不支持SELECT语句,如果存在SELECT语句,拼接成的长sql可正常执行但不会有返回值。
if _,err := db.Exec("create table tstMultisql(f1 int)"); err != nil {
return err
}
if _,err :=db.Exec("insert into tstMultisql values(1);insert into tstMultisql values(2);insert tstMultisql values(4);select * from tstMultiSql;update tstMultisql set f1=3 where f1=2;delete from tstMultisql where f1=4;"); err != nil {
return err
}
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。