C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[11]: テーブルアダプタについて


(過去ログ 29 を表示中)

[トピック内 13 記事 (1 - 13 表示)]  << 0 >>

■13768 / inTopicNo.1)  テーブルアダプタについて
  
□投稿者/ coco (2回)-(2008/02/04(Mon) 18:33:14)

分類:[ASP.NET (C#)] 

テーブルアダプタをVisualStudio2005のウィザードで作成しようとしています。

しかしSQLのパラメータがstring配列に入っていてそれをIN句などでメソッドの生成をしたい
のですがどうすればいいのか分かりません。

パラメータが配列の場合はウィザードでできるのでしょうか?
それとも他の方法でするしかないのでしょうか?

CommandCollectionを定義してコードで利用する方法も見つけたのですが
いまいち説明が分かりません。

もし分かる方がいれば教えてください。
引用返信 編集キー/
■13777 / inTopicNo.2)  Re[1]: テーブルアダプタについて
□投稿者/ やじゅ (93回)-(2008/02/04(Mon) 20:35:25)
やじゅ さんの Web サイト
No13768 (coco さん) に返信
> テーブルアダプタをVisualStudio2005のウィザードで作成しようとしています。
>
> しかしSQLのパラメータがstring配列に入っていてそれをIN句などでメソッドの生成をしたい
> のですがどうすればいいのか分かりません。
>

"IN" を使う時に TableAdapter のメソッドにパラメータを渡すには?
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=25484&forum=7&start=5
引用返信 編集キー/
■13780 / inTopicNo.3)  Re[2]: テーブルアダプタについて
□投稿者/ coco (3回)-(2008/02/04(Mon) 21:06:56)
"IN" を使う時に TableAdapter のメソッドにパラメータを渡すには?
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=25484&forum=7&start=5


よく見てもいまいち分からないのですがパラメータが一つの変数ではなく配列の場合でもこれで
いけるのでしょうか??
引用返信 編集キー/
■13783 / inTopicNo.4)  Re[3]: テーブルアダプタについて
□投稿者/ やじゅ (97回)-(2008/02/04(Mon) 22:28:47)
やじゅ さんの Web サイト
No13780 (coco さん) に返信
> "IN" を使う時に TableAdapter のメソッドにパラメータを渡すには?
> http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=25484&forum=7&start=5
>
>
> よく見てもいまいち分からないのですがパラメータが一つの変数ではなく配列の場合でもこれで
> いけるのでしょうか??

SQLに渡すパラメータが文字列配列に入っている、
それをIN句などでメソッドの生成をしたい??

初期の質問の意図をよく理解していなかったかも。
もう少し、詳しく教えてください。

>パラメータが配列の場合はウィザードでできるのでしょうか?
ちなみに、これは無理
引用返信 編集キー/
■13789 / inTopicNo.5)  Re[4]: テーブルアダプタについて
□投稿者/ coco (5回)-(2008/02/04(Mon) 23:41:26)
説明不足ですいません。

えっとやじゅさんのおっしゃるとおり

>SQLに渡すパラメータが文字列配列に入っている、
>それをIN句などでメソッドの生成をしたい??

まさにそれがしたいのです!!

ウィザードで無理ならコーディングするしかないと思いますが
その方法がいまいち理解できないので教えていただければと思います。
引用返信 編集キー/
■13794 / inTopicNo.6)  Re[5]: テーブルアダプタについて
□投稿者/ やじゅ (99回)-(2008/02/05(Tue) 00:47:11)
やじゅ さんの Web サイト
No13789 (coco さん) に返信
> 説明不足ですいません。
>
> えっとやじゅさんのおっしゃるとおり
>
> >SQLに渡すパラメータが文字列配列に入っている、
> >それをIN句などでメソッドの生成をしたい??
>
> まさにそれがしたいのです!!
>

ごめんなさい、私が逆に質問していたのですが…
書き方は良くなかったかも。

SQLに渡すパラメータが文字列配列に入っている

str(1) = "A"
str(2) = "B"
str(3) = "C"

それをIN句などでメソッドの生成をしたい?? とは?
例 IN(str)

引用返信 編集キー/
■13797 / inTopicNo.7)  Re[6]: テーブルアダプタについて
□投稿者/ れい (416回)-(2008/02/05(Tue) 02:18:48)
No13794 (やじゅ さん) に返信
> SQLに渡すパラメータが文字列配列に入っている
> 例
> str(1) = "A"
> str(2) = "B"
> str(3) = "C"
>
> それをIN句などでメソッドの生成をしたい?? とは?

上記strから
「SELECT mofumofu FROM table WHERE id IN ( 'A', 'B', 'C' )」
なSQLを発行するようなTableAdapterを作りたいということかしら?

それなら、

No13780 (coco さん) に返信
> "IN" を使う時に TableAdapter のメソッドにパラメータを渡すには?
> http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=25484&forum=7&start=5

で書かれている通り、ウィザードでは無理ですね。

ガリガリ書きましょう。
引用返信 編集キー/
■13804 / inTopicNo.8)  Re[7]: テーブルアダプタについて
□投稿者/ coco (6回)-(2008/02/05(Tue) 09:31:57)
うまく言えなくてすいません。
えっとやりたいことをコードで書くと
string str[] ={1,2,3};

SELECT * FROM TABLE WHERE IN(str[]);

って感じです。配列がIN句のパラメータになるのか
ということです。

ウィザードではできなさそうなことがわかるのですが
コードでもどうすればいいのいまいち分からず…

って感じです。OracleCommandとかを使って一から作成する
のでしょうか?
引用返信 編集キー/
■13808 / inTopicNo.9)  Re[8]: テーブルアダプタについて
□投稿者/ Mr.T (178回)-(2008/02/05(Tue) 10:10:01)
Mr.Tです、こんにちは。

> ウィザードではできなさそうなことがわかるのですが
> コードでもどうすればいいのいまいち分からず…

れいさんが書いているように、がりがり書くしかないです。
つまり、もっともベタベタに書くと

string[] hoge = {"1","2","3"};
string sql = "select * from hogeTable where ary in ("
			+ "'" + hoge[0] + "',"
			+ "'" + hoge[1] + "',"
			+ "'" + hoge[2] + "')";
Console.WriteLine(sql);

で、配列渡してINの中身を返すメソッド作るなら、
ループでまわして、いっこいっこを文字連結するのが一番ベタ。
#カンマを連結するときには注意

C#なので、こんなのもありますが、まずは自分でやってみてください。
http://blogs.wankuma.com/episteme/archive/2007/10/28/104563.aspx

引用返信 編集キー/
■13819 / inTopicNo.10)  Re[8]: テーブルアダプタについて
□投稿者/ やじゅ (101回)-(2008/02/05(Tue) 12:06:33)
No13804 (coco さん) に返信
> SELECT * FROM TABLE WHERE IN(str[]);
> って感じです。配列がIN句のパラメータになるのか
> ということです。

現状ではなりません。

> ウィザードではできなさそうなことがわかるのですが
> コードでもどうすればいいのいまいち分からず…

配列以外の場合のパラメータをそのままセットすればよいですが、
配列によるパラメータは未対応なので、その場合は前回示したリンク先のように文字列連結するしかないです。
// Parameter を使用せず、ID の配列を Join し文字列置換
Adapter.SelectCommand.CommandText =
Adapter.SelectCommand.CommandText.Replace("@rooming_ids", string.Join(",", ids));
引用返信 編集キー/
■13826 / inTopicNo.11)  Re[9]: テーブルアダプタについて
□投稿者/ coco (7回)-(2008/02/05(Tue) 13:53:39)
ありがとうございます。

>Adapter.SelectCommand.CommandText =
>Adapter.SelectCommand.CommandText.Replace("@rooming_ids", string.Join(",", ids));
を利用してやってみたいと思います。

これはウィザードで作ったFillメソッドのSQLのパラメータをコードで追加しているのでしょうか?

ウィザードで作ったFillメソッドのいじり方が分からないのですが…

検索してもサンプル等がなかなか見つかりませんので教えていただければと思います。
引用返信 編集キー/
■13834 / inTopicNo.12)  Re[10]: テーブルアダプタについて
□投稿者/ やじゅ (103回)-(2008/02/05(Tue) 15:44:07)
No13826 (coco さん) に返信
> ありがとうございます。
>
> >Adapter.SelectCommand.CommandText =
> >Adapter.SelectCommand.CommandText.Replace("@rooming_ids", string.Join(",", ids));
> を利用してやってみたいと思います。
>
> これはウィザードで作ったFillメソッドのSQLのパラメータをコードで追加しているのでしょうか?
>
> ウィザードで作ったFillメソッドのいじり方が分からないのですが…
>

ウィザードで作ったFillメソッドは無視してください。
上の例ですと
Adapter.SelectCommand.CommandTextを見ると、SQL文が入っています
例 SELECT * FROM TABLE WHERE IN(@rooming_ids)

string ids[] ={1,2,3}; としていた場合
それを単純に文字列置換しているだけです。 @rooming_ids→1,2,3
Adapter.SelectCommand.CommandText.Replace("@rooming_ids", string.Join(",", ids));

よって下記のSQL文が生成されます。
SELECT * FROM TABLE WHERE IN(1,2,3)




引用返信 編集キー/
■13850 / inTopicNo.13)  Re[11]: テーブルアダプタについて
□投稿者/ coco (8回)-(2008/02/05(Tue) 17:29:47)
2008/02/05(Tue) 20:21:52 編集(投稿者)
2008/02/05(Tue) 20:21:43 編集(投稿者)

分かりました。ありがとうございます。

教えていただいた方法でうまくいきました。

さらなる飛躍を目指してがんばりますw
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -