Go

Database/SQL

database/sqlパッケージを使って、GoでのSQLデータベースアクセスをマスターしましょう:接続、クエリ、トランザクション、prepared statements、コネクションプールの管理。

22 面接問題·
Mid-Level
1

DB.Query と DB.Exec の主な違いは何ですか?

回答

DB.Query は、データの行を返す SELECT クエリを実行するために使用されます。一方、DB.Exec は結果を返さない SQL コマンド(INSERT、UPDATE、DELETE)を実行するためのものです。Query は反復処理して rows.Close() で閉じる必要がある Rows オブジェクトを返しますが、Exec は影響を受けた行数と最後に挿入された ID を含む Result を返します。

2

クエリの後に Rows オブジェクトを閉じることが重要なのはなぜですか?

回答

rows.Close() で Rows を閉じると database 接続のリソースが解放され、接続が pool に戻れるようになります。閉じないと接続が使用中のままになり、pool が枯渇してブロッキングを引き起こす可能性があります。後続のエラーが発生しても確実に閉じられるよう、Query のエラーをチェックした直後に defer rows.Close() を使用することが推奨されます。

3

結果から単一の行を取得するには、どのメソッドを使用すべきですか?

回答

DB.QueryRow は単一の行を取得するために特別に設計されており、Row オブジェクト(単数形)を返します。Rows を返して rows.Next() による反復処理が必要な Query とは異なり、QueryRow は直接 scan できるためコードを簡素化します。エラー処理は Scan 中に行われ、sql.ErrNoRows は行が見つからなかったことを示します。

4

database/sql でデータベースへの接続を開くにはどうすればよいですか?

5

rows.Scan() メソッドは何を返しますか?

+19 面接問題

次の面接に向けてGoをマスター

すべての問題、flashcards、技術テスト、コードレビュー演習、面接シミュレーターにアクセス。

無料で始める