アットウィキロゴ

game0113xx

import java.sql.*;

public class dbt{
  static final String CREATE_STUDENT_TABLE =
    "CREATE TABLE 学生テーブル" +
    "(学籍番号 INT PRIMARY KEY," +
    " 氏名     VARCHAR(20) NOT NULL)";

  static final String CREATE_ATTENDANCE_TABLE =
    "CREATE TABLE 出席テーブル" +
    "(学籍番号 INT  NOT NULL," +
    " 日付     DATE NOT NULL," +
    " 出席     INT DEFAULT 0," +
    " PRIMARY KEY (学籍番号, 日付))";  
   // 出席 0:欠席 1:出席

  Connection con = null;

  public dbt() {
    try {
      con = DriverManager.getConnection("jdbc:derby:db;create=true");
      createTablesIfNotExist();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  private void createTablesIfNotExist() {
    try {
      if (!tableExists("学生テーブル")) {
Statement s = con.createStatement();
s.execute(CREATE_STUDENT_TABLE);
s.close();
      }
      if (!tableExists("出席テーブル")) {
Statement s = con.createStatement();
s.execute(CREATE_ATTENDANCE_TABLE);
s.close();
      }
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  private boolean tableExists(String tablename) {
    boolean exists = false;
    try {
      DatabaseMetaData md = con.getMetaData();
      ResultSet rs = md.getTables(null, null, tablename, null);
      exists = rs.next();
      rs.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
    return exists;
  }

  void shutdown() {
    try {
      con.close();
      DriverManager.getConnection("jdbc:derby:;shutdown=true");
    } catch (SQLException ex) {
      if (!ex.getSQLState().equals("XJ015")) {
ex.printStackTrace();
      }
    }
  }

  public static void main(String[] args) {
    dbt db = new dbt();
    try {
      Statement s = db.con.createStatement();
      s.execute("INSERT INTO 学生テーブル VALUES " +
"(1234567, '三鷹 太郎'), " +
"(1234568, '吉祥寺 花子'), " +
"(1234569, '武蔵野 次郎') ");
      s.execute("INSERT INTO 出席テーブル VALUES " +
"(1234567, '2008-12-13', 1), " +
"(1234568, '2008-12-13', 1), " +
"(1234569, '2008-12-12', 1), " +
"(1234569, '2008-12-13', 0)");

      String query = "SELECT 氏名 FROM 学生テーブル, 出席テーブル " +
     " WHERE 学生テーブル.学籍番号 = 出席テーブル.学籍番号 " +
                     "   AND 出席テーブル.日付 = '2008-12-13' " +
     "   AND 出席テーブル.出席 = 1 ";
      ResultSet rs = s.executeQuery(query);

      System.out.println("2008年12月13日に出席したのは、");
      while (rs.next()) {
String name = rs.getString("氏名");
System.out.println(name + "さん");
      }
      System.out.println("です。");
      rs.close();
      s.close();
      db.shutdown();

    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }

}
最終更新:2011年03月24日 17:52