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

나는 다음과 같은 오류가 점점 오전 :매개 변수화 된 ADO 쿼리에 오류가 발생하는 이유는 무엇입니까?

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

내가 잘못하고있는 중이 야 무엇을?

실제로, nchar(10)은 성과 이름으로 적합하지 않습니다.

답변

3

매개 변수 값을 제공하지 않았기 때문에.

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 
+1

은 한 번보세요. 그게 제 3 인자라고 생각했습니다. 너무 많은 오버로드 된 잠수함은 내가 지나가고있는 것을 잘못 읽었습니다. – ChadD