SQLの窓 イラストAC フリー素材

2019年08月26日

Java : Okhttp( GET ) と Google Gson( JSON => オブジェクト ) で WEB アクセス

Okhttp のダウンロードは、files の jar リンクです。( Maven リポジトリ)

Okhttp は Okiokotlin-stdlib に依存しているのでこれらもダウンロードする必要があります。
import java.io.IOException;

import com.google.gson.Gson;

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class Main {

	public static void main(String[] args) {
		
		String url = "https://lightbox.sakura.ne.jp/demo/json/syain_api_bind.php";
		String result = "";
		
		OkHttpClient okHttpClient;		

		okHttpClient = new OkHttpClient();		
		Request.Builder builder = new Request.Builder();
		builder.url(String.format("%s?name=%s", url, "田"));
		Request request = builder.build();

		Response response = null;
		try {
			response = okHttpClient.newCall(request).execute();
			result = response.body().string();
		}
		catch (IOException e) {
			e.printStackTrace();
		}

		System.out.println(result);

		Gson gson = new Gson();

		Syain[] syains = gson.fromJson(result, Syain[].class);

		for (Syain syain : syains) {
			System.out.println(syain.社員コード);
			System.out.println(syain.氏名);
			System.out.println(syain.フリガナ);
		}

	}

	private class Syain {

		public String 社員コード;
		public String 氏名;
		public String フリガナ;

	}

}




posted by at 2019-08-26 22:41 | Java | このブログの読者になる | 更新情報をチェックする

2019年08月22日

JSP で単純な MySQL アクセス ( mysql-connector-java-5.1.47.jar )

C:\pleiades\xampp\tomcat\lib\mysql-connector-java-5.1.47.jar を使用しています。

関連する記事

Java : 単純な MySQL アクセス ( mysql-connector-java-5.1.47.jar )
<%@ page
	language="java"
	import="java.io.*"
	import="java.text.*"
	import="java.util.*"

	import="java.text.SimpleDateFormat"
	import="com.mysql.jdbc.*"
	import="java.sql.DriverManager"
	import="java.sql.ResultSet"
	import="java.sql.SQLException"

	contentType="text/html;charset=utf-8" %>
<%!
// *********************************************************
// ローカル関数
// *********************************************************
public String getData( HttpServletRequest request,String name ) {

	String strGet = request.getParameter(name);
	if ( strGet == null ) {
		strGet = "";
	}

	return strGet;
}
%>
<%
// *********************************************************
// 入力値の表示
// GET で setCharacterEncoding を有効にするには
// sever.xml => Connector で useBodyEncodingForURI="true"
// *********************************************************
request.setCharacterEncoding("utf-8");	// 入力値のエンコーディング

// GET 入力
String strGet = getData( request, "InputGet" );

// POST 入力
String strPost = getData( request, "InputPost" );

%>
<!DOCTYPE html>
<html>
<head>
<meta content="width=device-width initial-scale=1.0 minimum-scale=1.0 maximum-scale=1.0 user-scalable=no" name="viewport">
<meta charset="utf-8">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/css/bootstrap.css">

<link rel="stylesheet" href="https://lightbox.sakura.ne.jp/demo/two-section.css">
<style>
.result {
	display: inline-block;
	width: 400px;
	border: 1px solid #c0c0c0;
	padding: 10px;
}
</style>
</head>
<body>
	<div id="head">
		<div class="result">InputGet = <%= strGet %> </div><div class="result"> InputPost = <%= strPost %></div>
	</div>

	<div id="extend">

		フォーム : GET( InputGet )
		<form method="get">
			<input type="text" name="InputGet" value="<%= strGet %>">
			<input class="btn btn-primary" type="submit" name="send_get" value="GET">
		</form>
		
		フォーム : POST( InputPost )
		<form method="post">
			<input type="text" name="InputPost" value="<%= strPost %>">
			<input class="btn btn-primary" type="submit" name="send_post" value="POST">
		</form>

		<hr>

<%

// データベース用変数
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;

