Home > Archives > 2008年1月 Archive
2008年1月 Archive
VSUGコードコンテスト2007 入賞
- 2008年1月21日 22:45
年末年始と、弁慶フレームワークばかりいじっていた訳ですが、その理由はVSUGコードコンテスト2007に応募するためでした。
勘の良い人なら気付いてたかな?
そして、本日VSUG事務局より入賞のお知らせが届きました。
日本オラクル部門ということで、大変名誉ある賞を受賞できて光栄です。でも、景品はWiiがほしかt
頑張っていれば、必ずいいことがあるということで、これからも自己研鑽に勤めていこうと思うのでした。
- Comments: 0
- TrackBacks: 0
[オープンソース]弁慶フレームワーク1.1.0 公開
- 2008年1月13日 17:11
- オープンソース
弁慶フレームワーク1.1.0
小弁慶フレームワーク1.0.0
DAOGenerator 1.1.0
DAOGeneratorCE 1.0.0
を公開しました。
今回、弁慶フレームワークのドキュメントも公開しました。
どういう考えで作ればよいのか、まずはご覧ください。
- Comments: 0
- TrackBacks: 0
[オープンソース]弁慶フレームワーク 1.1.0
- 2008年1月 7日 22:51
- オープンソース
2007/12/27のエントリで書いたように、弁慶フレームワークをバージョンアップしました。
今度のバージョンでは、OracleとPostgreSQLにも対応しました。
これにより、異なるデータベースを複数使うシステム(データ移行等が考えられそう)が、作りやすくなったのではないかと思います。
現在、ドキュメントを整備しておりますので、しばらくお待ちください。
今回のバージョンより、システムの説明が書いてあるHTMLヘルプがダウンロードできるようになります。
そして、小弁慶フレームワークも完成いたしました。
小弁慶は、SQLServer Compact Editionのみに対応しております。
が、しかし...
私のJASJAR i-mateで動作確認していたのですが、動作が滅茶苦茶重いのですよ...
2行しか存在しないテーブルのデータを、DataGridにBindするだけで、5秒以上掛かります...
どうやら、小弁慶の問題ではなく、SQLServer Compact Editionが重いようなので、どうにもならない気がします。
まあ、CPUパワーも無いですし。
こちらも、公開までしばらくお待ちくださいませ。
公開の準備が出来次第、このブログで告知します。
- Comments: 0
- TrackBacks: 0
【PostgreSQL】フィールド一覧の取得
- 2008年1月 5日 22:40
- データベース
PostgreSQLで、フィールド一覧を取得する方法です。
TABLEのみが対象になります。
フィールドサイズの取得は、面倒なのですがフィールドタイプで固定な数値を割り振りました。
「@TABLE_NAME」は、バインド変数なので、対象としたいテーブル名を入れてください。2箇所あるので注意してください。
SELECT
A.FIELD_NAME,
A.FIELD_TYPE,
CASE WHEN A.FIELD_SIZE IS NULL THEN 0 ELSE A.FIELD_SIZE END AS FIELD_SIZE,
CASE WHEN B.IS_PK IS NULL THEN 0 ELSE B.IS_PK END AS IS_PK,
A.IS_NULLABLE
FROM
(
SELECT
PG_CLASS.RELNAME AS TABLE_NAME,
PG_ATTRIBUTE.ATTNUM AS FIELD_NUM,
PG_ATTRIBUTE.ATTNAME AS FIELD_NAME,
PG_TYPE.TYPNAME AS FIELD_TYPE,
CASE WHEN PG_TYPE.TYPNAME = 'bpchar' THEN PG_ATTRIBUTE.ATTTYPMOD-4
WHEN PG_TYPE.TYPNAME = 'varchar' THEN PG_ATTRIBUTE.ATTTYPMOD-4
WHEN PG_TYPE.TYPNAME = 'numeric' THEN ( PG_ATTRIBUTE.ATTTYPMOD-4 ) / 65536
WHEN PG_TYPE.TYPNAME = 'decimal' THEN ( PG_ATTRIBUTE.ATTTYPMOD-4 ) / 65536
WHEN PG_TYPE.TYPNAME = 'date' THEN 10
WHEN PG_TYPE.TYPNAME = 'time' THEN 8
WHEN PG_TYPE.TYPNAME = 'timestamp' THEN 19
WHEN PG_TYPE.TYPNAME = 'bool' THEN 1 END AS FIELD_SIZE,
CASE WHEN PG_ATTRIBUTE.ATTNOTNULL = TRUE THEN 0
WHEN PG_ATTRIBUTE.ATTNOTNULL = FALSE THEN 1 END AS IS_NULLABLE
FROM
PG_CLASS INNER JOIN PG_ATTRIBUTE ON PG_ATTRIBUTE.ATTRELID = PG_CLASS.OID
INNER JOIN PG_TYPE ON PG_TYPE.OID = PG_ATTRIBUTE.ATTTYPID
WHERE
PG_CLASS.RELNAME = @TABLE_NAME AND
PG_ATTRIBUTE.ATTNUM >= 0 AND
PG_CLASS.RELKIND = 'r'
) AS A LEFT JOIN
(
SELECT
PG_CLASS.RELNAME AS TABLE_NAME,
PG_ATTRIBUTE.ATTNUM AS FIELD_NUM,
PG_ATTRIBUTE.ATTNAME AS FIELD_NAME,
1 AS IS_PK
FROM
PG_CLASS INNER JOIN PG_ATTRIBUTE ON PG_ATTRIBUTE.ATTRELID = PG_CLASS.OID
INNER JOIN PG_CONSTRAINT ON PG_CLASS.OID = PG_CONSTRAINT.CONRELID
WHERE
PG_CLASS.RELNAME = @TABLE_NAME AND
PG_CONSTRAINT.CONTYPE = 'p' AND
PG_ATTRIBUTE.ATTNUM = ANY(PG_CONSTRAINT.CONKEY)
) AS B ON A.TABLE_NAME = B.TABLE_NAME AND A.FIELD_NUM = B.FIELD_NUM
ORDER BY
A.TABLE_NAME,
A.FIELD_NUM
- Comments: 0
- TrackBacks: 0
【PostgreSQL】テーブル一覧の取得
- 2008年1月 4日 22:35
- データベース
PostgreSQLで、テーブル一覧を取得する方法です。
対象となるのは、TABLEだけです。
VIEW名などを別の管理表を見れば取れるのですが、フィールド情報を取得できるのがTABLEだけのようです。
PG_TABLESをただ取ってきただけだと、管理表なども取れてしまうので、WHERE句で強引に除外しています。
SELECT
SCHEMANAME,
TABLENAME
FROM
PG_TABLES
WHERE
NOT TABLENAME LIKE 'pg%'
AND NOT SCHEMANAME = 'information_schema'
ORDER BY
SCHEMANAME,
TABLENAME
- Comments: 0
- TrackBacks: 0
【SQLServer Compact】フィールド一覧の取得
- 2008年1月 3日 22:04
- データベース
SQLServer Compact Editionでフィールド一覧を取得する方法です。
PKかどうかを判定するために、インデックス表のPKレコードが結合できたときにPKとみなしています。
「@TABLE_NAME」は、バインド変数なので、対象としたいテーブル名を入れてください。
SELECT
A.COLUMN_NAME AS FIELD_NAME,
A.DATA_TYPE AS FIELD_TYPE,
A.AUTOINC_INCREMENT,
A.CHARACTER_MAXIMUM_LENGTH,
CASE WHEN B.PRIMARY_KEY IS NULL THEN 0 ELSE 1 END AS IS_PK,
A.IS_NULLABLE
FROM
INFORMATION_SCHEMA.COLUMNS AS A
LEFT OUTER JOIN INFORMATION_SCHEMA.INDEXES AS B ON A.COLUMN_NAME = B.COLUMN_NAME AND B.PRIMARY_KEY = 1
WHERE
A.TABLE_NAME = @TABLE_NAME
ORDER BY
A.ORDINAL_POSITION
- Comments: 0
- TrackBacks: 0
【SQLServer Compact】テーブル一覧の取得
- 2008年1月 2日 21:54
- データベース
以前にも、SQLServerのテーブル一覧を取得するエントリを書いたのですが、Compact Editionではやり方が異なるので、紹介しておきます。
SELECT
*
FROM
INFORMATION_SCHEMA.TABLES
WHERE
TABLE_TYPE = 'TABLE'
ORDER BY
TABLE_TYPE,
TABLE_NAME
- Comments: 0
- TrackBacks: 0