
Database/SQL
database/sqlパッケージを使って、GoでのSQLデータベースアクセスをマスターしましょう:接続、クエリ、トランザクション、prepared statements、コネクションプールの管理。
22 面接問題·
Mid-Level
1DB.Query と DB.Exec の主な違いは何ですか?
1
DB.Query と DB.Exec の主な違いは何ですか?
回答
DB.Query は、データの行を返す SELECT クエリを実行するために使用されます。一方、DB.Exec は結果を返さない SQL コマンド(INSERT、UPDATE、DELETE)を実行するためのものです。Query は反復処理して rows.Close() で閉じる必要がある Rows オブジェクトを返しますが、Exec は影響を受けた行数と最後に挿入された ID を含む Result を返します。
2クエリの後に Rows オブジェクトを閉じることが重要なのはなぜですか?
2
クエリの後に Rows オブジェクトを閉じることが重要なのはなぜですか?
回答
rows.Close() で Rows を閉じると database 接続のリソースが解放され、接続が pool に戻れるようになります。閉じないと接続が使用中のままになり、pool が枯渇してブロッキングを引き起こす可能性があります。後続のエラーが発生しても確実に閉じられるよう、Query のエラーをチェックした直後に defer rows.Close() を使用することが推奨されます。
3結果から単一の行を取得するには、どのメソッドを使用すべきですか?
3
結果から単一の行を取得するには、どのメソッドを使用すべきですか?
回答
DB.QueryRow は単一の行を取得するために特別に設計されており、Row オブジェクト(単数形)を返します。Rows を返して rows.Next() による反復処理が必要な Query とは異なり、QueryRow は直接 scan できるためコードを簡素化します。エラー処理は Scan 中に行われ、sql.ErrNoRows は行が見つからなかったことを示します。
4
database/sql でデータベースへの接続を開くにはどうすればよいですか?
5
rows.Scan() メソッドは何を返しますか?
+19 面接問題
その他のGo面接トピック
Goの基礎
Junior
25問Goのデータ構造
Junior
20問Go のインターフェース
Junior
18問エラー処理
Junior
20問Goroutine の基礎
Junior
20問Channels
Junior
22問Go Modules
Mid-Level
18問HTTP サーバー
Mid-Level
24問HTTPクライアント
Mid-Level
18問JSON エンコーディング
Mid-Level
20問context パッケージ
Mid-Level
20問Testing
Mid-Level
22問並行処理パターン
Mid-Level
24問同期プリミティブ
Mid-Level
22問Go Web フレームワーク
Mid-Level
20問REST API 設計
Mid-Level
20問gRPC
Mid-Level
22問Reflection
Senior
20問メモリ管理
Senior
24問パフォーマンス最適化
Senior
22問Generics
Senior
20問Go Design Patterns
Senior
24問Microservices
Senior
24問セキュリティと認証
Senior
24問Docker & Containerization
Senior
20問Kubernetes Basics
Senior
22問高度な Go
Senior
20問CLI開発
Senior
20問