Forums: Open Discussion (Thread #24476)

Dynamic Data (2009-11-04 12:16 by Anonymous #46822)

●私はDATA.INIファイルがあります
DATA.INIの内容:
 Col:項目1
 ColNo:1
 ColName:A

 Col:項目2
 ColNo:2
 ColName:B
...........
●尚、データベースでEXAMBLETABLEテーブルがあります
EXAMBLETABLEの定義:
CREATE TABLE EXAMBLETABLE(
 項目1 VARCHAR2(1);
 項目2 VARCHAR2(1);
.........

今、私はSELECT A,B FROM EXAMBLETABLEのQueryをしたい時にどうしたらいですか?

Reply to #46822×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: Dynamic Data (2009-11-04 19:24 by taromaru #46830)

「DATA.INI」が何のことか分からないため、
回答になっているかどうか分かりませんが、
SQLを使用する方法であれば、
terasoluna-server4jweb-doc_2.0.2.0に同梱されているチュートリアルの
・2.6.3 SQLの設定
・2.6.4 ビジネスロジッククラスの作成とDAOの設定
が参考になるかと思います。

「項目1 VARCHAR2(1)」で作成した列(「A」という名前ではない列)を
SQLで「A」として取得したいという意図であれば、
SQLでAS句を使用し、別名をつけます。(「SELECT 項目1 AS A,…」)
Reply to #46822

Reply to #46830×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: Dynamic Data (2009-11-05 10:27 by Anonymous #46840)

ご回答、ありがとうございました。
ただ、私の質問はちょっと違います、
私の意味はDATA.INIファイルでEXAMTABLEテーブルの列名称と列番号が保存されます。
EXAMTABLEテーブルで列番号だけ表示される、列名が不明であることです。
で、私は列名がSELECTしたい時にどうすれば良いでしょうか?

以上、宜しくお願い致します。
Reply to #46830

Reply to #46840×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: Dynamic Data (2009-11-05 10:34 by Anonymous #46844)

私の意味は列名からDATA.INIで列番号を取って、取った列番号を使ってEXAMTABLEテーブルをSELECTです。
QueryDAOクラスがオーバーライド出来るかどか?
Reply to #46840

Reply to #46844×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: Dynamic Data (2009-11-05 13:22 by taromaru #46845)

・「EXAMTABLEテーブルで列番号だけ表示される、列名が不明である」
・「列名がSELECTしたい」
・「列名からDATA.INIで列番号を取って、
  取った列番号を使ってEXAMTABLEテーブルをSELECT」
上記は、内容が矛盾しているように見えるので、
恐らく日本語を間違っていると思います。

最初の質問のDATA.INIとSELECT文があっているものとして、
仮に、以下のように解釈します。

・SELECTすべき列は、外部ファイルのDATA.INIに記述されている。
・DATA.INIに記述されている列情報を使用し、SELECT文を動的に構築したい。
・画面に表示する際、DATA.INIのColNoの順に並べたい。
------------------
DATA.INIの内容が、
 Col:項目1
 ColNo:1
 ColName:A
なら、
SELECT A FROM EXAMTABLEを実行し

DATA.INIの内容が、
 Col:項目1
 ColNo:1
 ColName:A

 Col:項目2
 ColNo:2
 ColName:B
なら、
SELECT A,B FROM EXAMTABLEを実行したい。
------------------

上記であっている場合は、
・ビジネスロジックによって、取得する列は固定なのか、
 それとも、DATA.INI依存で動的なのか
の情報を併せて記述してください。

また、
・使用しているフレームワーク(Server-Web/Rich, Batch等)
・DB(Oracle等)
を併記していただければ、
より的確な回答ができると思います。
Reply to #46844

Reply to #46845×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: Dynamic Data (2009-11-06 18:44 by Anonymous #46859)

いつもご親切、ありがとうございます。
私は外国人だから、日本語で問題を説明するのが難しいです。ごめんなさい。

すみませんが、私の質問をもう一回説明いたします。

DATA.INIの内容が、
[column01]
ColNo: 1
ColName: A

[column02]
ColNo: 2
ColName: B
なら、EXAMTABLE(A,B)(A,Bは列名です)

DATA.INIの内容が、
[column01]
ColNo: 1
ColName: C

[column02]
ColNo: 2
ColName: D
なら、EXAMTABLE(C,D)(C,Dは列名です)

それで、EXAMTABLEのColumn1はAかCかまだ分からないので、DATA.INIの「ColNo」を使用し、SELECT文を動的に構築したい。

私のしたいことが、
SQL:
SELECT 1,--([column01]のColNoの値)、
     2 --([column02]のColNoの値) 
FROM EXAMTABLE
なら、SELECTの返却リストの内容は{A、B}、{C、D}によって返却する

以上、宜しくお願い致します。
Reply to #46845

Reply to #46859×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: Dynamic Data (2009-11-09 15:22 by taromaru #46885)

> EXAMTABLEのColumn1はAかCかまだ分からないので
そのまま解釈すると、
・Column1がAかCか分かったときにsqlMapをメンテナンスする
というのが最善の策です。


他に、
sqlMapに列名を直接記述せずに、
パラメータで列名を変更する方法を示します。

sqlMap.xml
------------------
<select id="sel1" parameterClass="java.util.List"
resultClass="jp.Result">
SELECT
<dynamic>
<iterate conjunction=",">
$[]$
</iterate>
</dynamic>
FROM
EXAMTABLE
</select>
------------------

xxBLogic.java
------------------
List<String> colList = new ArrayList<String>();
colList.add("A as column01");
colList.add("B as column02");
List<Result> resList = queryDAO.executeForObjectList("sel1", colList);
------------------
※colListの構築部分は、
 DATA.INIを参照してListに詰める処理に置き換えてください。

Result.java
------------------
private String column01;
private String column02;
+setter/getter
------------------

sqlMap.xmlの中で使用した$~$のパラメータは、
文字列をそのままSQLとして埋め込む際に使用する書き方です。
SQLインジェクションの危険性があるため、
システムのユーザが入力する値のバインドには使用しないでください。
(システムのユーザ(管理者ではなくユーザ)が入力できるパラメータは、
$~$ではなく#~#を使用します。)
Reply to #46859

Reply to #46885×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login