VB を使用する ASP.NET アプリケーションに取り組んでいます。VB ファイル内で SQLReader/SQLCommand/SQLConnection を使用して、データ値を取得しようとしています。
クエリが値を返さない理由を見つけて当惑しました。ここの誰かが、クエリをトラブルシューティングして、返されていないものを確認する方法を教えてくれました。
同僚と話をしたところ、一致するかどうか尋ねられました。これは、私が文字列を入力していて、データベースのテキスト フィールドが nvarchar であるためです。VB で変数を宣言して、クエリのパラメーターとして入力したときに一致するようにするにはどうすればよいですか?
一致するように見えるデータのタイプは、「2」、「2a」、「1a」などの基本的なものです。
nvarchar を宣言する方法がない場合、それを回避する方法について誰か提案がありますか?
本当にありがとう。
補足: これは、この質問の一種の続きです: SQL Reader は値が存在しないと言っています、クエリは問題ないようです
編集:すべての助けをありがとう。皆さんが言ったように設定しましたが、「オブジェクト型 System.Data.SqlClient.SqlParameter から既知のマネージド プロバイダー ネイティブ型へのマッピングが存在しません」というエラーが表示されます。
次のようなフォーム全体の変数としてパラメーターがあります。
Private travelParameter As New SqlParameter("@trip", SqlDbType.NVarChar)
そして、メインフォーム内で、
travelQuery.CommandText = "SELECT [StartLoc], [EndLoc],[TravelTime], [AvgSpeed], [Distance] FROM [TravelTimes] WHERE [TripNum] = @trip"
travelQuery.Parameters.AddWithValue("@trip", travelParameter)
後で、このような関数が呼び出されます。
FillWithTime("2", travelReader, time, newCell)
次のように定義されます。
Private Sub FillWithTime(ByVal TripNum As Char, ByRef travelReader As SqlDataReader, ByRef TimeData() As Object, ByRef Cell As System.Web.UI.WebControls.TableCell)
travelParameter.Value = TripNum
travelReader = travelQuery.ExecuteReader()
If (travelReader.Read()) Then
travelReader.GetValues(TimeData)
'stuff
End If
End Sub
再度、感謝します。
PS - Adam と Cerebus さん、できれば両方の回答を受け入れます。彼らは両方とも本当に私のためにアイデアをまとめてくれました。