SQLX発生したエラーメッセージを使用して、データベース、データベースクエリのデータベースのgolang操作を使用するように学習の過程で
ソースとして、次のとおりです。
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
"github.com/jmoiron/sqlx"
)
var DB *sqlx.DB
func initDb() error {
var err error
dsn := "root:123456@tcp(127.0.0.1:3306)/golang"
DB, err = sqlx.Open("mysql", dsn)
if err != nil {
return err
}
DB.SetMaxOpenConns(100)
DB.SetMaxIdleConns(16)
return nil
}
type User struct {
Id int64 `db:id`
Name sql.NullString `db:name`
Age int `db:age`
}
func testSqlxQuery() {
sqlstr := "select id,name,age from user where id=?"
var user User
err := DB.Get(&user, sqlstr, 3)
if err != nil {
fmt.Printf("select failed, err:%v\n", err)
return
}
fmt.Printf("user:%#v\n", user)
}
func main() {
err := initDb()
if err != nil {
fmt.Printf("init db failed, err:%v\n", err)
return
}
testSqlxQuery()
}
外出先でビルドした後、エラーを実行します。
* main.Userで行方不明の宛先名ID
比較することで、データベース問題はないが、SQLXエラーの使用は、オブジェクトが構造体の定義であることが判明したクエリのSQLデータベースを使用して、タグのタグは、二重引用符にはならない、問題後の引用符が解消されます。
type User struct {
Id int64 `db:"id"`
Name sql.NullString `db:"name"`
Age int `db:"age"`
}
このような問題のために、このような低レベルのエラーを回避するために、二重引用符の増加を覚えタグ使用の使用に特別な注意を払う必要があります。