JDBC 面接の質問と回答トップ 50 (2025)
ここでは、新人だけでなく経験豊富な候補者も夢の仕事に就くための Java Database Connectivity (JDBC) 面接の質問と回答を紹介します。
1) JDBC とは何ですか?
JDBC は Java Database Connectivity の略です。 JDBC は、データベースと通信して SQLquery を実行する Java API です。
2) JDBC ドライバーとは何ですか? 利用可能な JDBC ドライバーはいくつありますか?
JDBC ドライバーには、Java アプリケーションとデータベースを支援するクラスとインターフェイスが含まれています。
JDBCドライバーには4種類あります。
- タイプ 1 ドライバーまたは JDBC-ODBC ブリッジ ドライバー。
- タイプ 2 ドライバーまたはネイティブ -API、部分的に Java ドライバー。
- タイプ 3 ドライバーまたはネットワーク プロトコル、純粋な Java ドライバー。
- タイプ 4 ドライバーまたはネイティブ プロトコルの純粋な Java ドライバー。
3) どうすれば接続できますか MySQL それとも Java を使用した Oracle でしょうか?
//for MySQL { try { Class.forName ("com.mysql.jdbc.Driver"); con=DriverManager.getConnection ("jdbc: mysql://localhost:3306/dbanme", "username", "password"); Statement st=con.createstatement (); Resultset rs=st.executeQuery ("select * from user"); rs.next (); catch (ClassNotFoundException e) { System.err.println ("ClassNotFoundException in get Connection," + e.getMessage()); } catch (SQLException e) { System.err.println ("SQLException in getConnection," + e.getMessage ()) ;} //for oracle { try { Class.forName ("oracle.jdbc.driver.OracleDriver"); con= DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:dbname", "username", "password"); Statement st=con.createstatement(); Resultset rs=st.executeQuery("select * from user"); Rs.next(); } catch (ClassNotFoundException e) { System.err.println("ClassNotFoundException in get Connection," +e.getMessage()); } catch (SQLException e) { System.err.println("SQLException in getConnection, " + e.getMessage()); } return con; }
コードの説明
Class.forNameはJDBCドライバーのインスタンスを作成し、DriverManagerに登録します。
getConnection() メソッドは常にデータベースへの接続を確立します。
上記の接続オブジェクトからStatementオブジェクトを作成する必要があります。このステートメントは結果セットオブジェクトを返します。ResultSet.next() は、結果セットがまだ行を返しているかどうかを示します。
4) どの JDBC ドライバーが最も速いですか?
タイプ 4 ドライバーまたはネイティブ プロトコル、純粋な Java ドライバーは、最も高速なドライバーです。
5) JDBC API コンポーネントとは何ですか?
コンポーネントはXNUMX種類あります
- JDBC API
- JDBCドライバーマネージャー
- JDBC テスト スイート
- JDBC-ODBC ブリッジ
6) JDBC ステートメントとは何ですか?
JDBC ステートメントには次の 3 種類があります。
- ステートメント: 実行されます SQL データベースに対するクエリ (静的 SQL クエリ)。
- 準備されたステートメント: SQL文を繰り返し実行したい場合に使用します。入力データは動的であり、実行時に入力されます。
- 呼び出し可能なステートメント: ストアド プロシージャを実行する場合に使用します。
7) ストアド プロシージャを実行するにはどうすればよいですか?
ストアド プロシージャは、JDBCcallable ステートメントを使用して実行できます。 コードは次のとおりです。
Connection conn = null; CallableStatement callStmt = conn.prepareCall("{call myStoreproc(?, ?)}"); callStmt.setString(1, "abcdefg");
8) Java で PreparedStatement を使用する利点は何ですか?
Prepared Statement は、同じ SQL ステートメントを繰り返し実行するために使用されます。 準備されたステートメントは、「n」回使用されてもコンパイルされるのは XNUMX 回だけです
9) ResultSet とは何ですか?
java.sql.ResultSet インターフェースは、SQL クエリの結果セットを意味します。 これは、カーソルがテーブルの行を指していることを意味します。 最初の行の前を指します。
10) ResultSet の種類は何ですか?
ResultSet は XNUMX 種類用意されています。 ResultSet を宣言しない場合は、TYPE_FORWARD_ONLY を呼び出していることを意味します
- TYPE_FORWARD_ONLY: カーソルは前方にのみ移動できます。
- TYPE_SCROLL_INSENSITIVE: カーソルは前後に移動できますが、敏感ではありません。
- TYPE_SCROLL_SENSITIVE: カーソルは前後に移動できますが、敏感です
11) JDBC における RowSet と ResultSet の違いを説明してください。
DB への ResultSet ハンドル接続では、Result をシリアル化されたオブジェクトとして作成することはできません。
上記の問題のため、ネットワーク経由で Resultset を渡すことができません。
RowSet は ResultSet インターフェイスを拡張するため、ResultSet のすべてのメソッドを保持します。 RowSet はシリアル化されます。
したがって、Rowset はデータベースと接続されていないため、あるクラスから別のクラスに Rowset を渡すことができます。
12) JDBC で setAutoCommit(false) を使用するのはなぜですか?
自動コミットをオフにしたい場合は、connection.setAutoCommit(false) を設定します。
13) JDBC のデータベース警告とは何ですか?また、JDBC でデータベース警告を処理するにはどうすればよいですか?
SQL 警告またはデータベース警告は、SQLException クラスのサブクラスです。 Connection、Statement、ResultSet で getWarnings() メソッドを使用することでこれを処理できます。
14) null の ResultSet を取得できますか?
いいえ、null の結果セットを取得することはできません。 次のレコードに行が含まれていない場合、ResultSet.next() は null を返すことがあります。
15) メタデータとはどういう意味ですか?また、それを使用する理由は何ですか?
メタデータとは、データまたは他のデータに関する情報を意味します。 メタデータを使用して、データベース製品のバージョン、ドライバー名、テーブルとビューの合計数を取得します。
16) JDBC における executing、executeQuery、executeUpdate の違いは何ですか?
execute(): あらゆる種類の SQL クエリに使用できます。
executeQuery() : 選択クエリに使用できます。
executeUpdate(): テーブルの変更/更新に使用できます。
17) データベース接続プーリングとは何ですか? 接続プールを使用する利点は何ですか?
接続プーリングとは、接続がキャッシュに保存され、将来それらを再利用できることを意味します。
利点:
- それはより速い
- 接続プーリングにより、データベース接続の診断と分析が容易になります。
18) DriverManager クラスの機能は何ですか?
ユーザーとドライバーの間のインターフェースです。 DriverManager は、データベースと適切なドライバー間のすべてのアクティビティを追跡します。
19) 一括更新の意味は何ですか?
バッチ更新とは、SQL クエリのセット/グループを一度に実行することを意味します。
バッチ更新は挿入、更新、削除にのみ使用できますが、選択クエリには使用できません。
20) JDBC API で利用できるパッケージはいくつありますか?
JDBC APIにはXNUMX種類のパッケージが用意されています
- java.sql
- javax.sql
21)execute、executeQuery、executeUpdate の戻り値の型は何ですか?
実行の戻り値の型はブール値です
executeQuery の戻り値の型は ResultSet オブジェクトです
executeUpdate の戻り値の型は int です
22) 結果セットのインデックス 0 で始まるか、1 で始まるか?
結果セットのインデックスは 1 から始まります。
23) ドライバーをロードする際の Class.forName の役割は何ですか?
Class.forNameはJDBCドライバーのインスタンスを作成し、DriverManagerに登録します。
24) JDBC-ODBC ブリッジはマルチスレッドですか?
いいえ、JDBC-ODBC ブリッジは同期メソッドを使用して、ODBC に対して行われるすべての呼び出しをシリアル化します。
25) JDBC でトランザクション管理を処理するインターフェイスはどれですか?
接続インターフェイスは、JDBC でのトランザクション管理を処理します。 commit()、rollback()などのメソッドを提供します。
26) 「適切なドライバーがありません」エラーが発生するのはなぜですか?
DriverManager.getConnection メソッドを呼び出すと、「適切なドライバーがありません」というメッセージが表示されます。
次の理由により発生する可能性があります。
- getConnection メソッドを呼び出す前に正確な JDBC ドライバーをロードできません。
- JDBC URL が無効であるか、間違っている可能性があります。
27) プリペアドステートメントの方が高速です。 なぜ?
準備されたステートメントの実行は、ステートメントが XNUMX 回だけコンパイルされるため、直接実行するよりも高速です。 プリペアドステートメントと JDBC ドライバーは実行中に相互に接続され、接続オーバーヘッドはありません。
28) 複数のデータベースに接続することはできますか? 単一のステートメントを使用して、XNUMX つ、XNUMX つ、または多数のデータベースからデータを更新または抽出できますか?
はい、複数のデータベースに同時に接続することは可能ですが、それは特定のドライバーによって異なります。
別のデータベースからデータを更新および抽出するには、単一のステートメントを使用できます。 ただし、複数のデータベースまたは単一のデータベースを処理するミドルウェアが必要です。
29) setMaxRows(int) と SetFetchSize(int) の違いを教えてください。
setMaxRows(int) | SetFetchSize(int)? |
---|---|
結果セットに一度に含めることができる行数を定義します | データベースから読み取られる行数を定義します。 |
30) 特殊文字について教えてください。
特殊文字の前にはエスケープ文字が付きます。 例 -
SELECT NAME FROM TABLE WHERE NAME LIKE '\_%' {escape '\'}
31) データベースにおける「ダーティ リード」とはどういう意味ですか?
ダーティリードとは、「正しいかもしれない、正しくないかもしれない値を読み取る」ことを意味します。
32) XNUMX フェーズコミットとはどういう意味ですか?
分散トランザクション処理ではXNUMXフェーズコミットが使用されます。 トランザクションが実行中であり、複数のデータベースに影響を与える場合。 XNUMX フェーズ コミットは、すべてのデータベースを相互に同期させるために使用されます。
33) JDBC にはロック システムがいくつありますか?
JDBC では XNUMX 種類のロックが使用可能であり、これにより複数のユーザーを処理できます。
2人のユーザーが同じレコードを参照している場合、ロックは行われません。一方、1人のユーザーがレコードを更新しているときに、もう1人のユーザーも同じレコードを更新している場合は、ロックを使用します。
- 楽観的ロック: 「更新」するときのみレコードをロックします。
- 悲観的なロック: レコードを「選択」してから表示、更新、コミットするまでの時間をロックします。
34) JDBC の例外は何ですか?
JDBC には XNUMX 種類の例外があります。
- バッチ更新の例外
- データの切り捨て
- SQL例外
- SQLの警告
35) JDBC を使用して DB に接続する手順を教えてください。
JDBCを使用してデータベースに接続するにはXNUMXつの方法があります
- DriverManager の使用:
class.forName(driver class) と Class.forName() を使用してドライバー クラスを読み込みます。
ロード後、コントロールが DriverManager に渡されます。
DriverManager.getConnection() は、データベースにアクセスするための接続を作成します。
- データソースの使用:
DataSourceの場合、JNDIを利用したDriverManagerを使用する必要はありません。DriverManagerはネーミングサービスサーバーからDataSourceを検索します。DataSource.getConnection()メソッドはDBへのConnectionオブジェクトを返します。
36) JDBC アーキテクチャについて説明しますか?
JDBC API は、データベースの 2 層モデルと 3 層モデルの両方をサポートします。
2 層モデルでは、Java アプリケーションがデータ ソースと対話します。
3 層モデルでは、コマンドはサービスの「中間層」にリダイレクトされます。 その後、コマンドがデータ ソースに送信されます。
37) JDBC 4.0 で利用できる新機能は何ですか?
新機能は
- JDBCドライバークラスによる自動ロード
- 強化された接続管理
- RowId SQL が有効になりました
- アノテーションを使用して SQL によって実装されたデータセット
- SQL例外処理の強化
- SQLのサポート XML ファイル
38) JDBC で使用されるパッケージは何ですか?
JDBC では 8 つのパッケージが使用されます –
- SQLドライバー
- 接続
- ステートメント
- プリペアドステートメント
- CallableStatement
- 結果セット
- 結果セットメタデータ
- データベースメタデータ
39) JDBC で使用できる RowSet はいくつありますか?
使用できる行セットには次の XNUMX 種類があります。
- コネクテッド – – 接続された RowSet オブジェクトはデータベースに即座に接続します。 アプリケーションが終了すると、接続されている RowSet オブジェクトも終了します。
- 切断された – 切断された RowSet オブジェクトは、必要なクエリの実行後にデータベースに接続します。
40) つながりの意味は何ですか?
接続インターフェイスは、データベースと対話するためのメソッドで構成されます。
41) JDBC セーブポイントについて説明しますか?
セーブポイントは、現在のトランザクションがロールバックできるポイントを表します。 すべての変更をロールバックするのではなく、一部のみをロールバックすることもできます。
42) DataSource を使用する利点を挙げてください。
データ ソースは、管理者とプログラマー/開発者の間で作業を分担しています。
管理者はDataSourceオブジェクトを作成し、JNDIレジストリに関連付けます。プログラマー/開発者はレジストリからDataSourceオブジェクトを取得し、データベースとの接続を確立します。
43) ResultSet のラッパーのような JdbcRowSet が必要な理由は何ですか?
ResultSet オブジェクトを JavaBeans コンポーネントとして使用できます。
- JdbcRowSet は JavaBeans コンポーネントとしても使用できます。 そのため、設計時またはコンパイル時に作成および構成し、実行時に実行できます。
- すべての jdbcRowSet オブジェクトはスクロール可能で更新可能です。
44) 結果セットを表示できる方法は何通りありますか?
ResultSet を表示するには 2 つの方法があります
- の項目に表示されます。
- 列インデックス。
例: getInt(String columnName)、getInt(int columnIndex)
45) 結果セットを更新できる方法は何通りありますか?
次のメソッドは結果セットを更新するのに役立ちます
- updateRow()
- deleteRow()
- リフレッシュ行()
- cancelRowUpdates()
- 挿入行()
46) Java でデータベース接続を閉じる必要があるのはなぜですか?
ベスト プラクティスとして、結果セット、ステートメント、接続を閉じる必要があります。 接続がプールからのものである場合、接続が終了すると、接続は再利用のためにプールに送り返されます。 これをfinally{}ブロックで行っています。例外が発生した場合でも、これを閉じる機会があるからです。
47) JDBC で BLOB データ型を使用するのはなぜですか?
これらは、画像や動画などの大量のデータをデータベースに保存するために使用されます。
48) ResultSet で Concurrency 属性を設定するにはどうすればよいですか?
XNUMX つの同時実行レベルがあります
- CONCUR_READ_ONLY – 読み取り専用です。
- CONCUR_UPDATABLE -読み取りと更新の両方に使用されます。
49) クライアントデータベースカーソルとサーバーデータベースカーソルの違いは何ですか?
サーバー側カーソルは、データと結果がサーバーに保存されることを意味します。 要求されたデータがクライアントに送信される場合のみ。
クライアント側カーソルとは、クライアントの場所に送信されるすべてのデータを意味します。
50) JDBC を使用してデータベースに画像を挿入するにはどうすればよいですか?
BLOB データ型を使用したデータベース内の画像。画像はバイト ストリームとして保存されます。 以下のコードは、DB に画像を挿入する方法を示しています。
Connection con = null; PreparedStatement prs = null; InputStream inputstrm = null; Class.forName("oracle.jdbc.driver.OracleDriver"); con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:mydb","username","yourpassword"); //localhost is your machine or hostname //1521 is your oracle database port number //mydb is your oracle database name. prs = con.prepareCall("insert into emp_profile values (?,?)"); prs.setInt(1, 1223); inputstrm = new FileInputStream(new File("emp_img.jpg")); prs.setBinaryStream(2, inputstrm); int count = prs.executeUpdate();
これらの面接の質問は、あなたの活力(口頭)にも役立ちます
学生にとっては非常にフル活用です…………..
おすすめ!