Почему я получаю сообщение об ошибке с моим параметризованным запросом ADO?

Dim txtFName As TextBox = CType(Wizard1.FindControl("txtFName"), TextBox)
Dim txtLName As TextBox = CType(Wizard1.FindControl("txtLName"), TextBox)

Dim MyDbConnection As New SqlConnection(ConfigurationManager.ConnectionStrings.Item("Journeyeast Connection String").ToString)
MyDbConnection.Open()

Dim SQL = "INSERT INTO Registration(FName, LName) VALUES (@FName, @LName)"

Dim MySqlCommand As New SqlCommand(SQL, MyDbConnection)
MySqlCommand.Parameters.Add("@FName", SqlDbType.NChar, 10, txtFName.Text)
MySqlCommand.Parameters.Add("@LName", SqlDbType.NChar, 10, txtLName.Text)

MySqlCommand.ExecuteNonQuery()

Я получаю следующую ошибку:

Параметризованный запрос '(@FName nchar(10),@LName nchar(10))INSERT INTO Registration(FNam' ожидает параметр '@FName', который не был предоставлен.

Что я делаю не так?

Кстати, я знаю, что nchar(10) не лучший выбор для имени и фамилии.


person Chad    schedule 17.12.2010    source источник


Ответы (1)


Поскольку вы не указали значения параметров.

Взгляни на:

Dim SQL = "INSERT INTO Registration(FName, LName) VALUES (@FName, @LName)"

Dim MySqlCommand As New SqlCommand(SQL, MyDbConnection)
MySqlCommand.Parameters.AddWithValue("@FName",txtFName.Text)
MySqlCommand.Parameters.AddWithValue("@LName",txtLName.Text)

MySqlCommand.ExecuteNonQuery()

РЕДАКТИРОВАТЬ:

MySqlCommand.Parameters.Add("@FName", SqlDbType.NChar, 10).Value = txtFname.Text
MySqlCommand.Parameters.Add("@LName", SqlDbType.NChar, 10).Value = txtFname.Text
person kv-prajapati    schedule 17.12.2010
comment
Хм. Я думал, что это третий параметр. Так много перегруженных подводных лодок, я, должно быть, неправильно понял, что я передал. - person Chad; 17.12.2010