ソース掲示板




すべてから検索

キーワード   条件 表示 現行ログ 過去ログ トピックス 名前 本文
Java コンソールアプリで DB 接続確認 / 更新処理バリエーション
日時: 2015/09/26 20:09
名前: lightbox



プロジェクトに 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
MySQL 一覧表示
拡張子:
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, "処理が終了しました");

	}

}
MySQL 更新1 (修正)
拡張子:
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();
		}		

	}

}
MySQL 更新2 (修正)
拡張子:
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();
		}		

	}

}
MySQL 更新3 (追加)
拡張子:
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();
		}		

	}

}
MySQL 更新4 (削除)
拡張子:
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();
		}		

	}

}
参考
拡張子:
ResultSetを用いた更新処理
http://www.techscore.com/tech/Java/JavaEE/JDBC/5/
メンテナンス

Postgres : postgresql-9.4-1202.jdbc41.jar ( No.1 )
日時: 2015/09/14 20:45
名前: lightbox


日時: 2015/09/14 20:45
名前: lightbox
拡張子:
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) {

		// メッセージボックスのフォント変更
		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:postgresql://localhost/lightbox?user=postgres&password=パスワード";
			con = DriverManager.getConnection(connectString);			
			stmt = con.createStatement();
			String scode = "0001";
			String query = "select  * from \"社員マスタ\" where \"社員コード\" = '" + scode + "'";
			rset = stmt.executeQuery ( query );
			if ( rset.next() ) {
				String name = rset.getString( "氏名" );
				JOptionPane.showMessageDialog(null, name);
			}
			else {
				JOptionPane.showMessageDialog(null, "入力した社員コードは存在しません");
			}
			
			rset.close();
			stmt.close();
			con.close();
			
		} catch (Exception e1) {
			e1.printStackTrace();
		}		
	}

}
このアーティクルの参照用URLをクリップボードにコピー メンテナンス
SQLExpress( SQLServer ) : sun.jdbc.odbc.JdbcOdbcDriver ( No.2 )
日時: 2015/09/14 21:23
名前: lightbox
Java7 以前でビルドする必要があります( java8 では sun.jdbc.odbc.JdbcOdbcDriver は削除されました )
拡張子:
import java.awt.Font;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;

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

public class Main {

	public static void main(String[] args) {

		// メッセージボックスのフォント変更
		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:odbc:Provider=MSDASQL;Driver={SQL Server Native Client 11.0};SERVER=.\\sqlexpress;DATABASE=lightbox;UID=sa;PWD=パスワード;";
			Properties prop = new Properties();
			prop.put("charSet", "MS932");

			con = DriverManager.getConnection(connectString,prop);
			stmt = con.createStatement();
			String scode = "0001";
			String query = "select  * from [社員マスタ] where [社員コード] = '" + scode + "'";
			rset = stmt.executeQuery ( query );
			if ( rset.next() ) {
				String name = rset.getString( "氏名" );
				JOptionPane.showMessageDialog(null, name);
			}
			else {
				JOptionPane.showMessageDialog(null, "入力した社員コードは存在しません");
			}

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

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

}
このアーティクルの参照用URLをクリップボードにコピー メンテナンス
Microsoft Access : sun.jdbc.odbc.JdbcOdbcDriver ( No.3 )
日時: 2015/09/14 21:29
名前: lightbox
拡張子:
import java.awt.Font;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;

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

public class Main {

	public static void main(String[] args) {

		// メッセージボックスのフォント変更
		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:odbc:Provider=MSDASQL;Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=c:\\tmp\\販売管理C.mdb;";
			Properties prop = new Properties();
			prop.put("charSet", "MS932");

			con = DriverManager.getConnection(connectString,prop);
			stmt = con.createStatement();
			String scode = "0001";
			String query = "select  * from [社員マスタ] where [社員コード] = '" + scode + "'";
			rset = stmt.executeQuery ( query );
			if ( rset.next() ) {
				String name = rset.getString( "氏名" );
				JOptionPane.showMessageDialog(null, name);
			}
			else {
				JOptionPane.showMessageDialog(null, "入力した社員コードは存在しません");
			}

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

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

}
このアーティクルの参照用URLをクリップボードにコピー メンテナンス
Microsoft Excel : sun.jdbc.odbc.JdbcOdbcDriver ( No.4 )
日時: 2015/09/14 21:34
名前: lightbox
拡張子:
import java.awt.Font;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;

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

public class Main {

	public static void main(String[] args) {

		// メッセージボックスのフォント変更
		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:odbc:Provider=MSDASQL;Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};Dbq=c:\\tmp\\社員マスタ.xlsx;";
			Properties prop = new Properties();
			prop.put("charSet", "MS932");

			con = DriverManager.getConnection(connectString,prop);
			stmt = con.createStatement();
			String scode = "0001";
			String query = "select  * from [社員マスタ] where [社員コード] = '" + scode + "'";
			rset = stmt.executeQuery ( query );
			if ( rset.next() ) {
				String name = rset.getString( "氏名" );
				JOptionPane.showMessageDialog(null, name);
			}
			else {
				JOptionPane.showMessageDialog(null, "入力した社員コードは存在しません");
			}

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

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

}
このアーティクルの参照用URLをクリップボードにコピー メンテナンス