第7章 JDBCとは
JDBCとはJava Database Connectivityの略で、Javaアプリケーションからデータベースを操作するAPIのことです。
homepage
# **JDBCとは** *** JDBCとはJava Database Connectivityの略で、Javaアプリケーションからデータベースを操作するAPIのことです。 JDKのコアAPIとしてjava.sqlパッケージに実装されています。 JDBCは以下のような特徴を持っています。 ## **1.JDBCの特徴** ### **・DBMSに依存しない** JDBCは、Javaアプリケーションから使用するJDBCドライバマネージャと DBMSに依存するJDBCドライバを分離することで、DBMSに依存しないように しています。 #### **・高機能で洗練されたメソッド** JDBCには、高機能で洗練されたメソッドが提供されているので、 容易にプログラムを作成できる。SQLを実行できるメソッドを もっているので、DBMSに依存しないで開発可能であります。 #### **・既存のデータ資産を利用できる** 多くのDBMSベンダからJDBCドライバが提供されているので、 すでにあるデータベースなどの資源がそのまま利用できます。 <!--graph7-1.png --> <img src="https://i.loli.net/2019/04/25/5cc1082a03370.png" width="40%"> <!--graph7-2.png --> <a href="https://i.loli.net/2019/09/04/RhBXZGYfegQLq8t.png" target="_blank"><img src="https://i.loli.net/2019/09/04/RhBXZGYfegQLq8t.png" width="40%"></a> ## **2.JDBCの導入** ### **2-1.JAVAプロジェクト作成** Eclipseで新規のJAVAプロジェクトを作成します。 <!--graph7-3.png --> <a href="https://i.loli.net/2019/04/25/5cc10c1b9276f.png" target="_blank"><img src="https://i.loli.net/2019/04/25/5cc10c1b9276f.png" width="40%"></a> プロジェクトの名前を入力します。 <!--graph7-4.png --> <a href="https://i.loli.net/2019/04/25/5cc10c9844ae3.png" target="_blank"> <img src="https://i.loli.net/2019/04/25/5cc10c9844ae3.png" width="40%"></a> srcフォルダにパッケージを作ります。 <!--graph7-5.png --> <a href="https://i.loli.net/2019/04/25/5cc10cb723a12.png" target="_blank"> <img src="https://i.loli.net/2019/04/25/5cc10cb723a12.png" width="40%"></a> パッケージの名前を入力します。 <!--graph7-6.png --> <a href="https://i.loli.net/2019/04/25/5cc10d540ac63.png" target="_blank"> <img src="https://i.loli.net/2019/04/25/5cc10d540ac63.png" width="40%"></a> 作成されたパッケージにクラスを作成します。 <!--graph7-7.png --> <a href="https://i.loli.net/2019/04/25/5cc10dd288f2b.png" target="_blank"> <img src="https://i.loli.net/2019/04/25/5cc10dd288f2b.png" width="40%"></a> クラスの名前を入力します。 <!--graph7-8.png --> <a href="https://i.loli.net/2019/04/25/5cc10eb69ca24.png" target="_blank"> <img src="https://i.loli.net/2019/04/25/5cc10eb69ca24.png" width="40%"></a> ### **2-2.JDBCライブラリ導入** JDBCライブラリを導入します。 <!--graph7-9.png --> <a href="https://i.loli.net/2019/04/25/5cc1105bae90c.png" target="_blank"> <img src="https://i.loli.net/2019/04/25/5cc1105bae90c.png" width="40%"></a> MySQLインストールのパス「C:\Program Files (x86)\MySQL\Connector J 8.0」 中のファイル「mysql-connector-java-8.0.15.jar」を導入します。 <!--graph7-10.png --> <a href="https://i.loli.net/2019/04/25/5cc111ce5cdc2.png" target="_blank"> <img src="https://i.loli.net/2019/04/25/5cc111ce5cdc2.png" width="40%"></a> これでJDBCの導入は完了です。 <!--graph7-11.png --> <a href="https://i.loli.net/2019/04/25/5cc11264c0da6.png" target="_blank"> <img src="https://i.loli.net/2019/04/25/5cc11264c0da6.png" width="40%"></a> ## **3.JDBCのテスト** この前、データベースcompanydata と テーブルempinfo を作成しました。 今回はこれらを使用します。 <!--graph7-12.png --> <a href="https://i.loli.net/2019/04/25/5cc114aef1230.png" target="_blank"> <img src="https://i.loli.net/2019/04/25/5cc114aef1230.png" width="40%"></a> 下記のコードをTetsMySQLクラスにコピーします。 #### ** 実例 ** [Sample7_1.java] ``` public static void main(String[] args) { Connection con = null;//リンク変数生成 String user = "root";//MySQLのユーザ名を記入 String password = "root";//MySQLのパスワードを記入 String url = "jdbc:mysql://localhost:3306/companydata?serverTimezone=JST";//データベースパス記入 try { con = DriverManager.getConnection(url, user, password);//リンクインスタンス生成 String createtable = "insert into empinfo(empCd,name,birthday,countryCd,sexCd,year) " + "values (\"100031\",\"ドラDもん\",\"2019-04-24\",\"011\",\"03\",0);"; PreparedStatement prepStmt1 = con.prepareStatement(createtable); prepStmt1.execute(); con.close();//リンクを閉じる } catch (SQLException e) { e.printStackTrace(); } } ``` <br> <!--graph7-13.png --> <a href="https://i.loli.net/2019/04/25/5cc1186fd67ae.png" target="_blank"> <img src="https://i.loli.net/2019/04/25/5cc1186fd67ae.png" width="40%"></a> このプロジェクトを実行します。 <!--graph7-14.png --> <a href="https://i.loli.net/2019/04/25/5cc119cf10e9f.png" target="_blank"> <img src="https://i.loli.net/2019/04/25/5cc119cf10e9f.png" width="40%"></a> テーブルに ドラDもん のレコードが挿入されたら、プロジェクトの実行が成功です。 <!--graph7-14.png --> <a href="https://i.loli.net/2019/04/25/5cc11b16716da.png" target="_blank"> <img src="https://i.loli.net/2019/04/25/5cc11b16716da.png" width="40%"></a> >**練習** >>**問題**[ex7-1.sql] DBViewerでempinfoの項目を全て出力し、国と性別を漢字で表示します。 >>**答え** ```SELECT empCd,name,countryCd,countryname,sex.sexName FROM empinfo INNER JOIN country USING (countryCd) INNER JOIN sex USING (sexCd);```
content
戻る