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