- - PR -
VB.NET SQL の検索結果をテキストボックスに表示したい
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-07-12 11:33
例外のメッセージどおりではないのでしょうか? Read メソッドを呼び出していますか? Read メソッドの戻り値が true の時に、SqlDataReader.Get~ メソッドを実行していますか?
(ソースを見ると、GetString メソッドから、GetValue メソッドに変わっているのですが...) SqlDataReader のインデクサ (デフォルト プロパティ) で、フィールド名でアクセスされてはいかがですか? reader("フィールド名") という書き方をします。
'tanto' と 'Modefy' という変数を定義しているかと思いますが、 この 2 つの変数の '型' が書かれていないので、わからないですよ、という意味です。 (コンパイル エラーが解決されたようなので、もう知る必要はないです)
Visual Studio を使用されているなら、型が何であるかは 「オブジェクト ブラウザ」 で確認できます。 また、MSDN ライブラリというリファレンスを見れば、全メンバの型が明記されています。 すべての型を知識として身に付ける必要はなく、調べれば済む問題だったりします。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||
|
投稿日時: 2006-07-14 12:22
じゃんぬねっとさん
返信ありがとうございます。 また、返事が遅くなりまして申し訳ありません。 いろいろと試してみたのですが、まだ正しく取得できない状況です。 まず、結果が0の場合に出るメッセージであることがわかりましたので、 SQL文が誤っていないかを確認することにしました。 SQL プロファイラでトレースをかけた状態で、該当のコマンドボタンを押して、以下のコマンドが実行されていることを確認しました。 exec sp_executesql N'select tanto, LastModefy from Logs where ID=@ID', N'@ID varchar(15)', @ID = 'A0000011111' で、これをクエリアナライザにコピーして実行し、結果を得られることを確認しました。(0件ではありませんでした) となると、結果からテキストボックスへ表示の段階で、失敗していると思われます。 ここまで確認できたのですが、以下のコードで、結果が0件となってしまう原因と対処策が不明です。 問題は、この部分の指定方法かな?と思うのですが・・。 あとは、Reader がちゃんと情報を受け取れていない? tanto.text = reader("tanto") Modefy.text = reader("Lastmodefy") 度々申し訳ありませんが、何かヒントがあれば、と思います。 よろしくお願いします。 ----CODE----- Sub cmd_Search_Click(sender As Object, e As EventArgs) dim conn as new sqlconnection() conn.connectionstring = "data source=localhost;Initial Catalog=test;Trusted_Connection=False;User ID=sa;Password=PASSWORD" dim cmd_Search as new sqlcommand() cmd_search.CommandText = "select tanto,LastModefy from Logs where ID=@ID" cmd_search.connection = conn dim ID2 as sqlparameter = cmd_Search.parameters.add("@ID", system.data.sqldbtype.varchar, 15) ID2.value = ID.text Dim reader As SqlDataReader conn.open() reader = cmd_search.ExecuteReader() tanto.text = reader("tanto") Modefy.text = reader("Lastmodefy") conn.close() | ||||||||||||||||
|
投稿日時: 2006-07-14 13:21
| ||||||||||||||||
|
投稿日時: 2006-07-14 13:27
kazukiさん
ありがとうございます! 解決しました。 なるほど・・・Readを行わないといけなかったのですね。。 (今作っているのがひと段落したら、プログラミングを1から勉強したいと思います・・・。) Sub cmd_Search_Click(sender As Object, e As EventArgs) dim conn as new sqlconnection() conn.connectionstring = "data source=localhost;Initial Catalog=test;Trusted_Connection=False;User ID=sa;Password=PASSWORD" dim cmd_Search as new sqlcommand() cmd_search.CommandText = "select tanto,LastModefy from Logs where ID=@ID" cmd_search.connection = conn dim ID2 as sqlparameter = cmd_Search.parameters.add("@ID", system.data.sqldbtype.varchar, 15) ID2.value = ID.text Dim reader As SqlDataReader conn.open() reader = cmd_search.ExecuteReader() reader.Read() tanto.text = reader("tanto") Modefy.text = reader("Lastmodefy") conn.close() | ||||||||||||||||
|
投稿日時: 2006-07-14 13:46
↓すでに書かれている内容だし。
きちんと教えられたことくらいやろうぜ。な! 追記: >tanto.text = reader("tanto") >Modefy.text = reader("Lastmodefy") これちょっと見直そうぜ。な! [ メッセージ編集済み 編集者: ぶさいくろう 編集日時 2006-07-14 13:49 ] | ||||||||||||||||
|
投稿日時: 2006-07-14 13:58
(´ー`).oO(今作ってるプログラムはどうなるんだろう?) | ||||||||||||||||
|
投稿日時: 2006-07-14 16:55
皆様のご指摘の通りですね。。
(すみません。Readメソッドを呼び出す、という記述で、理解できなかったので、そのまま右から左に行ってしまいました。。。) Modefy・・については、実は実際にはこういうフィールドは無いので、 無視したいと思います。 今回のプログラムは、あと1つくらいの問題が解消できれば、一応は動作しそうなので、自分のチームでのみ使うものなので、動けばいいかな・・と。 もう少し、勉強していきます。 あきれ返るほど理解が不足していると思いますが、見捨てずにアドバイスいただきました皆様、ありがとうございました。 | ||||||||||||||||
|
投稿日時: 2006-07-14 17:23
その記述の部分を、もう 1 度見て頂けますか? Read メソッドの 「戻り値」 についても書かせて頂いたハズですが、 現在の実装だと、戻り値を見ていないように思います。
前後の内容から察するに 'Modify' の間違いかと思い、要らぬ指摘をしてしまいました。 ご気分を悪くされたのであれば、申し訳ありません。(*_ _) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |