使用上下文方式执行¶
Db, Conn, Stmt, Tx等类型的查询函数,执行非查询语句函数,语句准备函数以及DB.Ping等函数都有相应的使用提供的上下文执行的版本。以下为使用DB.QueryContext, DB.ExecContext函数示例。
func rwWithContext(db *sql.DB){
var err error
var rows * sql.Rows
var val1 int = 10
var val2 string = "hello!"
ctx, cancel := context.WithTimeout(context.Background(), 55*time.Second)
defer cancel()
result, err := db.ExecContext(ctx, "insert into testcase1(col1, col2) values(:1, :2)",
val1, val2)
getError(err)
rowsAffected, err := result.RowsAffected()
getError(err)
fmt.Println(rowsAffected)
ctx, cancel = context.WithTimeout(context.Background(), 55*time.Second)
defer cancel()
rows, err = db.QueryContext(ctx, "select col2 from testcase1 where col1 = :val",val1)
getError(err)
defer rows.Close()
for rows.Next() {
var str2 string
rows.Scan(&str2)
fmt.Println(str2)
}
}