更新时间:2023-10-23 GMT+08:00

type DB

type DB如下表所示。

方法

描述

返回值

(db *DB)Begin()

开启一个事务,事务的隔离级别由驱动决定。

*Tx, error

(db *DB)BeginTx(ctx context.Context,

opts *TxOptions)

开启一个给定事务隔离级别的事务,给定的上下文会一直使用到事务提交或回滚为止。若上下文被取消,那么sql包将会对事务进行回滚。

*Tx, error

(db *DB)Close()

关闭数据库并释放所有已打开的资源。

error

(db *DB)Exec(query string,

args ...interface{})

执行一个不返回数据行的操作。

Result, error

(db *DB)ExecContext(ctx context.Context,

query string, args ...interface{})

在给定上下文中,执行一个不返回数据行的操作。

Result, error

(db *DB)Ping()

检查数据库连接是否仍然有效,并在有需要时建立一个连接。

error

(db *DB)PingContext(ctx context.Context)

在给定上下文中,检查数据库连接是否仍然有效,并在有需要时建立一个连接。

error

(db *DB)Prepare(query string)

为以后的查询或执行创建一个预备语句。

*Stmt, error

(db *DB)PrepareContext(ctx context.Context, query string)

在给定的上下文中,为以后的查询或执行创建一个预备语句。

*Stmt, error

(db *DB)Query(query string,

args ...interface{})

执行一个查询并返回多个数据行。

*Rows, error

(db *DB)QueryContext(ctx context.Context,

query string, args ...interface{})

在给定的上下文中,执行一个查询并返回多个数据行。

*Rows, error

(db *DB)QueryRow(query string,

args ...interface{})

执行一个只返回一个数据行的查询。

*Row

(db *DB)QueryRowContext(ctx context.Context,

query string, args ...interface{})

在给定上下文中,执行一个只返回一个数据行的查询。

*Row

参数说明

参数

参数说明

ctx

表示给定的上下文。

query

被执行的sql语句。

args

被执行sql语句需要绑定的参数。支持按位置绑定和按名称绑定,详情见如下示例。

opts

事务隔离级别和事务访问模式,其中事务隔离级别(opts.Isolation)支持范围为sql.LevelReadUncommitted,sql.LevelReadCommitted,sql.LevelRepeatableRead,

sql.LevelSerializable。事务访问模式(opts.ReadOnly)支持范围为true(read only)和false(read write)。

示例:

func main() {
	str := "host=127.0.0.1 port=1611 user=testuser password=Gauss_234 dbname=postgres sslmode = disable"
	db, err:= sql.Open("opengauss", str)
	if err != nil {
		log.Fatal(err)
	}
	defer db.Close()

	err = db.Ping()
	if err != nil {
		log.Fatal(err)
	}

	// 按位置绑定
	_, err := db.Exec("insert into test(id, name) values(:1, :2)", 1, "张三")
	if err != nil {
		log.Fatal(err)
	}

	// 按名称绑定
	_, err := db.Exec("insert into test(id, name) values(:id, :name)", sql.Named("id", 1), sql.Named("name", "张三"))
	if err != nil {
		log.Fatal(err)
	}
}