try {

	Class.forName("com.mysql.jdbc.Driver");
	// MySQL Connector/J 接続
	conn = (Connection) DriverManager.getConnection(
		"jdbc:mysql://localhost/lightbox?user=root&password="
	);

	stmt = (Statement) conn.createStatement();

	if ( getData( request, "send_post" ).equals( "POST" ) ) {
		// % は %% で表現
		rs = stmt.executeQuery( String.format( "select * from 社員マスタ where 氏名 like '%%%s%%'", strPost) );
	}
	else {
		rs = stmt.executeQuery("select * from 社員マスタ");
	}

	// select の結果の列情報の取得
	ResultSetMetaData rsmd = (ResultSetMetaData) rs.getMetaData();

	// 列数
	int columnCount = rsmd.getColumnCount();

	// 列名
	for( int i = 1; i <= columnCount; i++) {
		out.println(rsmd.getColumnName(i));
	}
	out.println("\n<br>");

	// 日付フォーマット
	SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
	while( rs.next() ) {

		for( int i = 1; i <= columnCount; i++) {

			if ( i != 1 ) {
				out.println(",");
			}

			// 日付型の列
			if ( rsmd.getColumnTypeName(i).equals("DATETIME") ) {
				out.println( sdf.format(rs.getDate(i)) );
			}
			// それ以外
			else {
				out.println( rs.getString(i) );
			}


		}
		out.println("\n<br>");
	}

	rs.close();
	stmt.close();
	conn.close();

} catch (SQLException ex) {
	// handle any errors
	out.println("SQLException: " + ex.getMessage());
	out.println("SQLState: " + ex.getSQLState());
	out.println("VendorError: " + ex.getErrorCode());
}

%>

	</div>

</body>
</html>






posted by at 2019-08-22 11:42 | Java | このブログの読者になる | 更新情報をチェックする

Java : 単純な MySQL アクセス ( mysql-connector-java-5.1.47.jar )

C:\pleiades\java\8\jre\lib\mysql-connector-java-5.1.47.jar を使用しています。

※ mysql-connector-java-8.0.11 で serverTimezone=JST が必要

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;

public class Main {

	public static void main(String[] args) {

		Connection conn = null;
		Statement stmt = null;
		ResultSet rs = null;

		String connectionString = "jdbc:mysql://localhost/lightbox?user=root&password=";

		try {
			// 接続文字列で接続
			conn = (Connection) DriverManager.getConnection(connectionString);

			String query = "select * from 社員マスタ";

			stmt = (Statement) conn.createStatement();
			rs = stmt.executeQuery(query);

			String scode;
			String sname;
			while( rs.next() ) {

				scode = rs.getString(1);
				sname = rs.getString(2);

				System.out.print(String.format("番号 : %s,%s / ", scode, sname));

				scode = rs.getString("社員コード");
				sname = rs.getString("氏名");

				System.out.println(String.format("列名 : %s,%s", scode, sname));


			}


			rs.close();
			stmt.close();
			// 接続を閉じる
			conn.close();

		} catch (SQLException e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		}


		System.out.println("終了");
	}

}




posted by at 2019-08-22 10:29 | Java | このブログの読者になる | 更新情報をチェックする

2015年06月28日

Eclipse に 画面分割があるとは知らなかった。

▼ これをショートカットでできないかいろいろ試していて見つけました。
Eclipse で、文字列内のファイルのパスの \ 記号を \\ にする方法

縦分割 / CTRL + \



横分割 / CTRL + [



まあ、でもあまりやらないほうがいいとは思います。なにかのはずみに片方が表示せずに固まったので


タグ:Eclipse java
posted by at 2015-06-28 22:16 | Java | このブログの読者になる | 更新情報をチェックする

2015年06月15日

Google Gson の fromJson が、配列でも ArrayList でも同等に扱ってくれる事のテスト

なんとなくできるんだろうなぁ、と思いながらも試した事は無かったのですが、普通にできました。テストはコンソールでやっていますが、本来は Android で ArrayAdapter とセットで使用するので、どちらでもあまり大差はありません。

というより、Google Gson で文字列 JSON がほぼストレートに ListView にセットされるところが最も素敵なところです。
import java.util.ArrayList;
import java.util.ListIterator;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;


public class Main {

	// Livedoor の お天気Webサービス用 (JSON用)
	class Weather {
		// ArrayList で定義
		ArrayList<PinpointLocation> pinpointLocations;
	}
	class Weather2 {
		// 配列で定義
		PinpointLocation[] pinpointLocations;
	}

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ

		System.out.println("開始");

		// データをセット
		String result = Tools.httpGet(
			"http://weather.livedoor.com/forecast/webservice/json/v1?city=270000",
			"utf-8",
			null
		);

		System.out.println(result);

		Gson gson = new Gson();

		// ArrayList として処理
		Weather weatherData = gson.fromJson(result, Weather.class);

		// 多いので40番目から
		ListIterator<PinpointLocation> li = weatherData.pinpointLocations.listIterator(39);
		while(li.hasNext()) {
			PinpointLocation data = li.next();
			System.out.println(data.name + " : " + data.link );
		}

		System.out.println("-----------------------------------------");

		// 配列
		Weather2 weatherData2 = gson.fromJson(result, Weather2.class);

		// 多いので40番目から
		for( int i = 39; i < weatherData2.pinpointLocations.length; i++ ) {
			PinpointLocation data = weatherData2.pinpointLocations[i];
			System.out.println(data.name + " : " + data.link );
		}

		// 多いので40番目から( 39 番までを削除 )
		for( int i = 38; i >= 0; i-- ) {
			weatherData.pinpointLocations.remove(i);
		}
		
		Gson gsonPretty = new GsonBuilder().setPrettyPrinting().create();
		String json1 = gsonPretty.toJson(weatherData);
		System.out.println( json1 );

	}

}


