これは非常に緊急です。このアプリケーションを3時間半で提示する必要があります。
私のアプリケーションはデータソースをチェックして、データベースに値が存在するかどうかを確認し、問題の値が見つかったかどうかに応じて値を変更します。問題は、SSMSで問題の値を使用してSQLクエリを実行しましたが、行が返されないことですが、DataReaderには行があると表示されます。
これは、私のアプリケーションが不正確に報告していることを意味します。これが私のコードです:
Using conn As New SqlConnection("Data Source=.\SQLEXPRESS; Initial Catalog=Testing; Integrated Security=True;")
Dim cmd As New SqlCommand(sql, conn)
conn.Open()
Dim reader As SqlDataReader = cmd.ExecuteReader
If reader.HasRows Then
Value = True
AcctNumber = reader(1)
End If
reader.Close()
End Using
この投稿に関係のないコードを削除しましたが、知りたいことは次のとおりです。
値はブール値ですAcctNumberは文字列です
これは仕事用のアプリケーションなので、SQLクエリは含めたくありません。問題は読者です。コメントアウトするValue = True
と、正しい情報が得られますが、それを省略すると、ValueがTrueである必要がある場合に、レポートも不正確になります。
前もって感謝します!
編集:完全なソースコード:
Case "Business"
' Change the number format to local because that's what it is in the db
If Microsoft.VisualBasic.Left(NumberToCheck, 2) = "27" Then
NumberToCheck = NumberToCheck.Replace(Microsoft.VisualBasic.Left(NumberToCheck, 2), "0")
End If
Dim sql As String = "SELECT a.TelNumber, c.AccountNumber " & _
"FROM TelInfo a " & _
"INNER JOIN Customers b ON a.CustID = b.pkguidId " & _
"INNER JOIN Accounts c ON b.pkguidId = c.CustID " & _
"WHERE a.TelNumber = '" & NumberToCheck & "'"
Using conn As New SqlConnection("Data Source=.\SQLEXPRESS; Initial Catalog=Testing; Persist Security Info=True; " & _
"User Id=JoeSoap; Password=paoseoj;")
Dim cmd As New SqlCommand(sql, conn)
conn.Open()
Dim reader As SqlDataReader = cmd.ExecuteReader
If reader.Read Then
Value = True
AcctNumber = reader(1)
End If
reader.Close()
End Using
2010年8月2日(mm / dd / yy)より前に行われた以下のコメントについて:
Value
NumberToCheck
検索された電話番号( )がデータベースに存在することを示すために関数によって返される単なるブール値です。
それで...
Private AcctNumber As String
Dim val As Boolean = False
val = CheckNumber("3235553469")
If val Then
' AcctNumber will have been set by CheckNumber
Label1.Text = AcctNumber
End If
val
NumberToCheck(この例では3235553469)がデータベースに存在する場合にのみTrueが返されます。
NumberToCheckの値をSSMSにコピーし、そこでクエリをテストした後、クエリが期待どおりに機能することを確認できます。
いいえ、テーブル内の情報量が多いため(+/- 9.5m行)、DataSetにデータを入力できません。'WHERE'フィルターを使用しても、クエリはリソースに負担がかかりすぎて、最終的には終了しOutOfMemory Exception
ます。そのため、DataReaderを使用しました。
ExecuteScalar
Darrylの回答として提案されているオプションを試してみますが、結果が更新されます。