2014-02-16 5 views
-1

У меня возникли проблемы с моим кодом, я получаю Invalid expression term ')', не уверенный, что я делаю неправильно. Вот мой код.Erorr в моем заявлении о вставке

protected void btnSubmit_Click(object sender, EventArgs e) 
{ 
    OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source = '" + Server.MapPath("WSC_DB.mdb") + "'; Persist Security Info=False"); 

    using (OleDbCommand cmd = new OleDbCommand("insert into Users(UserFirstName, UserLastName, ShipAddress, ShipCity, ShipState, UserPhone, UserEmail, UserName, UserPassword, LoginType) values (@FirstName, @LastName, @Address, @City, @State, @Zip, @Phone, @Email, @Username, @Password, @Logintype)", conn)) 
    { 
     cmd.Parameters.AddWithValue("@FirstName", txtFirstName.Text); 
     cmd.Parameters.AddWithValue("@LastName", txtLastName.Text); 
     cmd.Parameters.AddWithValue("@Address", txtAddress.Text); 
     cmd.Parameters.AddWithValue("@City", txtCity.Text); 
     cmd.Parameters.AddWithValue("@State", DropDownList1.SelectedItem.ToString()); 
     cmd.Parameters.AddWithValue("@Zip", txtZip.Text); 
     cmd.Parameters.AddWithValue("@Phone", txtPhone.Text); 
     cmd.Parameters.AddWithValue("@Email", txtEmail.Text); 
     cmd.Parameters.AddWithValue("@Username", txtUsername.Text); 
     cmd.Parameters.AddWithValue("@Password", txtPassword.Text); 
     cmd.Parameters.AddWithValue("@Logintype", "U"); 
     conn.Open(); 
     cmd.ExecuteNonQuery(); 
    } 
} 
+0

вы пробовали добавлять пробел между пользователями и (USERFIRSTNAME? – DarkSquirrel42

+0

@weenoid, что? ... – Steve

+0

показывает ошибки в первом заявлении OleDbConnection conn = new OleDbConnection ("Provider = Microsoft.Jet.OLEDB.4.0; Источник данных = '" + Server.MapPath ("WSC_DB.mdb") + "'; Persist Security Info = False"); – user2526337

ответ

0

Я, похоже, не помню, что вы не можете использовать именованные параметры в инструкции SQL при использовании Jet OLEDB. Вам нужно будет заменить @FirstName, @LastName, ... вопросительным знаком '?'.

Для лучшего анализа вашей ошибки, пожалуйста, укажите полное сообщение об ошибке и трассировку стека.

+1

На самом деле параметрам OleDb могут быть назначены имена, но имена игнорируются, а порядок параметры все это имеет значение. Вот почему вопросительный знак '?' Placeholder предпочтительнее (на мой взгляд). –

1

У вас есть 10 элементов в списке столбцов и 11 элементов в списке значений. Список значений включает

... @City, @State, @Zip, @Phone, @Email, ... 

но нет в списке столбцов не Zip

... ShipCity, ShipState, UserPhone, UserEmail, ... 
Смежные вопросы