2017-09-13 110 views
0

我想從我的數據庫表中獲得一個記錄與此代碼:如何從使用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中

附加信息:行/列不存在任何數據。

我很確定查詢應該至少有一個結果。我檢查了查詢指向的特定數據庫表,並且值在那裏。我只是不知道爲什麼我不斷收到這個錯誤。我對VB.NET來說很新。請多多包涵。

+1

第一:不要使用.AddWithValue。第二:在你可以訪問字段之前,你將不得不做一個Reader.Read() – muffi

+0

@ muffi謝謝你,先生!我終於明白了!這對我很有幫助。我還有一個問題。你爲什麼說,不要使用.AddWithValue?這可能會幫助我與VB.NET的未來掙扎。 TIA。 –

+0

因爲.AddWithValue有時會猜測錯誤的字段類型。最好添加一個參數,如'.Add(「@param」,MySqlDbType.Int32).Value = 0' – muffi

回答

0

「沒有數據存在行/列」指示您從查詢執行中缺少的是使用OleDbDataReader.Read()方法。與While...End While塊中使用的方法如下面給出:

Dim message As String 
Using MyConn As OleDbConnection(connectionString) 

    MyConn.Open() 
    Dim getParentID As String = "SELECT Parent_ID FROM ParentandGuardian WHERE First_Name = @fname AND Middle_Name = @mname AND Last_Name = @lname" 
    Using comm As OleDbCommand = New OleDbCommand(getParentID, MyConn) 
     comm.Parameters.AddWithValue("@fname", txtPGFirstName.Text) 
     comm.Parameters.AddWithValue("@mname", txtPGMiddleName.Text) 
     comm.Parameters.AddWithValue("@lname", txtPGLastName.Text) 

     Using reader As OleDbDataReader = comm.ExecuteReader() 

      While reader.Read() 
       message = reader.GetValue(0).ToString() 
      End While 

      MsgBox(message) 
     End Using 
    End Using 

    MyConn.Close() 
End Using 

用於推進數據讀取器從相應的行(多個)檢索數據之前首先記錄(或多個記錄的下一個記錄)的方法Read

注意:OleDbCommand.Parameters.AddOleDbCommand.Parameters.AddWithValue更優先,因爲它可以聲明自定義數據類型以與數據庫中使用的每個列數據類型(取決於您使用的數據庫)匹配。

類似的問題:

Error: No data exists for the row/column

Why do I get "No data exists for the row/column" error when I do have data?

相關問題