後重要なのは、逆の toJson ですが、この場合は整形する方法があるので、ここも重要です。
Gson prettyGson = new GsonBuilder().setPrettyPrinting().create();
String json = prettyGson.toJson(weatherData);


Web アクセス用簡易 static クラス
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Iterator;
import java.util.Map;


public class Tools {

	// 指定した URL へ 任意の charset で処理
	public static String httpGet( String targetUrl,String targetCharset,Map<String,String> params) {

		StringBuffer web_data = new StringBuffer();

		try {
			// Query String の作成( 必要無ければ引数を null とする )
			String data = "";
			if ( params != null ) {
				Iterator<String> it =  params.keySet().iterator();
				String key = null;
				String value = null;
				while(it.hasNext()) {
					key = it.next().toString();
					value = params.get(key);
					if ( !data.equals("") ) {
						data += "&";
					}
					data += key + "=" + URLEncoder.encode(value, targetCharset) ;
				}
				if ( !data.equals("") ) {
					targetUrl = targetUrl + "?" + data;
				}
			}

			// **********************************************
			// インターネットへの接続
			// **********************************************
			// 読み込む WEB上のターゲット
			URL url = new URL(targetUrl);
			// 接続オブジェクト
			HttpURLConnection http = (HttpURLConnection)url.openConnection();
			// GET メソッド
			http.setRequestMethod("GET");
			// 接続
			http.connect();

			// **********************************************
			// ストリームとして読み込む準備
			// **********************************************
			// 以下読み込み3点セット InputStream / InputStreamReader / BufferedReader
			InputStream input_stream = http.getInputStream();
			// UTF-8 でリーダーを作成
			InputStreamReader input_stream_reader = new InputStreamReader(input_stream, targetCharset);
			// 行単位で読み込む為の準備
			BufferedReader buffered_reader = new BufferedReader(input_stream_reader);

			// **********************************************
			// 行の一括読み込み
			// **********************************************
			String line_buffer = null;
			// BufferedReader は、readLine が null を返すと読み込み終了
			while ( null != (line_buffer = buffered_reader.readLine() ) ) {
				web_data.append( line_buffer );
				web_data.append( "\n" );
			}

			// **********************************************
			// 接続解除
			// **********************************************
			http.disconnect();
		}
		catch(Exception e) {
			// 失敗
			System.out.println(e.getMessage());
		}
		return web_data.toString();
	}
}



タグ:JSON
posted by at 2015-06-15 20:58 | Java | このブログの読者になる | 更新情報をチェックする

2015年05月28日

Java sun.jdbc.odbc.JdbcOdbcDriver から Microsoft Excel

関連する記事

Java 8 で、sun.jdbc.odbc.JdbcOdbcDriver を使う手順

▲ リンク先では、MySQL ODBC 5.3 Unicode Driver でテストしています。

接続文字列について

この手の正式情報は全く手に入らなかったのですが、Readonly のパラメータを省略する(全く記述しない場合)と更新を拒否されました。Readonly=False にしても更新されてしまいます。



このダイアログは、ドライバの設定画面ですが、バージョンのパラメータは試していませんが、FIL らしいです。

