2010-12-17 12 views
1
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() 

Ich erhalte die folgende Fehlermeldung:Warum erhalte ich einen Fehler mit meiner parametrisierten ADO-Abfrage?

The parameterized query '(@FName nchar(10),@LName nchar(10))INSERT INTO Registration(FNam' expects the parameter '@FName', which was not supplied.

Was mache ich falsch?

BTW, ich weiß nchar(10) ist keine gute Wahl für Vor- und Nachname.

Antwort

3

Weil Sie keine Parameterwerte angegeben haben.

Werfen Sie einen Blick auf:

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() 

EDIT:

MySqlCommand.Parameters.Add("@FName", SqlDbType.NChar, 10).Value = txtFname.Text 
MySqlCommand.Parameters.Add("@LName", SqlDbType.NChar, 10).Value = txtFname.Text 
+1

Hmm. Ich dachte, das wäre der 3. Param. So viele überladene Subs, ich muss falsch gelesen haben, was ich passierte. – ChadD

Verwandte Themen