1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

JDBC接続のやり方

Last updated at Posted at 2023-05-30

環境構築

職業訓練校の授業ではPostgleSQLを使っていたが、自習では、MySQLの練習もしていこうと思います。

まずMySQLをDLしていく。
1.MySQLの公式ホームページに行きダウンロードをクリックし、ページ下のほうにあるMySQL Communityをクリックする。(無料DBだから) 2.MySQL Installer for Windowsをクリックし、サイズを選びDLする。 3.DLを進めていき、root paswordを設定する 4.初期設定は特にいじらずDL完了。
次は、JDBCドライバをDLしていく。
1.MySQL コネクタと検索し、JDBC Driver for MySQL (Connector/J)を選択し、 初期設定が、Select Operating System : microsoft windowsとなっているので、platform independentを選択肢し、DLする。(プラットフォーム独立モデル) 2.DLファイルを開くと、mysql-connector-j-8.0.33.jarが入っているので、これを /tomcat/9(使っているバージョン)/libファイルの中に移動する。
環境変数設定
1.環境変数設定をひらき、PATHに新規追加で、MySQL.exeがあるパスを設定する。

(自分の場合は、C:\Program Files\MySQL\MySQL Server 8.0\bin)
2.CMDを開いて、mysql -u root -pと打って開けるかを確認する。

C:\Users\ユーザ名> mysql -u root -p

パスワードを入力して、Welcome~と表示されると、接続成功。

C:\Users\ユーザ名 > mysql -u root -p
Enter password: ****
Welcome to the MySQL monitor.  Commands end with ; ~省略~
mysql >
Eclipceを使っている場合
1.JDBCを使いたいJavaファイルを右クリックして、ビルドパス > 外部アーカイブの追加を選択して、JDBCドライバを選択する。

基本操作

DDLの場合

DBに接続する
DriverManagerを使ってJDBCドライバを管理する。
Connection con = DriverManager.Connection(URL, ユーザー名, パスワード);

MySQLを使う場合のURLは、下記を記述する。

jdbc:mysql://localhost/DB名

変数conには、DBの接続情報が代入される。

ステートメントを生成する
Statement stmt = con.createStatement();
SQLを実行
int count = stmt.executeUpdate(SQL文);

変数countに、SQL文を何行更新したかのカウントを代入している。

リソースの開放
stmt.cloce();
con.close();

解放時は、順番を逆にして閉じていく必要がある。

※JDBC4.0(Java SE6)以降からは、Class.forName()の記述が不要になった。※

DMLの場合

DBに接続して、ステートメントを生成する。
Connection con = DriverManager.Connection(URL, ユーザー名, パスワード);
Statement stmt = con.createStatement();
SQLを実行
ResultSet rs = stmt.executeQuery(SQL文);

ResultSetオブジェクトに検索結果を保持する。

検索結果などを扱う繰り返し処理
while(rs.next()){
  System.out.println(rs.getInt("id"));
}

取得したい列名や列番号をgettrメソッドの中に記述する。
※列番号は、1から記述する※
getterメソッドは、欲しい値が定義されているデータ型のgetterを記述する。

リソースの開放
rs.close();
stmt.cloce();
con.close();

ここまでが一連の流れ。

PreparedStatement

基本操作ではステートメントの生成をStatementを使って行っていたが、PreparedStatementを使ったほうがセキュリティ的にも性能的にもよい。

INSERT文を使って使用してみる。


String[] names = {田中,佐藤,山田}
int[] ages = {20,25,30}

Connection con = DriverManager.getConnection(URL, ユーザー名, パスワード);
PreparedStatement ps = 
                  new PreparedStatement("INSERT INTO student VALUES(?,?"));
for(int i = 0; i < names.length; i++){
  ps.setInt(1,names[i]);
  ps.getString(2,ages[i])
}

※コードが見にくくならないように例外処理は省略しています。※

トランザクション処理

トランザクション設定をする。

Connection con = DriverManager.getConnection(URL, ユーザー名, パスワード);
con.setAuttoCommit(false);

このコードを記述することによって、オートコミットを解除する。

コミットしたい場合は、

con.commit();

処理を記述した後に、commitメソッド呼び出す。

ロールバックしたい場合は、

con.rollback();

rollbackメソッドを呼びだす。

まとめ

DAOクラスを作ることによって、様々でDBで動かせるので、プラットフォーム依存をなくすことができる。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?