▼ 以下のサンプルでは更新されます。
		Button btnDatabase = new Button(container, SWT.NONE);
		btnDatabase.addSelectionListener(new SelectionAdapter() {

			@Override
			public void widgetSelected(SelectionEvent ex) {

				boolean ret = true;

				Connection con = null;
				Statement stmt = null;
				ResultSet rset = null;

				String DriverName = "sun.jdbc.odbc.JdbcOdbcDriver";
				String connectionString =
						"Provider=MSDASQL" +
						";Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}" +
						";Dbq=C:\\user\\MDB\\syain.xlsx" +
						";Readonly=;";
				String Query = "";
				
				// 日本語設定用プロパティ
				Properties prop = new Properties();
				prop.put("charSet", "MS932");
				System.out.println(connectionString);

				// 接続
				try {
					Class.forName( DriverName );
					con = DriverManager.getConnection(
							"jdbc:odbc:" + connectionString,prop
					);

					stmt = con.createStatement();
				}
				catch( Exception e  ) {
					System.out.println(e.getMessage());
					ret = false;
				}
				// 接続失敗
				if ( !ret ) {
					return;
				}

				System.out.println("接続成功");
				// SQL 作成
				Query = "update 社員マスタ set 氏名 = 'java 更新' where 社員コード = '0001'";
				try {
					stmt.executeUpdate( Query );
				}
				catch( SQLException e ) {
					System.out.println(e.getMessage());
					ret = false;
				}
				// 実行失敗
				if ( !ret ) {
					return;
				}

				// SQL 作成
				Query = "select * from 社員マスタ where 社員コード = '0001'";
				try {
					rset = stmt.executeQuery ( Query );
					ret = rset.next();
				}
				catch( SQLException e ) {
					System.out.println(e.getMessage());
					ret = false;
				}

				// データが存在しないので処理終了
				if ( !ret ) {
					return;
				}

				System.out.println("SQL実行成功");

				try {
					System.out.println( rset.getString( "氏名" ) );
				}
				catch( SQLException e ) {
					System.out.println(e.getMessage());
				}

				System.out.println("列データ取得成功");

				try {
					stmt.close();
					con.close();
				}
				catch( SQLException e ) {
					System.out.println(e.getMessage());
				}

			}
		});
関連する資料

日本語 Eclipse 4.4 Pleiades で WindowBuilder


タグ:java microsoft EXCEL
posted by at 2015-05-28 19:06 | Java | このブログの読者になる | 更新情報をチェックする

Java sun.jdbc.odbc.JdbcOdbcDriver から Microsoft Access

関連する記事

Java 8 で、sun.jdbc.odbc.JdbcOdbcDriver を使う手順

▲ リンク先では、MySQL ODBC 5.3 Unicode Driver でテストしています。
		Button btnDatabase = new Button(container, SWT.NONE);
		btnDatabase.addSelectionListener(new SelectionAdapter() {

			@Override
			public void widgetSelected(SelectionEvent ex) {

				boolean ret = true;

				Connection con = null;
				Statement stmt = null;
				ResultSet rset = null;

				String DriverName = "sun.jdbc.odbc.JdbcOdbcDriver";
				String connectionString =
						"Provider=MSDASQL" +
						";Driver={Microsoft Access Driver (*.mdb, *.accdb)}" +
						";Dbq=C:\\user\\MDB\\社員マスタ.accdb" + ";";

				// 日本語設定用プロパティ
				Properties prop = new Properties();
				prop.put("charSet", "MS932");
				System.out.println(connectionString);

				// 接続
				try {
					Class.forName( DriverName );
					con = DriverManager.getConnection(
							"jdbc:odbc:" + connectionString,prop
					);

					stmt = con.createStatement();
				}
				catch( Exception e  ) {
					System.out.println(e.getMessage());
					ret = false;
				}
				// 接続失敗
				if ( !ret ) {
					return;
				}

				System.out.println("接続成功");

				// SQL 作成
				String Query = "select * from 社員マスタ where 社員コード = '0001'";
				try {
					rset = stmt.executeQuery ( Query );
					ret = rset.next();
				}
				catch( SQLException e ) {
					System.out.println(e.getMessage());
					ret = false;
				}

				// データが存在しないので処理終了
				if ( !ret ) {
					return;
				}

				System.out.println("SQL実行成功");

				try {
					System.out.println( rset.getString( "氏名" ) );
				}
				catch( SQLException e ) {
					System.out.println(e.getMessage());
				}

				System.out.println("列データ取得成功");

				try {
					stmt.close();
					con.close();
				}
				catch( SQLException e ) {
					System.out.println(e.getMessage());
				}

			}
		});
関連する資料

日本語 Eclipse 4.4 Pleiades で WindowBuilder



