SQLの窓

2011年10月09日


JSP : 実行中の .jsp と同じフォルダにあるファイルの実際のパスを取得する

jajakarta の 日本語ページドキュメントは日本語が化けるので調べるのが
面倒ですが、application.getRealPath と、request.getServletPath
で実現可能です。

// この値はCGI変数のSCRIPT_NAMEと同じ値
String SCRIPT_NAME = request.getServletPath();
out.print( SCRIPT_NAME );
out.print( "<br />" );

// 文字列分解
String[] pathResult = SCRIPT_NAME.split("/");

// 分解した文字列を必要な部分再配置
int idx = pathResult.length;
String mainPath = "";
for( int i = 1; i < pathResult.length - 1; i++ ) {
	if ( i == 1 ) {
		mainPath += pathResult[i];
	}
	else {
		mainPath += ( "/" + pathResult[i] );
	}
}

// 再配置文字列
out.print( mainPath );
out.print( "<br />" );

// 目的のフルパス
String strRealPath = application.getRealPath( mainPath + "/mydata.txt" );
out.print( strRealPath );
out.print( "<br />" );



posted by lightbox at 2011-10-09 20:09 | java : JSP | このブログの読者になる | 更新情報をチェックする

2011年10月04日


java(JSP) : テーブル名一覧と列名一覧の取得

テータベースは、ODBC 経由の Oracle です

関連する記事

VB.net : GetSchema メソッドでデータベース内のテーブル一覧と指定したテーブルの列名一覧を取得する

Microsoft の ODBC アクセスとあまり変わりはありません。
データベースの情報は接続オブジェクトに依存します
続きを読む( ソースコード )

posted by lightbox at 2011-10-04 14:12 | java : JSP | このブログの読者になる | 更新情報をチェックする

Oracle Database 11g のJDBC実装では、SIDを使用したデータベースURL接続文字列は廃止されています

SQLJの基本事項

注意:
Oracle Database 11g のJDBC実装では、SIDを使用したデータベースURL接続文字列は廃止されています。次に例を示します(orclがSID)。 
jdbc:oracle:thin:@localhost:1521:orcl

警告が生成されますが、致命的なエラーではありません。かわりに、次の例のようにmyserviceなどのデータベース
・サービス名を使用することをお薦めします。
 jdbc:oracle:thin:@localhost:1521/myservice

 データベース・サービス名の詳細は、『Oracle Database JDBC開発者ガイドおよびリファレンス』を参照してください。
TOMCAT の実装では、lib に ojdbc6.jar を置いて、プログラムで Class.forName( "oracle.jdbc.driver.OracleDriver" ); を実行した後、
// orcl はデフォルトです
DriverManager.getConnection("jdbc:oracle:thin:@PC名:1521/orcl","ユーザ","パスワード");

で接続確認しました。
( TOMCAT の classpath に登録すると、Class.forName は必要ありません )




タグ:Oracle JDBC
posted by lightbox at 2011-10-04 12:38 | Oracle | このブログの読者になる | 更新情報をチェックする

2011年10月03日


VBS : Textt サービスに書き込んだテキストを PC にダウンロード(配布)する

環境によりますが、同一ユーザ、同一パスでログインしている複数のPC の共有に
テキストデータを一括配布するバッチを比較的簡単に作成できます。
( 出力側パスに \\PC名\共有 等を使用します )
' ダウンロード用のオブジェクト
Set objSrvHTTP = Wscript.CreateObject("Msxml2.ServerXMLHTTP")

' ダウンロード要求
Call objSrvHTTP.Open("GET", "http://textt.net/ユーザID/ファイル番号.txt", False )
objSrvHTTP.Send

' ※ Textt は Content-type は送られずに UTF-8 なので 問題は出ません

' ファイルシステムオブジェクト
Set Fs = CreateObject( "Scripting.FileSystemObject" )

' 書き込むファイルのパスを指定します
' 2はファイルを書き込み専用として開きます
' True はファイルが存在しなかった場合に新しいファイルを作成します
Set OutObj = Fs.OpenTextFile( "C:\TEST.txt", 2, True )

' WEB 上のファイルなので LF のみなので、CRLF に変換します
OutObj.Write( Replace( objSrvHTTP.responseText, vbLf, vbCrLf ) )

