ITPub博客

首页 > 数据库 > > 数据库开发指南-基于GO开发(4)

数据库开发指南-基于GO开发(4)

作者:GaussDB_数据库 时间:2020-04-26 09:21:31 0 删除 编辑

执行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可正常执行但不会有返回值。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959250/viewspace-3126162/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-01-06

  • 博文量
    2907
  • 访问量
    19181