私はこのコードで私のデータベーステーブルからレコードを取得しようとしています:OleDbDataReaderオブジェクトを使用してSQL SELECT文から結果を取得するにはどうすればよいですか?
Dim getParentID = "SELECT Parent_ID FROM ParentandGuardian WHERE First_Name = @fname AND Middle_Name = @mname AND Last_Name = @lname"
comm = New OleDbCommand(getParentID, MyConn)
comm.Parameters.AddWithValue("@fname", txtPGFirstName.Text)
comm.Parameters.AddWithValue("@mname", txtPGMiddleName.Text)
comm.Parameters.AddWithValue("@lname", txtPGLastName.Text)
Reader = comm.ExecuteReader
MsgBox(Reader.GetValue(0))
私はMsgBox(Reader.Getvalue(0))
声明に指摘し、このエラーを取得:
タイプ「システムの未処理の例外を。 InvalidOperationException 'System.Data.dllで発生しました
追加情報:行/列のデータが存在しません。
質問には少なくとも1つの結果が必要です。私は、クエリが指している特定のデータベーステーブルをチェックして、そこに値があります。私はなぜこのエラーが出てくるのか理解できません。私はVB.NETの新機能です。私と一緒に抱きしめてください。
まず:.AddWithValueを使用しないでください。 2番目:フィールドにアクセスする前に、Reader.Read()を実行する必要があります – muffi
@muffiありがとうございました!私はついにそれを得ました!それは私にとって大きな助けになる。私はもう一つ質問があります。なぜ、あなたはAddDWithValueを使わないと言ったのですか?これは、将来のVB.NETとの闘いに役立ちます。 TIA。 –
.AddWithValueは間違ったフィールドタイプを推測することがあるためです。常に.Add( "@ param"、MySqlDbType.Int32).Value = 0'のようなパラメータを追加する方が良い – muffi