



ソースの先頭
package database;
| ・・・・(1) |
import java.sql.*;
btnPrintのActionPerformedイベント
private void btnPrintActionPerformed(java.awt.event.ActionEvent evt) {
try{
| ・・・・(2) |
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
| ・・・・(3) |
catch(ClassNotFoundException e){
e.printStackTrace();
return;
}
try{
| ・・・・(4) |
Connection con = DriverManager.getConnection("jdbc:odbc:jdbcsample");
| ・・・・(5) |
Statement stmt = con.createStatement();
| ・・・・(6) |
ResultSet rs = stmt.executeQuery("select * from shohin_list");
taMessage.setText("");
| ・・・・(7) |
while(rs.next()){
taMessage.append(
| ・・・・(8) |
rs.getString("shohin_cd") + ":" +
rs.getString("shohin_nm") + ":" +
rs.getString("maker_nm") + ":" +
rs.getString("bunrui_nm") + ":" +
rs.getString("price") + "\n");
}
| ・・・・(9) |
rs.close();
stmt.close();
con.close();
}
| ・・・・(10) |
catch(SQLException e){
e.printStackTrace();
}
}

| java.sql.Connection | ||
|---|---|---|
| データベースへの接続を管理する | ||
|
Statement createStatement() | SQLをデータベースに送るためのStatementを生成する |
|
PreparedStatement prepareStatement(String sql) | パラメータ付SQLを送るためのPreparedStatementを生成する |
|
void setAutoCommit(boolean autoCommit) | 自動でコミットするかどうか設定する |
|
void commit() | トランザクションで行われた変更を有効にする |
|
void rollback() | トランザクションで行われた変更を無効にする |
|
void close() | 接続を解除する |
| java.sql.Statement | ||
|---|---|---|
| SQLを実行するためのオブジェクト | ||
|
ResultSet executeQuery(String sql) | 結果を返すSQLを実行する |
|
void executeUpdate(String sql) | データを変更するSQLを実行する |
|
int getUpdateCount() | SQLが何件のデータに影響を与えたか |
| java.sql.ResultSet | ||
|---|---|---|
| データベースから返された結果 | ||
|
boolean next() | カーソルを次の行に移動 |
|
String getString(String columnName) | フィールドの値を文字列で得る |
|
int getInt(String columnName) | フィールドの値を整数で得る |

| コンポーネント名 | クラス | 説明 |
| btnTable | JButton | テーブル表示ボタン |
| taMessage | JTextArea | 結果表示用 |
ソースの先頭
package database;import java.sql.*;
btnPrintのActionPerformedイベント
private void btnPrintActionPerformed(java.awt.event.ActionEvent evt) {
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:jdbcsample");
DatabaseMetaData dbmd = con.getMetaData();
ResultSet rs = dbmd.getTables(null,null,"%",null);
while(rs.next()){
taMessage.append(rs.getString("TABLE_TYPE") + ":");
taMessage.append(rs.getString("TABLE_NAME") + "\n");
}
rs.close();
con.close();
}
catch(ClassNotFoundException e){
e.printStackTrace();
}
catch(SQLException e){
e.printStackTrace();
}
}

btnPrintのActionPerformedイベント
private void btnPrintActionPerformed(java.awt.event.ActionEvent evt) {
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:jdbcsample");
DatabaseMetaData dbmd = con.getMetaData();
ResultSet rs = dbmd.getTables(null,null,"%",new String[]{"TABLE","VIEW"});
while(rs.next()){
taMessage.append(rs.getString("TABLE_TYPE") + ":");
taMessage.append(rs.getString("TABLE_NAME") + "\n");
}
rs.close();
con.close();
}
catch(ClassNotFoundException e){
e.printStackTrace();
}
catch(SQLException e){
e.printStackTrace();
}
}


