使用 Query 函数来发送查询到数据库,获取结果集信息和错误信息。
Next 函数作为循环条件,迭代读取结果集,该过程中发生错误会返回 False 。
Scan 函数用于读取一行结果。
rows, err := db.Query("SELECT id FROM TEST")
defer rows.Close()
for rows.Next() {
var id int
if err = rows.Scan(&id); err != nil {
/* 在这里处理错误 */
}
fmt.Println("id=", n)
}
直接执行 Exec 函数即可。
_, err = db.Exec('CREATE TABLE TEST (id INTEGER PRIMARY KEY, name TEXT)')
_, err = db.Exec("INSERT INTO TEST(id, name) VALUES(1, 'John')")
Go语言建议使用 Prepare 方式而非拼接字符串,以此来转义参数,避免sql注入,同时也省去了部分开销,提高了性能。
占位符使用PostgreSQL风格,即"$N",其中N是从1递增的整数,表示参数的位置。
stmt, err := db.Prepare("INSERT INTO TEST(id, name) VALUES($1,$2)")
_, err = stmt.Exec(2,'Tom')
stmt, err = db.Prepare("SELECT name FROM TEST WHERE id = $1")
rows, err = stmt.Query(2)
/* 这里执行你的业务 */
当Go应用和KingbaseES服务器交换信息时,需要在KingbaseES数据类型和Go变量类型之间进行转换。
类型映射说明可参考下表 。