ソース掲示板




すべてから検索

キーワード   条件 表示 現行ログ 過去ログ トピックス 名前 本文

  メンテナンス 前画面に戻る

対象スレッド 件名: Java コンソールアプリで DB 接続確認 / 更新処理バリエーション
名前: lightbox
処理選択
パスワード

件名 Java コンソールアプリで DB 接続確認 / 更新処理バリエーション
名前 lightbox
コメント
@SHOW
プロジェクトに libs フォルダを作成して、以下のライプラリをコピーして Eclipse で F5 で再表示した後、右クリックで『ビルドパス』から追加

mysql-connector-java-5.1.30-bin.jar

▼ MySQL の JDBC ドライバでキャラクタセットの指定
http://dev.mysql.com/doc/connector-j/en/connector-j-reference-charsets.html
@END

[[MySQL 一覧表示]]
@DIV
import java.awt.Font;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.swing.JOptionPane;
import javax.swing.UIManager;

public class Main {

	public static void main(String[] args) {
		System.out.println("処理開始");

		// メッセージボックスのフォント変更
		Font myFont = new Font("メイリオ", Font.PLAIN, 20);
		UIManager.put("OptionPane.messageFont", myFont);
		UIManager.put("OptionPane.buttonFont", myFont);

		// DB 用
		Connection con = null;
		Statement stmt = null;
		ResultSet rset = null;

		try {

			String connectString = "jdbc:mysql://localhost/lightbox?user=root&password=パスワード";
			con = DriverManager.getConnection(connectString);
			stmt = con.createStatement();
			String query = "select  * from `社員マスタ` where `社員コード` between '0001' and '0010'";
			rset = stmt.executeQuery(query);

			while (rset.next()) {
				String 氏名 = rset.getString("氏名");
				System.out.print(氏名);
				String フリガナ = rset.getString("フリガナ");
				System.out.print("," + フリガナ);
				int 給与 = rset.getInt("給与");
				System.out.print("," + Integer.toString(給与));
				String 更新日 = rset.getString("更新日");
				System.out.print("," + 更新日);
				String 生年月日 = rset.getString("生年月日") == null ? "なし" : rset.getString("生年月日");
				System.out.print("," +生年月日);
				System.out.println();
			}

			rset.close();
			stmt.close();
			con.close();

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

		JOptionPane.showMessageDialog(null, "処理が終了しました");

	}

}
@END

[[MySQL 更新1 (修正)]]
@DIV
import java.awt.Font;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.swing.JOptionPane;
import javax.swing.UIManager;

public class Main {

	public static void main(String[] args) {
		System.out.println("処理開始");

		// メッセージボックスのフォント変更
		Font myFont = new Font("メイリオ", Font.PLAIN, 20);
		UIManager.put("OptionPane.messageFont", myFont);
		UIManager.put("OptionPane.buttonFont", myFont);

		// DB 用
		Connection con = null;
		Statement stmt = null;
		ResultSet rset = null;

		try {
			String connectString = "jdbc:mysql://localhost/lightbox?user=root&password=パスワード";
			con = DriverManager.getConnection(connectString);			
			stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
			String scode = "0001";
			String query = "select  * from `社員マスタ` where `社員コード` = '" + scode + "'";
			rset = stmt.executeQuery ( query );
			if ( rset.next() ) {
				String 氏名 = rset.getString( "氏名" );
				JOptionPane.showMessageDialog(null, 氏名 + " を更新します");

				rset.updateString("氏名", "山田 太郎");
				rset.updateInt("給与", rset.getInt("給与")+1);
				rset.updateRow();

			}
			else {
				JOptionPane.showMessageDialog(null, "入力した社員コードは存在しません");
			}

			rset.close();
			stmt.close();
			con.close();
			
		} catch (Exception e1) {
			e1.printStackTrace();
		}		

	}

}
@END

[[MySQL 更新2 (修正)]]
@DIV
import java.awt.Font;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.swing.JOptionPane;
import javax.swing.UIManager;

public class Main {