| コンポーネント名 | クラス | 説明 |
| btnTable | JButton | テーブル表示ボタン |
| btnField | JTextField | テーブル名入力 |
| btnField | JButton | フィールド表示ボタン |
| taMessage | JTextArea | 結果表示用 |
btnFieldのActionPerformed
private void btnFieldActionPerformed(java.awt.event.ActionEvent evt) {
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:jdbcsample");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select * from " + txtField.getText());
ResultSetMetaData meta = rs.getMetaData();
int columncount = meta.getColumnCount();
taMessage.append("-- " + txtField.getText() + "--\n");
for (int i = 0; i < columncount; ++i){
taMessage.append(meta.getColumnName(i + 1) + "\n");
}
rs.close();
stmt.close();
con.close();
}
catch(ClassNotFoundException e){
e.printStackTrace();
}
catch(SQLException e){
e.printStackTrace();
}
}

btnExecのActionPerformedイベント
private void btnExecActionPerformed(java.awt.event.ActionEvent evt) {
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:jdbcsample");
Statement stmt = con.createStatement();
//SQLの実行
ResultSet rs = stmt.executeQuery(taSql.getText());
//フィールドを取得
ResultSetMetaData meta = rs.getMetaData();
int columncount = meta.getColumnCount();
String[] fieldname = new String[columncount];
for (int i = 0; i < columncount; ++i){
fieldname[i] = meta.getColumnName(i + 1);
}
//データを取得
Vector v = new Vector();
while(rs.next()){
Object[] o = new Object[columncount];
for(int i = 0; i < columncount; ++i){
o[i] = rs.getObject(i + 1);
}
v.add(o);
}
Object[][] oaa = (Object[][])v.toArray(new Object[v.size()][]);
//JTableに設定
tableResult.setModel(new DefaultTableModel(oaa,fieldname));
con.close();
}
catch(ClassNotFoundException e){
e.printStackTrace();
}
catch(SQLException e){
e.printStackTrace();
}
}
JdbcSample3(一部)
private void btnOrderActionPerformed(java.awt.event.ActionEvent evt) {
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:jdbcsample");
Statement stmt = con.createStatement();
stmt.executeUpdate(taSql.getText());
//表示用SQLの実行
String sql = "";
sql = "select shohin_cd,shohin_nm,maker_nm,bunrui_nm,price,juni";
sql += " from (shohin left join maker on shohin.maker_cd=maker.maker_cd)";
sql += " left join bunrui on shohin.bunrui_cd=bunrui.bunrui_cd";
sql += " order by shohin_cd";
ResultSet rs = stmt.executeQuery(sql);

| コンポーネント名 | クラス | 説明 |
| taSql | JTextArea | 未使用 |
| btnOrder | JButton | 順位付けボタン |
| tableResult | JTable | 結果表示用テーブル |
btnOrderのActionPerformed前半
private void btnOrderActionPerformed(java.awt.event.ActionEvent evt) {
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:jdbcsample");
Statement stmt = con.createStatement();
String sql;
Statement stmt2 = con.createStatement();
//順位をつける
sql = "select * from shohin order by price";
ResultSet rs = stmt.executeQuery(sql);
for (int i = 0; rs.next(); ++i){
sql = "update shohin set juni=" + (i + 1);
sql += " where shohin_cd=" + rs.getString("shohin_cd");
stmt2.executeUpdate(sql);
}
rs.close();
stmt2.close();
//表示用SQLの実行
sql = "";
sql = "select shohin_cd,shohin_nm,maker_nm,bunrui_nm,price,juni";
sql += " from (shohin left join maker on shohin.maker_cd=maker.maker_cd)";
sql += " left join bunrui on shohin.bunrui_cd=bunrui.bunrui_cd";
sql += " order by shohin_cd";
rs = stmt.executeQuery(sql);

| java.sql.PreparedStatement | ||
|---|---|---|
| 一部をパラメータ化したSQLを扱う | ||
|
ResultSet executeQuery() | 結果を返すSQLを実行する |
|
void executeUpdate() | データを変更するSQLを実行する |
|
void setInt(int parameterIndex,int value) | パラメータに整数値を設定する |
|
void setString(int parameterIndex,String value) | パラメータに文字列を設定する |
btnOrderのActionPerformed前半
private void btnOrderActionPerformed(java.awt.event.ActionEvent evt) {
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:jdbcsample");
Statement stmt = con.createStatement();
String sql;
sql = "update shohin set juni=? where shohin_cd=?";
PreparedStatement pstmt = con.prepareStatement(sql);
//順位をつける
sql = "select * from shohin order by price desc";
ResultSet rs = stmt.executeQuery(sql);
for (int i = 0; rs.next(); ++i){
pstmt.setInt(1, i + 1);
pstmt.setString(2,rs.getString("shohin_cd"));
pstmt.executeUpdate();
}
rs.close();
pstmt.close();
//表示用SQLの実行
sql = "";
sql = "select shohin_cd,shohin_nm,maker_nm,bunrui_nm,price,juni";
sql += " from (shohin left join maker on shohin.maker_cd=maker.maker_cd)";
sql += " left join bunrui on shohin.bunrui_cd=bunrui.bunrui_cd";
sql += " order by shohin_cd";
rs = stmt.executeQuery(sql);

btnOrderのActionPerformed前半
private void btnOrderActionPerformed(java.awt.event.ActionEvent evt) {
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:jdbcsample");
Statement stmt = con.createStatement();
String sql;
//順位をつける
Statement stmt2 = con.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
sql = "select * from shohin order by price desc";
ResultSet rs = stmt2.executeQuery(sql);
for (int i = 0; rs.next(); ++i){
rs.updateInt("juni",i + 1);
rs.updateRow();
}
rs.close();
stmt2.close();
//表示用SQLの実行
sql = "";
sql = "select shohin_cd,shohin_nm,maker_nm,bunrui_nm,price,juni";
sql += " from (shohin left join maker on shohin.maker_cd=maker.maker_cd)";
sql += " left join bunrui on shohin.bunrui_cd=bunrui.bunrui_cd";
sql += " order by shohin_cd";
rs = stmt.executeQuery(sql);


| コンポーネント名 | クラス | 説明 |
| btnSearch | JButton | 検索ボタン |
| taOutput | JTextArea | 結果表示用 |
package database; import java.sql.*;
btnSearchのActionPerformed
private void btnSearchActionPerformed(java.awt.event.ActionEvent evt) {
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){
taOutput.append("forNameの中身まちがってないですか?\n");
return;
}
try{
Connection con = DriverManager.getConnection("jdbc:odbc:jdbcsample");
String sql = "select * from maker where maker_cd=" + txtCode.getText();
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(sql);
if(rs.next()){
//見つかった
taOutput.append("みつかりました\n");
taOutput.append("コード:" + rs.getString("maker_cd") + "\n");
taOutput.append("名前:" + rs.getString("maker_nm") + "\n");
taOutput.append("\n");
}
else{
//見つからない
taOutput.append(txtCode.getText() + "はみつかりませんでした\n\n");
}
rs.close();
stmt.close();
con.close();
}
catch(SQLException e){
taOutput.append("データベースエラー:" + e.toString() + "\n");
e.printStackTrace();
}
}


btnSearchのActionPerformed
private void btnSearchActionPerformed(java.awt.event.ActionEvent evt) {
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){
taOutput.append("forNameの中身まちがってないですか?\n");
return;
}
try{
Connection con = DriverManager.getConnection("jdbc:odbc:jdbcsample");
String sql = "select * from maker where maker_cd=?";
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1,txtCode.getText());
ResultSet rs = pstmt.executeQuery();
if(rs.next()){
//見つかった
taOutput.append("みつかりました\n");
taOutput.append("コード:" + rs.getString("maker_cd") + "\n");
taOutput.append("名前:" + rs.getString("maker_nm") + "\n");
taOutput.append("\n");
}
else{
//見つからない
taOutput.append(txtCode.getText() + "はみつかりませんでした\n\n");
}
rs.close();
pstmt.close();
con.close();
}
catch(SQLException e){
taOutput.append("データベースエラー:" + e.toString() + "\n");
e.printStackTrace();
}
}
