2016-05-30 7 views
0

私はこれで始めています。私は数多くのチュートリアルを行ってきましたが、これを動作させることはできません。テキストボックスに結果を入力しようとしていますが、動作していません。 MsgBox("AA")に読者に行があり、msgboxが表示されているかどうかを確認するために値を入力してもテキストボックスには入力されません。Visual Studio 2013 SQLデータリーダー

Option Explicit On 
Option Strict On 
Imports System 
Imports System.Data 
Imports System.Data.SqlClient 
Public Class CustEnquiry 
Private Sub TextBox_LostFocus(sender As Object, e As EventArgs) Handles TextBox1.LostFocus 
     Dim connectionString As String = _ 
      "Data Source=SERVER;Initial Catalog=DATABASE;" _ 
      & "Persist Security Info=True;User ID=USERID;Password=PASSWORD" 
     Using connection As New SqlConnection(connectionString) 
      Dim command As SqlCommand = New SqlCommand(_ 
      "SELECT FIELD FROM dbo.TABLE WHERE VALUE = '092902D';", _ 
      connection) 
      connection.Open() 
      Dim reader As SqlDataReader = command.ExecuteReader() 
      If reader.HasRows Then 
       MsgBox("AA") 
       TextBox2.Text = reader.GetString(0) 
      End If 
      reader.Close() 
     End Using 
    End Sub 
End Class 

答えて

0

reader.Read()

Read使うので、私はそれは短いです知っているが、それはあなたが次の(最初の)レコードにリーダーを進めるために持って答え

+0

は、私はそれを見逃したのか、ありがとうございます!数分で正解とします。 – Wilest

0

です:

If reader.HasRows Then 
    reader.Read() 
    MsgBox("AA") 
    TextBox2.Text = reader.GetString(0) 
End If 

HasRowsレコードがある場合のみ返します。リーダを進めるわけではありません。 Readを使用して、結果セットに少なくとも1つのレコードがあるかどうかを確認することもできます。

If reader.Read() Then 
    MsgBox("AA") 
    TextBox2.Text = reader.GetString(0) 
End If 

あなたはまた、代わりに、読者のSqlCommand.ExecuteScalarを使用することができる唯一の単一の値を選択すると期待しているので:

Dim field As Object = command.ExecuteScalar() ' is DbNull.Value if the field is null in the database ' 
関連する問題