@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

データベースから複数件取得

1
投稿者投稿内容
3m
常連さん
会議室デビュー日: 2004/11/05
投稿数: 34
投稿日時: 2005-03-14 12:05
いつもお世話になっております。
ASP.NET(VB)初心者です。WEBアプリの作成しております。

表題の件で困っています。
スレッドにて検索してみたのですがいまいちよくわからず
質問させていただきたいと…。

データベースよりIDが1のものをデータがあるだけ取得したいのですが
どのように取得すれば良いのでしょうか??

Dim objDb As New SqlConnection(ConfigurationSettings.AppSettings("conStringSql"))
Dim objCom As New SqlCommand( _
 "SELECT * FROM テーブル1 "& _
 "WHERE (ID = '1')",objDb)
objDb.Open()
Dim objDr As SqlDataReader=objCom.ExecuteReader()
If objDr.Read() Then
  intId = trim(objDr("ID"))
End If

上記のようにすれば一件のみしか取得できないのですが…。

簡単なことかもしれませんがよろしくお願いします。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2005-03-14 12:20
Ifじゃなくてループで回しましょう。。。
3m
常連さん
会議室デビュー日: 2004/11/05
投稿数: 34
投稿日時: 2005-03-14 14:57
burton999さんありがとうございます。

for文にて回してみた結果なのですが…。
どうもレコードが次の行に移らず同じ行を何回もよんでしまいます。
次のレコードを読ませるような処理は必要なのでしょうか?

よろしくお願いします。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2005-03-14 15:01
どのようなFor文を書きましたか?
SELECT文で複数件HITしているのは確実ですか?
3m
常連さん
会議室デビュー日: 2004/11/05
投稿数: 34
投稿日時: 2005-03-14 15:35
burton999さんありがとうございます。

>どのようなFor文を書きましたか?
For j = 0 To DateDiff("m",strStart,strEnd)
  intId(j) = trim(objDr("ID"))
Next
開始年月から終了年月まで回したかったので上記のようにしてみました。
For文の書き方がまずいのですかね…。
おかしいのかと思い、For j=0 To 10 等とし確認してみましたが
結果は同じでした。

>SELECT文で複数件HITしているのは確実ですか?
複数HITしているのは確実です。
Dim objCom As New SqlCommand( _
 "SELECT * FROM テーブル1 "& _
 "WHERE (ID = '1')",objDb)
上記の部分をビューにて確認しております。

先ほどFor文ではダメなのかと思い、データがある分だけ回そうと
Do While objDr.Read
    :
Loop
にて回してみたところ取得できました。

お騒がせしてすみませんでした。
ありがとうございました。

[ メッセージ編集済み 編集者: 3m 編集日時 2005-03-14 15:45 ]
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2005-03-14 17:11
For文がダメということではなく。
objDr.Read()メソッドを呼ぶことによって次の行が取得されます。
objDr.Read()がTrueを返している間はデータが存在することを意味し
最後までデータを読み込むとobjDr.Read()はFalseを返します。
1

スキルアップ/キャリアアップ(JOB@IT)