タグ:java microsoft
posted by at 2015-05-28 18:19 | Java | このブログの読者になる | 更新情報をチェックする

2015年04月25日

Pleiades All in One 4.4.2.v20150310(Luna) の Java 32bit Full Edition が、自己解凍書庫で、Vector に登録されている件



ダウンロードしようとしたら、フレームに Vector が表示されてびっくりした。

● セットアップは自己解凍書庫なのでダブルクリックで解凍するだけ (インストール作業は不要) です。
● Eclipse、JRE とも 32bit 版のため Windows 32bit、64bit どちらでも動作します。
● アンインストールはディレクトリーを削除するだけです。
● デフォルトでは c:\pleiades (c:\pleiades\eclipse) に解凍されます。
ついこの間までは、Android 用の ADT に付属されていた Eclipse を Pleiades の日本語化プラグイン使って利用していたのですが、Google が Eclipse やめて、Android Studio にしたので、一般 Java は Pleiades 使おうとして行ってみたらこうなってました。 しかも Google Chrome でダウンロードしようとするとこうなります。 頑張ってダウンロードできない事も無いはずなのだけれど、かなり面倒くさいはずなので Firefox でダウンロードしました。良く見ると、Vector にはこんな記述が・・・
Google Chrome及びFirefoxのセーフブラウジング機能により、一部のソフトがダウンロードができなくなる不具合が確認されています。ダウンロードができない場合は、Internet Explorerなどの別のブラウザでお試しください。
という事は、最悪 IE を使えって事か。 Google Chrome で Silverlight が使えない そういえば、最近 Google Chrome では、Silverlight が使えなくなりました。現在では chrome://flags/NPAPI を有効 にすれば使えるようになりますが、9月には全く使えなくなるという話です。 そもそも、Java と Adobe Reader と Adobe Flash と Microsoft Silverlight は、きっちり最新に更新しないと脆弱性狙われて悪意のあるサイトにアクセスするだけでウイルスに感染する元凶なので、当然と言えば当然なんですが、いきなりいろいろやってくれるのであせる事が最近多いです。ホント ▼ トレンドマイクロ セキュリティブログ 狙いは IE、Java、Flash、Silverlight:Web経由脆弱性攻撃の手口 ▼ トレンドマイクロ is702 脆弱性を攻撃する不正サイトの手口
posted by at 2015-04-25 22:42 | Java | このブログの読者になる | 更新情報をチェックする

2014年05月25日

Eclipse : プライベートクラスの作成

プライベートクラスを作成するソースコードを選択して右クリックします



『エンクロージング型』をチェックし、その横の名前がソースコードのクラス名である事を確認し、private ラジオボタンを選択して、スーパークラスは特に必要なければ、『java.lang.Object』のまま完了します



すると、ソースコードの先頭にプラベートクラスのブロックが作成されます



▼ ブロックの位置変更は、『アウトライン』で

ドラッグして移動させます





posted by at 2014-05-25 00:00 | Java | このブログの読者になる | 更新情報をチェックする

2014年05月14日

Java の授業で社員マスタメンテを作成しています

DB 処理に関しては以下の汎用コードを使い、MS Access のみに限定して作成しました。( 殆どコピペと微調整で作成できます )

Eclipse + WindowBuilder : JDBC と ODBC を使った、オールマイティなデータベース接続サンプル( MySQL / SQLServer / Oracle / Postgres / MS Access)

処理そのものより、Eclipse + WindowBuilder の機能を使う練習です。変数名や、クラス名、アクションを使ったイベント作成等、ソースコードの見渡しがかなりすっきりしているはずです。
public class Main extends JFrame {

	private JPanel contentPane;
	private JTextField syainCode;
	private JTextField syainName;
	private final Action checkAction = new CheckAction();
	private final Action cancelAction = new CancelAction();
	private JButton checkButton;
	private JButton updateButton;
	private JButton cancelButton;