OutObj.Close()



posted by lightbox at 2011-10-03 15:46 | VBS + インターネット | このブログの読者になる | 更新情報をチェックする

2011年10月02日


PL/SQL : 最も簡単な CSV 出力 の記述

CSV イメージを最初から SQL で作成しておいて、取りだすデータが 1つの列にしておく事で高速な処理が可能になります
CREATE OR REPLACE PROCEDURE LIST_MEMBER
(
	/* カーソルの範囲指定用  */
	PM_STRING IN VARCHAR2
)

/**********************************************************/
/* 変数の定義 */
/**********************************************************/
AS
	WK_VALUE	VARCHAR2(2000);

	/* カーソルの定義(主に複数読み込み用)  */
	CURSOR cur_main IS
		SELECT
			社員コード||','||
			氏名||','||
			フリガナ||','||
			所属||','||
			性別||','||
			作成日||','||
			更新日||','||
			給与||','||
			手当||','||
			管理者||','||
			生年月日
			from "社員マスタ"
		where 社員コード <= PM_STRING;

	-- ディスクへ書き込むファイル名
	WK_FILENAME VARCHAR2(100) := 'syain.csv';
	-- ファイルにアクセスする為のハンドルの定義
	FILEHANDLE UTL_FILE.FILE_TYPE;

/**********************************************************/
/* 処理開始 */
/**********************************************************/
BEGIN
	DBMS_OUTPUT.PUT_LINE('デバッグ:開始');
	DBMS_OUTPUT.PUT_LINE('デバッグ:引数:'||PM_STRING);

	/* カーソルを開く */
	OPEN cur_main;

	-- 第一引数は、ディレクトリオブジェクトの名称( 但し文字列 )
	FILEHANDLE := UTL_FILE.FOPEN( 'MYDIR', WK_FILENAME, 'w' );

	/* ループ処理(ブロック) */
	LOOP 
		/* 定義したレコード変数に読み込み */
		FETCH cur_main INTO WK_VALUE;
		/* カーソルに対するシステム変数でデータ終わりを判断 */
		if cur_main%NOTFOUND then 
			/* ループ処理を脱出 */
			EXIT; 
		end if; 

		-- 書き込み
		UTL_FILE.PUT_LINE(FILEHANDLE,WK_VALUE);
	 
	END LOOP; 

	-- ファイルを閉じる
	UTL_FILE.FCLOSE( FILEHANDLE );

	/* カーソルを閉じる */
	CLOSE cur_main;

/**********************************************************/
/* 一番外側のブロックの例外処理 */
/**********************************************************/
$if 1=1 $then
EXCEPTION
	WHEN OTHERS THEN
		DBMS_OUTPUT.PUT_LINE('例外発生:'||SQLCODE||':'||SQLERRM);
$end
END;




posted by lightbox at 2011-10-02 00:18 | Oracle : PL/SQL | このブログの読者になる | 更新情報をチェックする

2011年10月01日


JSP : 単純なデータベースの更新( MySQL ODBC 5.1 Driver でDSNを作成しない接続 )

サンプルソースコードを使ってすぐできる実行環境は、以下で用意できます
( 含む Beans で lightbox.webapp )

Tomcat7 のインストールと、すぐ簡単にJSPアプリケーションテスト( DB アクセス、入力等 )

JSP と言っても、WEBアプリケーションには違い無いので、PHP での
$_GET にあたるものが必要になるので、Beans で実装しています。

ただ、TOMCAT + JSP では、メモリに乗ったままの状態で実行される事を
前提としているので、データベースの接続を継続するように記述してあり
ます。接続するのは最初の一度だけで、TOMCAT が終了するまで接続した
ままとなります。
※ reloadable="true" の設定ではアプリケーションを変更した場合にもリセットされます
※ マネージャよりアプリケーションを再起動した場合も同様です

MySQL に対してのアクセスなので実際は少しキャラクタセットの関係で
化ける文字が存在し、そのような時にはアプリケーションが止まってし
まう事がありました。( MySQL 側は UTF8 )

※ キャラクタセットの設定は ODBC ドライバのパラメータで行っています。
続きを読む( ソースコード )

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

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

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

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

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


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

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

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

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

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



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり