- - PR -
ワイルドカード検索について。
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-02-25 11:52
初心者なのでなにかと無知ではありますが、
皆様のご意見をいただければ幸いです。 ただ今私は、SELECT A,B,C FROM D WHERE Id LIKE '%5%' のようにして、ヒットしたものをgetString(0)などとし、 ひとつずつプロパティにセットし、それをArrayListとして返すクラスを作っています。 しかし、ひとつずつArrayListに格納するのがなかなかうまくいかず悩んでいます。 Dim reader As DbDataReader = command.ExecuteReader() とし、If reader.Read() や、Do While reader.Read() をつかって、たとえば CLASS.PROPERTY1 =reader.GetString(0) CLASS.PROPERTY2 =reader.GetString(1) ARRAYLIST.Add(CLASS) のようにしても意図するような値が返ってきません。 みなさまのご意見ご指摘などいただければ幸いです。 よろしくお願いいたします。 | ||||||||||||
|
投稿日時: 2007-02-25 13:02
デバッグはしていますか? ご自分でどこまで確認されていますか?
「意図するような値が返ってきません」と言われても、回答者側では hoshino さんがどのような値が返ってくることを想定しているのか分かりません。 現在、何をどこまで確認し、何を期待しているのかを具体的に書いてみてはいかがでしょう。 | ||||||||||||
|
投稿日時: 2007-02-25 13:06
> 意図するような値が返ってきません。
ここが重要です。 どのような値が返ってきて、どのように意図されていない値なのでしょうか? 「ワイルドカード検索について」とあるので、SELECT 文の結果が意図しないデータということでしょうか? それとも、クエリの結果が DataReader から正しく取得できないということでしょうか? | ||||||||||||
|
投稿日時: 2007-02-25 13:22
みなさまご指摘ありがとうございます。
説明不足、大変失礼いたしました。 フォーム画面のTextBoxに入力された値を、'%text%' の形でDBに検索をかけます。 そしてひっとした値を一つずつArrayListに格納し、 フォーム画面のGridViewなどにバインドさせたいと思っています。 デバッグが通り、値がバインドされても一番最初にヒットした列が複数バインドしていたり、一番最後にヒットした値が複数バインドされたりしてしまいます。 私が意図しているのは、TextBoxに入力された文字列を含むデータを抽出して一つずつバインドさせたいのです。 DataReader からは正しく取得できているのですが、TextBoxの文字列を含むデータをすべて一つずつバインドする式に悩んでいます。 これでわかっていただけるでしょうか? | ||||||||||||
|
投稿日時: 2007-02-25 13:57
正直、私には未だに何をしたいのかが分かりません。。。
GridView にデータバインドさせたいのなら、DataSource に DataTable などをセットしてバインドすればいいのでは? 最終的にはフォーム画面の GridView にデータをセットしたいのだと考えますが、それを DataReader で1件ずつ取得する必要性が見えません。 | ||||||||||||
|
投稿日時: 2007-02-25 14:07
ArrayListに格納できないのか、バインドできないのかどちらなのでしょうか?
DataReaderから正しく取得できているのであれば、 hosinoさんが仰る CLASS.PROPERTY1 =reader.GetString(0) CLASS.PROPERTY2 =reader.GetString(1) はうまく動作しているということですよね? いずれにせよ、ちょっとわかりにくいですね... _________________ -------------------------------------------- HIRO's.NET PowerShell,VB.NET,C#のTipsを掲載しています HIRO's.NET Blog PowerShell,VB.NET,C#を中心とした技術ネ | ||||||||||||
|
投稿日時: 2007-02-25 14:23
CLASS が何かのクラスのインスタンスを指す変数だとして、各行ごとにこのインスタンスを生成していないのでは? と推測してみます。
とりあえず、今どのようなコードになっているのかをもう少し具体的に開示していただけないと答えにくいです。 | ||||||||||||
|
投稿日時: 2007-02-25 14:27
変数CLASSへのインスタンスの作成がDo While ループの外で
1回だけ行われているのが原因じゃないかなと思います。 #まぁソース見てないのではずしてるかもしれませんが <追記> きよのさんとかぶってしまった・・・orz </追記> [ メッセージ編集済み 編集者: よねKEN 編集日時 2007-02-25 14:28 ] |