Exec
行を返さないクエリを実行します。ExecContext
と同様ですが、bob.Query
オブジェクトで直接動作します。
使用方法
ctx := context.Background()
db, err := bob.Open("postgres", "...")
if err != nil {
// ...
}
q := psql.Update(...)
result, err := bob.Exec(ctx, db, q)
if err != nil {
// ...
}
特徴
- 簡潔な API:
bob.Query
オブジェクトを直接使用 - 型安全: Bob のクエリビルダーとの統合
- 標準的な結果:
sql.Result
インターフェースを返す
使用例
UPDATE クエリの実行
updateQuery := psql.Update("users").
Set("name", psql.Arg("Updated Name")).
Where(psql.Quote("id").EQ(psql.Arg(1)))
result, err := bob.Exec(ctx, db, updateQuery)
if err != nil {
return err
}
rowsAffected, err := result.RowsAffected()
if err != nil {
return err
}
fmt.Printf("Updated %d rows\n", rowsAffected)
INSERT クエリの実行
insertQuery := psql.Insert("users").
Columns("name", "email").
Values(psql.Arg("John Doe"), psql.Arg("john@example.com"))
result, err := bob.Exec(ctx, db, insertQuery)
if err != nil {
return err
}
lastInsertID, err := result.LastInsertId()
if err != nil {
return err
}
fmt.Printf("Inserted with ID: %d\n", lastInsertID)
DELETE クエリの実行
deleteQuery := psql.Delete("users").
Where(psql.Quote("active").EQ(psql.Arg(false)))
result, err := bob.Exec(ctx, db, deleteQuery)
if err != nil {
return err
}
rowsAffected, err := result.RowsAffected()
if err != nil {
return err
}
fmt.Printf("Deleted %d rows\n", rowsAffected)
Exec
は、データベースの状態を変更するが結果セットを返さない操作に最適です。