2015-02-25 2 views
0

Я создаю веб-приложение .NET, которое извлекает данные из базы данных. Тем не менее, я продолжаю получать следующую ошибку при запуске кода ниже.Ошибка при получении данных MySQL в .NET.

Fatal error encountered during command execution.

InnerException является {"Parameter '?Username' must be defined."}, но я могу видеть, что ?Username определяется, и я знаю, что Session("Username") правильно и существует.

Вот код. Он не работает на линии SupervisorNameAdapter.Fill(SupervisorNameData, "Data").

Dim SupervisorID As String = Session("Username") 

    Dim qryGetSupervisorName As String = "select * from USERS where UserID = ?Username" 

    Using cn As New MySqlConnection(ConfigurationManager.ConnectionStrings("ConnectionInfo").ConnectionString), cmd As New MySqlCommand(qryGetSupervisorName, cn) 

     cmd.Parameters.AddWithValue("?Username", SupervisorID) 

     cn.Open() 
     cmd.ExecuteNonQuery() 
     cn.Close() 

     Dim SupervisorNameAdapter As New MySqlDataAdapter(qryGetSupervisorName, cn) 
     Dim SupervisorNameData As New DataSet 
     SupervisorNameAdapter.Fill(SupervisorNameData, "Data") 

     If SupervisorNameData.Tables(0).Rows.Count = 0 Then 

      MsgBox("An error has occured. Please refresh the page.", vbOKOnly, "Error!") 

     Else 

      SupervisorName.Text = SupervisorNameData.Tables(0).Rows(0).Item(1) & " " & SupervisorNameData.Tables(0).Rows(0).Item(2) 

     End If 

    End Using 

Кто-нибудь знает, почему это происходит?

ответ

1

Вы не правильно настроили команду, которая будет использоваться MySqlAdapter. Вы просто передать команду текстовой строки и с этой строкой адаптера построить другую команду, которая отсутствует необходимый параметру

Просто измените свой код

Dim SupervisorID As String = Session("Username") 
Dim qryGetSupervisorName As String = "select * from USERS where UserID = ?Username" 

Using cn As New MySqlConnection(ConfigurationManager.ConnectionStrings("ConnectionInfo").ConnectionString), cmd As New MySqlCommand(qryGetSupervisorName, cn) 

    cmd.Parameters.AddWithValue("?Username", SupervisorID) 
    Dim SupervisorNameAdapter As New MySqlDataAdapter(cmd) 
    Dim SupervisorNameData As New DataSet 
    .... 

End Using 
+0

Это работало сразу, спасибо очень много. –

Смежные вопросы