	public static void main(String[] args) {
		System.out.println("処理開始");

		// メッセージボックスのフォント変更
		Font myFont = new Font("メイリオ", Font.PLAIN, 20);
		UIManager.put("OptionPane.messageFont", myFont);
		UIManager.put("OptionPane.buttonFont", myFont);

		// DB 用
		Connection con = null;
		Statement stmt = null;
		Statement stmt_update = null;
		ResultSet rset = null;

		try {
			String connectString = "jdbc:mysql://localhost/lightbox?user=root&password=パスワード";
			con = DriverManager.getConnection(connectString);			
			stmt = con.createStatement();
			stmt_update = con.createStatement();
			String scode = "0001";
			String query = "select  * from `社員マスタ` where `社員コード` = '" + scode + "'";
			rset = stmt.executeQuery ( query );
			if ( rset.next() ) {
				String 氏名 = rset.getString( "氏名" );
				JOptionPane.showMessageDialog(null, 氏名 + " を更新します");

				String 更新SQL = "update `社員マスタ` set `氏名` = '山田 太郎',`給与` = 270000,`生年月日` = '1987/07/09' where `社員コード` = '" + scode + "'";
				stmt_update.executeUpdate(更新SQL);

			}
			else {
				JOptionPane.showMessageDialog(null, "入力した社員コードは存在しません");
			}

			rset.close();
			stmt.close();
			con.close();
			
		} catch (Exception e1) {
			e1.printStackTrace();
		}		

	}

}
@END

[[MySQL 更新3 (追加)]]
@DIV
import java.awt.Font;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.swing.JOptionPane;
import javax.swing.UIManager;

public class Main {

	public static void main(String[] args) {
		System.out.println("処理開始");

		// メッセージボックスのフォント変更
		Font myFont = new Font("メイリオ", Font.PLAIN, 20);
		UIManager.put("OptionPane.messageFont", myFont);
		UIManager.put("OptionPane.buttonFont", myFont);

		// DB 用
		Connection con = null;
		Statement stmt = null;
		ResultSet rset = null;

		try {
			String connectString = "jdbc:mysql://localhost/lightbox?user=root&password=パスワード";
			con = DriverManager.getConnection(connectString);			
			stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
			String scode = "0001";
			String query = "select  max(社員コード) as 最大キー from `社員マスタ`";
			rset = stmt.executeQuery ( query );
			rset.next();
			String 最大キー = rset.getString( "最大キー" );
			int 最大数 = Integer.parseInt(最大キー)+1;
			最大キー = String.format("%04d", 最大数);
			rset.close();
			
			System.out.println(最大キー);
			
			query = "select  * from `社員マスタ` where `社員コード` = '" + 最大キー + "'";
			rset = stmt.executeQuery ( query );
			if ( !rset.next() ) {
				JOptionPane.showMessageDialog(null, "データを追加します");

				rset.moveToInsertRow();
				rset.updateString("社員コード", 最大キー);
				rset.updateString("氏名", "追加社員名");
				rset.insertRow();
				rset.moveToCurrentRow();

			}
			else {
				JOptionPane.showMessageDialog(null, "入力した社員コードが存在します");
			}
			
			rset.close();
			stmt.close();
			con.close();
			
		} catch (Exception e1) {
			e1.printStackTrace();
		}		

	}

}
@END

[[MySQL 更新4 (削除)]]
@DIV
import java.awt.Font;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.swing.JOptionPane;
import javax.swing.UIManager;

public class Main {

	public static void main(String[] args) {
		System.out.println("処理開始");

		// メッセージボックスのフォント変更
		Font myFont = new Font("メイリオ", Font.PLAIN, 20);
		UIManager.put("OptionPane.messageFont", myFont);
		UIManager.put("OptionPane.buttonFont", myFont);

		// DB 用
		Connection con = null;
		Statement stmt = null;
		ResultSet rset = null;

		try {
			String connectString = "jdbc:mysql://localhost/lightbox?user=root&password=パスワード";
			con = DriverManager.getConnection(connectString);			
			stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
			String query = "select  * from `社員マスタ` order by 社員コード";
			rset = stmt.executeQuery ( query );
			if ( rset.next() ) {
				JOptionPane.showMessageDialog(null, "一番社員番号の大きいデータを削除します");

				rset.last();
				rset.deleteRow();
				
			}
			else {
				JOptionPane.showMessageDialog(null, "データが一件も存在しません");
			}
			
			rset.close();
			stmt.close();
			con.close();
			
		} catch (Exception e1) {
			e1.printStackTrace();
		}		

	}

}
@END


[[参考]]
@DIV
ResultSetを用いた更新処理
http://www.techscore.com/tech/Java/JavaEE/JDBC/5/
@END