绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
数据库开发指南-基于GO开发(4)
2020-04-26 09:21:31

执行SQL语句

  • 通过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[], 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执行,执行时需遵循以下约束:

  • 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
    }
    • 多条sql之间应以分号进行分割。

    • sql中不能出现绑定参数。

    • sql中不支持PL类型语句,如存储过程、匿名块等。

    • 不支持SELECT语句,如果存在SELECT语句,拼接成的长sql可正常执行但不会有返回值。


分享好友

分享这个小栈给你的朋友们,一起进步吧。

GaussDB_数据库
创建时间:2020-01-06 16:21:44
华为GaussDB数据库小栈
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • GaussDB_数据库
    专家
戳我,来吐槽~