如何查询和处理使用 go.uuid 创建并插入到 PostgreSQL 11 中的 UUID?
How to query and handle a UUID created with go.uuid and inserted into PostgreSQL 11?
我在 PostgreSQL table 中插入了一个使用 go.uuid 创建的 UUID :
import (
"github.com/satori/go.uuid"
)
func main() {
usid := uuid.Must(uuid.NewV4())
fmt.Println("usid := uuid.Must(uuid.NewV4")
fmt.Println(usid.String())
res, err := stmt.Exec(cn, csn, ccn, id)
if err != nil || res == nil {
log.Fatal(err)
}
}
sStmt := "insert into basicuserinfo (cn, csn, ccn, appUserAccountID )
values (, , , )"
stmt, err := db.Prepare(sStmt)
if err != nil {
log.Fatal(err)
}
defer stmt.Close()
fmt.Println("# Inserting values")
实际上在 postgreSQL 数据库中插入了一行:
cn | csn | ccn | id
| 2412fcd3-8712-4a0f-830a-d77bd4cf2195
为了使用 golang 变量进行查询,我首先尝试使用准备语句。
首先,使用 db.PrepareContext :
sel := "SELECT appUserAccountID FROM basicuserinfo WHERE cn = AND csn
= AND ccn = "
stmt, err = db.PrepareContext(ctx,sel)
if err != nil {
log.Fatal(err)
}
var utenteID string
err = stmt.QueryRowContext(ctx,cn, csn, ccn).Scan(&utenteID)
log.Printf("ID= %s\n", utenteID)
fmt.Println("aaaaaaaaa") // Just to check that the this line gets executed
谁的执行保持"idle",处于待命状态,没有结束和产生任何输出:
marco@pc01:~/go/marcoGolang/goPostgres$ go run pqExample00.go
# Inserting values
然后我用这种方式尝试了 db.Prepare():
stmt, err = db.Prepare(sel)
if err != nil {
log.Fatal(err)
}
res, err = stmt.Exec(cnv, csnv, ccnv)
在第二种情况下,执行似乎成功结束,但我不知道如何将 sql.Result 转换为可以处理的正确形式,例如简单地用 fmt.Println() 显示或获得其他处理。
那么...如何正确查询和处理使用 go.uuid 创建并插入到 PostgreSQL 11 中的 UUID?
期待您的帮助。
马可
除非你有使用 PrepareContext 的理由,否则你可以这样做吗?
db, err := sql.Open("postgres", connectionString)
sel := "SELECT appUserAccountID FROM basicuserinfo WHERE cn = AND csn = AND ccn = "
var idn string
err = db.QueryRow(sel, cn, csn, ccn).Scan(&idn)
if err != nil {
log.Fatal(err)
}
fmt.Printf("idn: %v\n", idn)
我在 PostgreSQL table 中插入了一个使用 go.uuid 创建的 UUID :
import (
"github.com/satori/go.uuid"
)
func main() {
usid := uuid.Must(uuid.NewV4())
fmt.Println("usid := uuid.Must(uuid.NewV4")
fmt.Println(usid.String())
res, err := stmt.Exec(cn, csn, ccn, id)
if err != nil || res == nil {
log.Fatal(err)
}
}
sStmt := "insert into basicuserinfo (cn, csn, ccn, appUserAccountID )
values (, , , )"
stmt, err := db.Prepare(sStmt)
if err != nil {
log.Fatal(err)
}
defer stmt.Close()
fmt.Println("# Inserting values")
实际上在 postgreSQL 数据库中插入了一行:
cn | csn | ccn | id
| 2412fcd3-8712-4a0f-830a-d77bd4cf2195
为了使用 golang 变量进行查询,我首先尝试使用准备语句。 首先,使用 db.PrepareContext :
sel := "SELECT appUserAccountID FROM basicuserinfo WHERE cn = AND csn
= AND ccn = "
stmt, err = db.PrepareContext(ctx,sel)
if err != nil {
log.Fatal(err)
}
var utenteID string
err = stmt.QueryRowContext(ctx,cn, csn, ccn).Scan(&utenteID)
log.Printf("ID= %s\n", utenteID)
fmt.Println("aaaaaaaaa") // Just to check that the this line gets executed
谁的执行保持"idle",处于待命状态,没有结束和产生任何输出:
marco@pc01:~/go/marcoGolang/goPostgres$ go run pqExample00.go
# Inserting values
然后我用这种方式尝试了 db.Prepare():
stmt, err = db.Prepare(sel)
if err != nil {
log.Fatal(err)
}
res, err = stmt.Exec(cnv, csnv, ccnv)
在第二种情况下,执行似乎成功结束,但我不知道如何将 sql.Result 转换为可以处理的正确形式,例如简单地用 fmt.Println() 显示或获得其他处理。 那么...如何正确查询和处理使用 go.uuid 创建并插入到 PostgreSQL 11 中的 UUID?
期待您的帮助。 马可
除非你有使用 PrepareContext 的理由,否则你可以这样做吗?
db, err := sql.Open("postgres", connectionString)
sel := "SELECT appUserAccountID FROM basicuserinfo WHERE cn = AND csn = AND ccn = "
var idn string
err = db.QueryRow(sel, cn, csn, ccn).Scan(&idn)
if err != nil {
log.Fatal(err)
}
fmt.Printf("idn: %v\n", idn)