DOBON.NET DOBON.NETプログラミング掲示板過去ログ

1行しか取得しないのにRead()をLoopしなきゃだめですか?

環境/言語:[VB.NET SqlServer]
分類:[.NET]

質問させてください。下のコードはデータを取得できません。。。
SELECT文のWhereで絞り込まれたデータは必ず1つしか存在しない場合でも
Loopでまわさなければ取得できないのでしょうか?
また、SELECT文のWhereの書き方はこれでは間違いなのでしょうか?

Dim RS As SqlClient.SqlDataReader
Dim KEY01 As String = "007"
SqlConnection1.Open()
SqlCommand1.CommandText = "select * from MasterTable Where KEY01 = @key01"
RS = SqlCommand1.ExecuteReader

Do While (RS.Read())
' 結果的には1回しか行わない処理
  ttt = RS.Item("ID")
Loop

RS.Close()
SqlConnection1.Close()
RS.Read()
ttt = RS.Item("ID")

でかまわないんじゃないですか?
■No15040に返信(中博俊さんの記事)
> RS.Read()
> ttt = RS.Item("ID")
>
> でかまわないんじゃないですか?
>

そ、その通りです。m(_ _)m
ありがとうございます。

それから
SqlCommand1.CommandText = "select * from MasterTable Where KEY01 = @key01
の@の書き方は間違いでしょうか?
Where以下を削るといい感じなのですが。。。
@の書き方はNetで拾ってマネてみました。
■No15041に返信(さざえさんの記事)
> そ、その通りです。m(_ _)m
> ありがとうございます。

1 件ならば、ExecuteScalar メソッドでしょう。

> それから
> SqlCommand1.CommandText = "select * from MasterTable Where KEY01 = @key01
> の@の書き方は間違いでしょうか?
> Where以下を削るといい感じなのですが。。。
> @の書き方はNetで拾ってマネてみました。

意味もわからずマネてはいけませんが、望ましい処置なので文句が言えない。
とりあえず、Parameters について調べてみてください。


__________________________________________________________________________________
じゃんぬ - Microsoft MVP for Visual Developer C#
  C#, VB.NET 入門  http://jeanne.wankuma.com/
  じゃんぬねっと日誌 http://blogs.wankuma.com/jeanne/

お返事が遅くなりましたが、ご教授ありがとうございました。
Parameters のお勉強もし、それを使ったソースコードが
まだ未完成ではありますが動き始めました。
本当に、ありがとうございました。m(_ _)m
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板