教育サーバーのページ
オンラインテキスト目次
システムプログラミング演習
SQLLeftOuterJoin.javaは、検索結果として複数のテーブル の左外部結合を取得する。
import java.sql.*; public class SQLLeftOuterJoin { public static void main(String[] args) { try { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost/test_1"; String user = "root"; String password = "tuis2008system"; Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT syohin_tbl1.syohinname, hanbai_tbl.kokyakucode, hanbai_tbl. hanbaibi, hanbai_tbl.price from syohin_tbl1 left join hanbai_tbl on syohin_tbl1.syohincode = hanbai_tbl.syohincode"); while (rs.next()) { String name = rs.getString("syohinname"); String code = rs.getString("kokyakucode"); String date = rs.getString("hanbaibi"); int price = rs.getInt("price"); System.out.println("syohinname=" + name + " : " + "kokyakucode=" + code + " : " + "hanbaibi=" + date + ":" + "price=" + price); } rs.close(); stmt.close(); conn.close(); } catch ( SQLException e ) { e.printStackTrace(); } catch ( Exception e ) { e.printStackTrace(); } } }
プログラムSQLLeftOuterJoin.javaの説明:
SQLLeftOuterJoin.javaは、 localhostにあるデータベースサーバと接続し、 プログラムを実行する。ユーザ名は"root"、パスワードは"tuis2008system" であらわす。
まず、
import java.sql.*;では、DBC2.0 Core APIであるjava.sqlパッケージがインポートされる。
Class.forName( "com.mysql.jdbc.Driver" );では、クラスローダによりJDBCドライバを読み込んでいることを 示している。引数は、データベースにアクセスするためのJDBCドライバ のクラス名である。
String url = "jdbc:mysql://localhost/test_1";では、データベースをあらわすURLを設定している。 データベースをあらわすURL(データベースURL)は、データベースに接続する 場合に必要となる情報をセットした文字列である。この文字列の構造は、 "jdbc"、サブプロトコル、サブネームの3つの部分から構成される。 ここでは、localhost上のtest_1データベースと接続することをあらわしている。
String user = "root"; String password = "tuis2008system";では、データベースの接続に用いるユーザ名とパスワードを指定している。
Connection conn = DriverManager.getConnection( url, user, password );では、DriverManagerクラスのgetConnectionメソッドを使ってデータベースに 接続する。ここで、第一引数に与えているものが、上記のデータベースURL である。実行されたメソッドの戻り値は、接続を表すConnectionオブジェクトである。
Statement stmt = conn.createStatement();では、データベースの接続後に、sql文をデータベースに直接渡すのでは なく、sqlコンテナの役割を果たすオブジェクトに渡すためのStatement オブジェクトstmtを作成する。
stmt.executeQuery("SELECT syohin_tbl1.syohinname, hanbai_tbl.kokyakucode, hanbai_tbl. hanbaibi, hanbai_tbl.price from syohin_tbl1 left join hanbai_tbl on syohin_tbl1.syohincode = hanbai_tbl.syohincode");では、Statementオブジェクトstmtに対してSQL文("SELECT syohin_tbl1.syohinname, hanbai_tbl.kokyakucode, hanbai_tbl. hanbaibi, hanbai_tbl.price from syohin_tbl1 left join hanbai_tbl on syohin_tbl1.syohincode = hanbai_tbl.syohincode")を渡し、SQL文を実行する。 SQL文を渡し実行するためのメソッドは、executeQuery()を利用する。 得られるResultSetオブジェクトrsには、executeQuery()メソッドにより 問い合わせをおこなった結果が格納される。
while (rs.next()) { String name = rs.getString("syohinname"); String code = rs.getString("kokyakucode"); String date = rs.getString("hanbaibi"); int price = rs.getInt("price"); System.out.println("syohinname=" + name + " : " + "kokyakucode=" + code + " : " + "hanbaibi=" + date + ":" + "price=" + price); }では、ResultSetオブジェクトrsから結果を取得して表示している。 getString()メソッドは、RuseltSetから指定されたフィールド名(列) の値をStringとして取得する。getInt()メソッドは、RuseltSetから指定 されたフィールド名(列)の値をIntとして取得する。
rs.close(); stmt.close(); conn.close();では、ResultSetオブジェクト、Statementオブジェクト、Connection オブジェクトの切断をおこなう。
SQLRightOuterJoin.javaは、検索結果として複数のテーブル の右外部結合を取得する。
import java.sql.*; public class SQLRightOuterJoin { public static void main(String[] args) { try { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost/test_1"; String user = "root"; String password = "tuis2008system"; Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT hanbai_tbl.syohincode, syohin_tbl1.syohinname, hanbai_tbl.kokyakucode, hanbai_tbl.hanbaibi, hanbai_tbl.price from syohin_tbl1 right join hanbai_tbl on syohin_tbl1.syohincode = hanbai_tbl.syohincode"); while (rs.next()) { String scode = rs.getString("syohincode"); String name = rs.getString("syohinname"); String kcode = rs.getString("kokyakucode"); String date = rs.getString("hanbaibi"); int price = rs.getInt("price"); System.out.println("syohincode=" + scode + " : " + "syohinname=" + name + " : " + "kokyakucode=" + kcode + " : " + "hanbaibi=" + date + ":" + "price=" + price); } rs.close(); stmt.close(); conn.close(); } catch ( SQLException e ) { e.printStackTrace(); } catch ( Exception e ) { e.printStackTrace(); } } }
プログラムSQLRightOuterJoin.javaの説明:
SQLRightOuterJoin.javaは、 localhostにあるデータベースサーバと接続し、 プログラムを実行する。ユーザ名は"root"、パスワードは"tuis2008system" をあらわしている。
まず、
import java.sql.*;では、DBC2.0 Core APIであるjava.sqlパッケージがインポートされる。
Class.forName( "com.mysql.jdbc.Driver" );では、クラスローダによりJDBCドライバを読み込んでいることを 示している。引数は、データベースにアクセスするためのJDBCドライバ のクラス名である。
String url = "jdbc:mysql://localhost/test_1";では、データベースをあらわすURLを設定している。 データベースをあらわすURL(データベースURL)は、データベースに接続する 場合に必要となる情報をセットした文字列である。この文字列の構造は、 "jdbc"、サブプロトコル、サブネームの3つの部分から構成される。 ここでは、localhost上のtest_1データベースと接続することをあらわしている。
String user = "root"; String password = "tuis2008system";では、データベースの接続に用いるユーザ名とパスワードを指定している。
Connection conn = DriverManager.getConnection( url, user, password );では、DriverManagerクラスのgetConnectionメソッドを使ってデータベースに 接続する。ここで、第一引数に与えているものが、上記のデータベースURL である。実行されたメソッドの戻り値は、接続を表すConnectionオブジェクトである。
Statement stmt = conn.createStatement();では、データベースの接続後に、sql文をデータベースに直接渡すのでは なく、sqlコンテナの役割を果たすオブジェクトに渡すためのStatement オブジェクトstmtを作成する。
ResultSet rs = stmt.executeQuery("SELECT hanbai_tbl.syohincode, syohin_tbl1.syohinname, hanbai_tbl.kokyakucode, hanbai_tbl.hanbaibi, hanbai_tbl.price from syohin_tbl1 right join hanbai_tbl on syohin_tbl1.syohincode = hanbai_tbl.syohincode");では、Statementオブジェクトstmtに対してSQL文("SELECT hanbai_tbl.syohincode, syohin_tbl1.syohinname, hanbai_tbl.kokyakucode, hanbai_tbl.hanbaibi, hanbai_tbl.price from syohin_tbl1 right join hanbai_tbl on syohin_tbl1.syohincode = hanbai_tbl.syohincode")を渡し、SQL文を実行する。 SQL文を渡し実行するためのメソッドは、executeQuery()を利用する。 得られるResultSetオブジェクトrsには、executeQuery()メソッドにより 問い合わせをおこなった結果が格納される。
while (rs.next()) { String scode = rs.getString("syohincode"); String name = rs.getString("syohinname"); String kcode = rs.getString("kokyakucode"); String date = rs.getString("hanbaibi"); int price = rs.getInt("price"); System.out.println("syohincode=" + scode + " : " + "syohinname=" + name + " : " + "kokyakucode=" + kcode + " : " + "hanbaibi=" + date + ":" + "price=" + price); }では、ResultSetオブジェクトrsから結果を取得して表示している。 getString()メソッドは、RuseltSetから指定されたフィールド名(列) の値をStringとして取得する。getInt()メソッドは、RuseltSetから指定 されたフィールド名(列)の値をIntとして取得する。
rs.close(); stmt.close(); conn.close();では、ResultSetオブジェクト、Statementオブジェクト、Connection オブジェクトの切断をおこなう。
ExecuteUpdate.javaは、データベース管理システム(DBMS)に SQL文のupdate文を送信し、データの更新をおこなう。
import java.sql.*; public class ExecuteUpdate { public static void main(String[] args) { try { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost/test_1"; String user = "root"; String password = "tuis2008system"; Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement(); int updateCount = stmt.executeUpdate("UPDATE fruit SET price = 180 WHERE name = 'peach'"); if (updateCount > 0) { System.out.println(updateCount + "行更新されました"); } else { System.out.println("更新された行はありません"); } stmt.close(); conn.close(); } catch(SQLException e) { e.printStackTrace(); } catch(Exception e) { e.printStackTrace(); } } }
プログラムExecuteUpdate.javaの説明:
ExecuteUpdate.javaは、 localhostにあるデータベースサーバと接続し、 プログラムを実行する。
まず、
import java.sql.*;では、DBC2.0 Core APIであるjava.sqlパッケージがインポートされる。
Class.forName( "com.mysql.jdbc.Driver" );では、クラスローダによりJDBCドライバを読み込んでいることを 示している。引数は、データベースにアクセスするためのJDBCドライバ のクラス名である。
String url = "jdbc:mysql://localhost/test_1";では、データベースをあらわすURLを設定している。 データベースをあらわすURL(データベースURL)は、データベースに接続する 場合に必要となる情報をセットした文字列である。この文字列の構造は、 "jdbc"、サブプロトコル、サブネームの3つの部分から構成される。 ここでは、localhost上のtest_1データベースと接続することをあらわしている。
String user = "root"; String password = "tuis2008system";では、データベースの接続に用いるユーザ名とパスワードを指定している。
Connection conn = DriverManager.getConnection( url, user, password );では、DriverManagerクラスのgetConnectionメソッドを使ってデータベースに 接続する。ここで、第一引数に与えているものが、上記のデータベースURL である。実行されたメソッドの戻り値は、接続を表すConnectionオブジェクトである。
Statement stmt = conn.createStatement();では、データベースの接続後に、sql文をデータベースに直接渡すのでは なく、sqlコンテナの役割を果たすオブジェクトに渡すためのStatement オブジェクトstmtを作成する。
int updateCount = stmt.executeUpdate("UPDATE fruit SET price = 180 WHERE name = 'peach'");では、Statementオブジェクトstmtに対してSQL文("UPDATE fruit SET price = 180 WHERE name = 'peach'") を渡し、SQL文を実行する。SQL文を渡し実行するためのメソッドは、 executeUpdate()を利用する。updateCountには、変更されたレコードの行数が格納される。
if (updateCount > 0) { System.out.println(updateCount + "行更新されました"); } else { System.out.println("更新された行はありません"); }では、updateCountが0より大きければ、レコードが更新されたことを表示し、 そうでなければ変更されたレコード行がないことを表示している。
stmt.close(); conn.close();では、Statementオブジェクト、Connectionオブジェクトの切断をおこなう。
SQLInsert.javaは、データベース管理システム(DBMS)に SQL文のinsert文を送信し、データの追加をおこなう。
import java.sql.*; public class SQLInsert { public static void main(String[] args) { try { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost/test_1"; String user = "root"; String password = "tuis2008system"; Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement(); int insertCount = stmt.executeUpdate("INSERT INTO fruit (no, name, price) VALUES (6, 'peer', 120)"); if (insertCount > 0) { System.out.println(insertCount + "行追加されました"); } else { System.out.println("追加された行はありません"); } stmt.close(); conn.close(); } catch(SQLException e) { e.printStackTrace(); } catch(Exception e) { e.printStackTrace(); } } }
プログラムSQLInsert.javaの説明:
SQLInsert.javaは、 localhostにあるデータベースサーバと接続し、 プログラムを実行する。
まず、
import java.sql.*;では、DBC2.0 Core APIであるjava.sqlパッケージがインポートされる。
Class.forName( "com.mysql.jdbc.Driver" );では、クラスローダによりJDBCドライバを読み込んでいることを 示している。引数は、データベースにアクセスするためのJDBCドライバ のクラス名である。
String url = "jdbc:mysql://localhost/test_1";では、データベースをあらわすURLを設定している。 データベースをあらわすURL(データベースURL)は、データベースに接続する 場合に必要となる情報をセットした文字列である。この文字列の構造は、 "jdbc"、サブプロトコル、サブネームの3つの部分から構成される。 ここでは、localhost上のtest_1データベースと接続することをあらわしている。
String user = "root"; String password = "tuis2008system";では、データベースの接続に用いるユーザ名とパスワードを指定している。
Connection conn = DriverManager.getConnection( url, user, password );では、DriverManagerクラスのgetConnectionメソッドを使ってデータベースに 接続する。ここで、第一引数に与えているものが、上記のデータベースURL である。実行されたメソッドの戻り値は、接続を表すConnectionオブジェクトである。
Statement stmt = conn.createStatement();では、データベースの接続後に、sql文をデータベースに直接渡すのでは なく、sqlコンテナの役割を果たすオブジェクトに渡すためのStatement オブジェクトstmtを作成する。
int insertCount = stmt.executeUpdate("INSERT INTO fruit (no, name, price) VALUES (6, 'peer', 120)");では、Statementオブジェクトstmtに対してSQL文("INSERT INTO fruit (no, name, price) VALUES (6, 'peer', 120)")を渡し、SQL文を実行する。 SQL文を渡し実行するためのメソッドは、executeUpdate()を利用する。 insertCountには、変更されたレコード行数が格納される。
if (insertCount > 0) { System.out.println(insertCount + "行追加されました"); } else { System.out.println("追加された行はありません"); }では、insertCountが0より大きければ、レコードが更新されたことを表示し、 そうでなければ変更されたレコード行がないことを表示している。
stmt.close(); conn.close();では、Statementオブジェクト、Connection オブジェクトの切断をおこなう。
SQLDelete.javaは、データベース管理システム(DBMS)に SQL文のdelete文を送信し、データの削除をおこなう。
import java.sql.*; public class SQLDelete { public static void main(String[] args) { try { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost/test_1"; String user = "root"; String password = "tuis2008system"; Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement(); int deleteCount = stmt.executeUpdate("DELETE FROM fruit WHERE name = 'peer'"); if (deleteCount > 0) { System.out.println(deleteCount + "行削除されました"); } else { System.out.println("削除された行はありません"); } stmt.close(); conn.close(); } catch(SQLException e) { e.printStackTrace(); } catch(Exception e) { e.printStackTrace(); } } }
プログラムSQLDelete.javaの説明:
SQLDelete.javaは、 localhostにあるデータベースサーバと接続し、 プログラムを実行する。
まず、
import java.sql.*;では、DBC2.0 Core APIであるjava.sqlパッケージがインポートされる。
Class.forName( "com.mysql.jdbc.Driver" );では、クラスローダによりJDBCドライバを読み込んでいることを 示している。引数は、データベースにアクセスするためのJDBCドライバ のクラス名である。
String url = "jdbc:mysql://localhost/test_1";では、データベースをあらわすURLを設定している。 データベースをあらわすURL(データベースURL)は、データベースに接続する 場合に必要となる情報をセットした文字列である。この文字列の構造は、 "jdbc"、サブプロトコル、サブネームの3つの部分から構成される。 ここでは、localhost上のtest_1データベースと接続することをあらわしている。
String user = "root"; String password = "tuis2008system";では、データベースの接続に用いるユーザ名とパスワードを指定している。
Connection conn = DriverManager.getConnection( url, user, password );では、DriverManagerクラスのgetConnectionメソッドを使ってデータベースに 接続する。ここで、第一引数に与えているものが、上記のデータベースURL である。実行されたメソッドの戻り値は、接続を表すConnectionオブジェクトである。
Statement stmt = conn.createStatement();では、データベースの接続後に、sql文をデータベースに直接渡すのでは なく、sqlコンテナの役割を果たすオブジェクトに渡すためのStatement オブジェクトstmtを作成する。
int deleteCount = stmt.executeUpdate("DELETE FROM fruit WHERE name = 'peer'");では、Statementオブジェクトstmtに対してSQL文("DELETE FROM fruit WHERE name = 'peer'")を渡し、SQL文を実行する。 SQL文を渡し実行するためのメソッドは、executeUpdate()を利用する。 deleteCountには、変更されたレコード行数が格納される。
if (deleteCount > 0) { System.out.println(deleteCount + "行削除されました"); } else { System.out.println("削除された行はありません"); }では、deleteCountが0より大きければ、レコードが更新されたことを表示し、 そうでなければ変更されたレコード行がないことを表示している。
stmt.close(); conn.close();では、Statementオブジェクト、Connection オブジェクトの切断をおこなう。
SQLCreateTable.javaは、データベース管理システム(DBMS)に SQL文のcreate table文を送信し、テーブルの作成をおこなう。
import java.sql.*; public class SQLCreateTable { public static void main(String[] args) { try { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost/test_1"; String user = "root"; String password = "tuis2008system"; Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement(); int count = stmt.executeUpdate("CREATE TABLE vegetable (no INT(2), name VARCHAR(10), price INT(4))"); if (count == 0) { System.out.println("テーブルが作成されました"); } stmt.close(); conn.close(); } catch(SQLException e) { e.printStackTrace(); } catch(Exception e) { e.printStackTrace(); } } }
プログラムSQLCreateTable.javaの説明:
SQLCreateTable.javaは、 localhostにあるデータベースサーバと接続し、 プログラムを実行する。
まず、
import java.sql.*;では、DBC2.0 Core APIであるjava.sqlパッケージがインポートされる。
Class.forName( "com.mysql.jdbc.Driver" );では、クラスローダによりJDBCドライバを読み込んでいることを 示している。引数は、データベースにアクセスするためのJDBCドライバ のクラス名である。
String url = "jdbc:mysql://localhost/test_1";では、データベースをあらわすURLを設定している。 データベースをあらわすURL(データベースURL)は、データベースに接続する 場合に必要となる情報をセットした文字列である。この文字列の構造は、 "jdbc"、サブプロトコル、サブネームの3つの部分から構成される。 ここでは、localhost上のtest_1データベースと接続することをあらわしている。
String user = "root"; String password = "tuis2008system";では、データベースの接続に用いるユーザ名とパスワードを指定している。
Connection conn = DriverManager.getConnection( url, user, password );では、DriverManagerクラスのgetConnectionメソッドを使ってデータベースに 接続する。ここで、第一引数に与えているものが、上記のデータベースURL である。実行されたメソッドの戻り値は、接続を表すConnectionオブジェクトである。
Statement stmt = conn.createStatement();では、データベースの接続後に、sql文をデータベースに直接渡すのでは なく、sqlコンテナの役割を果たすオブジェクトに渡すためのStatement オブジェクトstmtを作成する。
int count = stmt.executeUpdate("CREATE TABLE vegetable (no INT(2), name VARCHAR2(10), price INT(4))");では、Statementオブジェクトstmtに対してSQL文("CREATE TABLE vegetable (no INT(2), name VARCHAR2(10), price INT(4))")を渡し、 SQL文を実行する。SQL文を渡し実行するためのメソッドは、executeUpdate()を利用する。 CREATE TABLE文を実行した結果、countには0が格納される。
if (count == 0) { System.out.println("テーブルが作成されました"); }では、CREATE TABLE文の実行が成功すると、テーブルが作成されたとのメッセージ を表示する。なお、同名のテーブルがすでに作成されている場合には、例外が発生 する。
stmt.close(); conn.close();では、Statementオブジェクト、Connectionオブジェクトの切断をおこなう。
SQLDropTable.javaは、データベース管理システム(DBMS)に SQL文のdrop table文を送信し、テーブルの削除をおこなう。
import java.sql.*; public class SQLDropTable { public static void main(String[] args) { try { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost/test_1"; String user = "root"; String password = "tuis2008system"; Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement(); int count = stmt.executeUpdate("DROP TABLE vegetable"); if (count == 0) { System.out.println("テーブルが削除されました"); } stmt.close(); conn.close(); } catch(SQLException e) { e.printStackTrace(); } catch(Exception e) { e.printStackTrace(); } } }
プログラムSQLDropTable.javaの説明:
SQLDropTable.javaは、 localhostにあるデータベースサーバと接続し、 プログラムを実行する。
まず、
import java.sql.*;では、DBC2.0 Core APIであるjava.sqlパッケージがインポートされる。
Class.forName( "com.mysql.jdbc.Driver" );では、クラスローダによりJDBCドライバを読み込んでいることを 示している。引数は、データベースにアクセスするためのJDBCドライバ のクラス名である。
String url = "jdbc:mysql://localhost/test_1";では、データベースをあらわすURLを設定している。 データベースをあらわすURL(データベースURL)は、データベースに接続する 場合に必要となる情報をセットした文字列である。この文字列の構造は、 "jdbc"、サブプロトコル、サブネームの3つの部分から構成される。 ここでは、localhost上のtest_1データベースと接続することをあらわしている。
String user = "root"; String password = "tuis2008system";では、データベースの接続に用いるユーザ名とパスワードを指定している。
conn = DriverManager.getConnection( url, user, password );では、DriverManagerクラスのgetConnectionメソッドを使ってデータベースに 接続する。ここで、第一引数に与えているものが、上記のデータベースURL である。実行されたメソッドの戻り値は、接続を表すConnectionオブジェクトである。
Statement stmt = conn.createStatement();では、データベースの接続後に、sql文をデータベースに直接渡すのでは なく、sqlコンテナの役割を果たすオブジェクトに渡すためのStatement オブジェクトmtを作成する。
int count = stmt.executeUpdate("DROP TABLE vegetable");では、Statementオブジェクトstmtに対してSQL文("DROP TABLE vegetable") を渡し、SQL文を実行する。 SQL文を渡し実行するためのメソッドは、executeUpdate()を利用する。 executeUpdate()メソッドによりDrop Table文を実行した場合、 countには0が格納される。なお、指定したテーブルが存在しない場合には、 例外が発生する。
if (count == 0) { System.out.println("テーブルが削除されました"); }では、countが0であるかどうかを調べ、0であった場合にテーブルが 削除されたことを表示する。
stmt.close(); conn.close();では、Statementオブジェクト、Connectionオブジェクトの切断をおこなう。
SQLFunction.javaは、データベース管理システム(DBMS)に データベース関数を含むSQL文を送信し、その結果を表示 する。
import java.sql.*; public class SQLFunction { public static void main(String[] args) { try { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost/test_1"; String user = "root"; String password = "tuis2008system"; Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT COUNT(*) FROM fruit"); while (rs.next()) { String count = rs.getString("COUNT(*)"); System.out.println("count : " + count); } ResultSet rs2 = stmt.executeQuery("SELECT SUM(price) FROM fruit"); while (rs2.next()) { String sum = rs2.getString("SUM(price)"); System.out.println("sum : " + sum); } rs.close(); rs2.close(); stmt.close(); conn.close(); } catch(SQLException e) { e.printStackTrace(); } catch(Exception e) { e.printStackTrace(); } } }
プログラムSQLFunction.javaの説明:
SQLFunction.javaは、 localhostにあるデータベースサーバと接続し、 プログラムを実行する。
まず、
import java.sql.*;では、DBC2.0 Core APIであるjava.sqlパッケージがインポートされる。
Class.forName( "com.mysql.jdbc.Driver" );では、クラスローダによりJDBCドライバを読み込んでいることを 示している。引数は、データベースにアクセスするためのJDBCドライバ のクラス名である。
String url = "jdbc:mysql://localhost/test_1";では、データベースをあらわすURLを設定している。 データベースをあらわすURL(データベースURL)は、データベースに接続する 場合に必要となる情報をセットした文字列である。この文字列の構造は、 "jdbc"、サブプロトコル、サブネームの3つの部分から構成される。 ここでは、localhost上のtest_1データベースと接続することをあらわしている。
String user = "root"; String password = "tuis2008system";では、データベースの接続に用いるユーザ名とパスワードを指定している。
Connection conn = DriverManager.getConnection( url, user, password );では、DriverManagerクラスのgetConnectionメソッドを使ってデータベースに 接続する。ここで、第一引数に与えているものが、上記のデータベースURL である。実行されたメソッドの戻り値は、接続を表すConnectionオブジェクトである。
Statement stmt = conn.createStatement();では、データベースの接続後に、sql文をデータベースに直接渡すのでは なく、sqlコンテナの役割を果たすオブジェクトに渡すためのStatement オブジェクトstmtを作成する。
ResultSet rs = stmt.executeQuery("SELECT COUNT(*) FROM fruit");では、Statementオブジェクトstmtに対してSQL文("SELECT COUNT(*) FROM fruit")を渡し、SQL文を実行する。 COUNT関数は、指定されたれるに値があるレコードの行数を求める。 ここでは、COUNT(*)により、テーブル全体のレコードの行数を 取得する。SQL文を渡し実行するためのメソッドは、executeQuery()を利用する。 得られるResultSetオブジェクトrsには、executeQuery()メソッドにより 問い合わせをおこなった結果が格納される。
while (rs.next()) { String count = rs.getString("COUNT(*)"); System.out.println("count : " + count); }では、ResultSetオブジェクトrsから結果を取得して表示している。 getString()メソッドは、RuseltSetから指定されたフィールド名(列) の値をStringとして取得し、表示している。
ResultSet rs2 = stmt.executeQuery("SELECT SUM(price) FROM fruit");では、Statementオブジェクトstmtに対してSQL文("SELECT SUM(price) FROM fruit")を渡し、SQL文を実行する。 SUM関数は、指定された列の値の合計を求める。
while (rs2.next()) { String sum = rs2.getString("SUM(price)"); System.out.println("sum : " + sum); }では、ResultSetオブジェクトrs2から結果を取得して表示している。 getString()メソッドは、RuseltSetから指定されたフィールド名(price) の値の合計を求め、表示している。
rs.close(); rs2.close(); stmt.close(); conn.close();では、ResultSetオブジェクト、Statementオブジェクト、Connection オブジェクトの切断をおこなう。
問題-1
SQLLeftOuterJoin.java
を実行して、その結果を表示せよ。
問題-2
SQLRightOuterJoin.java
を実行して、その結果を表示せよ。
問題-3
ExecuteUpdate.java
を実行して、その結果を表示せよ。
問題-4
SQLInsert.java
を実行して、その結果を表示せよ。
問題-5
SQLDelete.java
を実行して、その結果を表示せよ。
問題-6
SQLCreateTable.java
を作成・実行し、
その結果を示せ。
問題-7
SQLDropTable.java
を作成・実行し、
その結果を示せ。
問題-8
SQLFunction.java
を作成・実行し、
その結果を示せ。