練習問題

3.4 練習問題

 本章で習った内容を元に練習問題を解いてください。

問1 次の設問①~⑤について○か×で答えなさい。

設問
① MariaDBのオートコミット機能は初期状態では無効になっている。
② トランザクション処理中は、何度SQL文を実行してもデータには反映されない。
③ PreparedStatement を使う場合、SQLのパラメータ変数には「$」マークを使用する。
④ パラメータ変数に値をセットする場合、セットする値の型によってメソッドが異なる。
⑤ 基準となるSQLが複数ある場合、PreparedStatementは利用できない。

問2 次のソースコードの①~⑤の空欄に入るものを選択肢から選んで答えなさい。

選択肢
 false  sql  commit()   rollback()  createStatement()

➢ Practice0301.java
package jp.co.f1.jdbc.ch03exercise;

import java.sql.*;

public class Practice0301 {
	private static String RDB_DRIVE="org.mariadb.jdbc.Driver";
	private static String URL="jdbc:mariadb://localhost/practice_db";
	private static String USER="root";
	private static String PASSWD="root123";
 
 	public static void main(String[] args) {
 
 		String sql = null;
 		int num = 0 ;
 		Connection con = null;
 		Statement smt = null;
 
 		try {
 			Class.forName(RDB_DRIVE);
 			con = DriverManager.getConnection(URL,USER,PASSWD);
 
 			con.setAutoCommit( ① );
 
 			smt = con. ② ;
 
 			sql = "DELETE FROM practice_table WHERE id = "00001";
 			num = smt.executeUpdate( ③ );
 			System.out.println("\nSQL発行:" + num + "件のレコードを削除しました。");
 
 			System.out.println("\nコミット処理を実施しました。");
 			con. ④ ;
 
 		} catch (Exception e) {
 			System.out.println("JDBCデータベース接続エラー" + e);
 			if (con != null) {
 				try {
 					System.out.println("\nロールバック処理を実施しました。");
 					con. ⑤ ;
 				} catch (SQLException ignore) { 
 				}
 			}
 		} finally {
 			try {
 				if (smt != null) {
 					smt.close();
 				}
 				if (con != null) {
 					con.close();
 				}
 			} catch (SQLException ignore) { 
 			}
 		}
 	}
 }

問3 次のソースコードの①~④の空欄に入るものを選択肢から選んで答えなさい。

選択肢
 prepareStatement(sql)  ?  1  PreparedStatement

➢ Practice0301.java
package jp.co.f1.jdbc.ch03exercise;

import java.sql.*;

public class Practice0302 {
	private static String RDB_DRIVE="org.mariadb.jdbc.Driver";
	private static String URL="jdbc:mariadb://localhost/practice_db";
	private static String USER="root";
	private static String PASSWD="root123";
 
 	public static void main(String[] args) {
 
 		String sql = null;
 		int num = 0 ;
 		Connection con = null;
 		① ps = null;
 
 		try {
 			Class.forName(RDB_DRIVE);
 			con = DriverManager.getConnection(URL,USER,PASSWD);
 
 			sql = "DELETE FROM practice_table WHERE id =  ② ;
 
 			ps = con. ③ ;
 			ps.setString( ④ , "00001");
 			num = ps.executeUpdate();
 			System.out.println("\n" + num + "件データを削除しました。\n");
 
 		}catch(Exception e){
 			System.out.println("JDBCデータベース接続エラー");
 		}finally{
 			if(ps != null){
 				try{ps.close();}catch(SQLException ignore){}
 			}
 			if(con != null){
 				try{con.close();}catch(SQLException ignore){}
 			}
 		}
 	}
 } 

NEXT>> 3.5 練習問題 解答