練習問題

3.4 練習問題

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

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

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

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

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

➢ Practice0301.java
1package jp.co.f1.jdbc.ch03exercise;
2 
3import java.sql.*;
4 
5public class Practice0301 {
6    private static String RDB_DRIVE="org.mariadb.jdbc.Driver";
7    private static String URL="jdbc:mariadb://localhost/practice_db";
8    private static String USER="root";
9    private static String PASSWD="root123";
10  
11    public static void main(String[] args) {
12  
13        String sql = null;
14        int num = 0 ;
15        Connection con = null;
16        Statement smt = null;
17  
18        try {
19            Class.forName(RDB_DRIVE);
20            con = DriverManager.getConnection(URL,USER,PASSWD);
21  
22            con.setAutoCommit( ① );
23  
24            smt = con. ② ;
25  
26            sql = "DELETE FROM practice_table WHERE id = "00001";
27            num = smt.executeUpdate( ③ );
28            System.out.println("\nSQL発行:" + num + "件のレコードを削除しました。");
29  
30            System.out.println("\nコミット処理を実施しました。");
31            con. ④ ;
32  
33        } catch (Exception e) {
34            System.out.println("JDBCデータベース接続エラー" + e);
35            if (con != null) {
36                try {
37                    System.out.println("\nロールバック処理を実施しました。");
38                    con. ⑤ ;
39                } catch (SQLException ignore) {
40                }
41            }
42        } finally {
43            try {
44                if (smt != null) {
45                    smt.close();
46                }
47                if (con != null) {
48                    con.close();
49                }
50            } catch (SQLException ignore) {
51            }
52        }
53    }
54 }

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

選択肢
 prepareStatement(sql)  ?  1  PreparedStatement

➢ Practice0301.java
1package jp.co.f1.jdbc.ch03exercise;
2 
3import java.sql.*;
4 
5public class Practice0302 {
6    private static String RDB_DRIVE="org.mariadb.jdbc.Driver";
7    private static String URL="jdbc:mariadb://localhost/practice_db";
8    private static String USER="root";
9    private static String PASSWD="root123";
10  
11    public static void main(String[] args) {
12  
13        String sql = null;
14        int num = 0 ;
15        Connection con = null;
16        ① ps = null;
17  
18        try {
19            Class.forName(RDB_DRIVE);
20            con = DriverManager.getConnection(URL,USER,PASSWD);
21  
22            sql = "DELETE FROM practice_table WHERE id =  ② ;
23  
24            ps = con. ③ ;
25            ps.setString( ④ , "00001");
26            num = ps.executeUpdate();
27            System.out.println("\n" + num + "件データを削除しました。\n");
28  
29        }catch(Exception e){
30            System.out.println("JDBCデータベース接続エラー");
31        }finally{
32            if(ps != null){
33                try{ps.close();}catch(SQLException ignore){}
34            }
35            if(con != null){
36                try{con.close();}catch(SQLException ignore){}
37            }
38        }
39    }
40 }

NEXT>> 3.5 練習問題 解答

f