	private String currentDir = null;
	private Connection con = null;
	private Statement stmt = null;
	private ResultSet rset = null;
	
	
	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Main frame = new Main();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public Main() {
		addWindowListener(new WindowAdapter() {
			@Override
			public void windowActivated(WindowEvent arg0) {
				Main.this.setLocationRelativeTo(null);
				
				currentDir = System.getProperty("user.dir");
				System.out.println(currentDir);
			}
		});
		setResizable(false);
		setTitle("\u793E\u54E1\u30DE\u30B9\u30BF\u30E1\u30F3\u30C6");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel label = new JLabel("\u30B3\u30FC\u30C9");
		label.setBounds(31, 32, 50, 13);
		contentPane.add(label);
		
		JLabel label_1 = new JLabel("\u6C0F\u540D");
		label_1.setBounds(31, 88, 50, 13);
		contentPane.add(label_1);
		
		syainCode = new JTextField();
		syainCode.setBounds(78, 29, 50, 19);
		contentPane.add(syainCode);
		syainCode.setColumns(10);
		
		syainName = new JTextField();
		syainName.setEnabled(false);
		syainName.setColumns(10);
		syainName.setBounds(78, 85, 202, 19);
		contentPane.add(syainName);
		
		checkButton = new JButton("\u78BA\u8A8D");
		checkButton.setAction(checkAction);
		checkButton.setBounds(304, 28, 106, 21);
		contentPane.add(checkButton);
		
		updateButton = new JButton("\u66F4\u65B0");
		updateButton.setEnabled(false);
		updateButton.setBounds(304, 170, 106, 21);
		contentPane.add(updateButton);
		
		cancelButton = new JButton("\u30AD\u30E3\u30F3\u30BB\u30EB");
		cancelButton.setAction(cancelAction);
		cancelButton.setEnabled(false);
		cancelButton.setBounds(304, 208, 106, 21);
		contentPane.add(cancelButton);
		
		
	}
	
	private class CheckAction extends AbstractAction {
		public CheckAction() {
			putValue(NAME, "確認");
			putValue(SHORT_DESCRIPTION, "Some short description");
		}
		public void actionPerformed(ActionEvent e) {
			
			// 実際は、getConnect が失敗した場合の処理が必要です
			getConnect();
			
			try {
				
				stmt = con.createStatement();
				String scode = syainCode.getText();
				rset = stmt.executeQuery ( "select * from 社員マスタ where 社員コード = '" + scode + "'" );
				if ( rset.next() ) {
					syainName.setText(rset.getString( "氏名" ));
					
					syainCode.setEnabled(false);
					checkButton.setEnabled(false);

					syainName.setEnabled(true);
					updateButton.setEnabled(true);
					cancelButton.setEnabled(true);
					
					syainName.requestFocusInWindow();
					syainName.selectAll();
					
				}
				else {
					JOptionPane.showMessageDialog(contentPane, "入力した社員コードは存在しません");
					syainCode.requestFocusInWindow();
					syainCode.selectAll();
				}
				
				rset.close();
				stmt.close();
				
			} catch (Exception e1) {
				// TODO 
				e1.printStackTrace();
			}			
			
			con.close();

		}
	}
	private class CancelAction extends AbstractAction {
		public CancelAction() {
			putValue(NAME, "キャンセル");
			putValue(SHORT_DESCRIPTION, "Some short description");
		}
		public void actionPerformed(ActionEvent e) {
			Main.this.syainCode.setEnabled(true);
			Main.this.checkButton.setEnabled(true);

			Main.this.syainName.setEnabled(false);
			Main.this.updateButton.setEnabled(false);
			Main.this.cancelButton.setEnabled(false);
			
			syainName.setText("");
		}
	}
	

	private boolean getConnect() {
		
		boolean connect_result = true;
		String connectionString = "";

		// *********************************************
		// ODBC 用接続文字列
		// *********************************************
		// MDB
		connectionString = "Provider=MSDASQL"
				+ ";Driver={Microsoft Access Driver (*.mdb)}"
				+ ";Dbq=" + currentDir + "\\data\\販売管理C.mdb" + ";";

		
		try {
			Properties prop = new Properties();
			prop.put("charSet", "MS932");
			System.out.println(connectionString);
			con = DriverManager.getConnection("jdbc:odbc:"+connectionString, prop);
			
		} catch (Exception e1) {
			// TODO 
			e1.printStackTrace();
			connect_result = false;
		}
		
		return connect_result;
	}
	
}

ウインドウの初期処理として windowActivated を使っているのは、このイベントが重要だからです。初期処理であれば、インスタンス内より呼び出すメソッドを一つ作成すればいいのですが、この段階ではこちらのほうが勉強になります。また、コンストラクタ内は WindowBuilder が自動的にコードを書くのでこの段階ではあまり触りたく無いという事情もあります。

まだ、項目や入力チェックは殆ど実装されていません。


posted by at 2014-05-14 02:28 | Java | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します