2013-04-28 73 views
3

我正在处理数据库管理系统。我有一个更新用户配置文件的简单任务。我创建了一个带有文本框和保存按钮的asp.net页面。添加文本后,我点击保存按钮。该按钮的代码是访问数据库不工作的更新查询C#.NET

protected void Button1_Click(object sender, EventArgs e) 
    { 
     string firstName = TextBox2.Text; 
     string lastName = TextBox1.Text; 
     string sCourse = TextBox3.Text; 
     string sTelephone = TextBox4.Text; 
     string sAddress = TextBox5.Text; 
     string sEmail = TextBox6.Text; 
     string Gender = TextBox7.Text; 
     string user = User.Identity.Name; 

     OleDbConnection oleDBConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\ASPNetDB.accdb"); 
     string sqlQuerry = "UPDATE aspnet_Users SET [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected] WHERE [email protected]"; 

     OleDbCommand cmd = new OleDbCommand(sqlQuerry, oleDBConn); 

     cmd.Parameters.AddWithValue("@UserName", User.Identity.Name); 
     cmd.Parameters.AddWithValue("@firstName", firstName); 
     cmd.Parameters.AddWithValue("@lastName", lastName); 
     cmd.Parameters.AddWithValue("@Course", sCourse); 
     cmd.Parameters.AddWithValue("@Telephone", sTelephone); 
     cmd.Parameters.AddWithValue("@Address", sAddress); 
     cmd.Parameters.AddWithValue("@Gender", Gender); 
     cmd.Parameters.AddWithValue("@Email", sEmail); 

     oleDBConn.Open(); 
     cmd.ExecuteNonQuery(); 
    } 

但没有任何反应。数据库未更新。代码是否正确?

回答

12

以与参数名称出现在UPDATE语句中相同的顺序添加参数值。

cmd.Parameters.AddWithValue("@firstName", firstName); 
cmd.Parameters.AddWithValue("@lastName", lastName); 
cmd.Parameters.AddWithValue("@Gender", Gender); 
cmd.Parameters.AddWithValue("@Address", sAddress); 
cmd.Parameters.AddWithValue("@Telephone", sTelephone); 
cmd.Parameters.AddWithValue("@Course", sCourse); 
cmd.Parameters.AddWithValue("@Email", sEmail); 
cmd.Parameters.AddWithValue("@UserName", User.Identity.Name); 

的OleDb与Access不讲究参数,只是它们的顺序。

+0

真棒的顺序添加参数!谢谢。 – 2013-04-28 14:26:08

+0

哇..我不知道访问与OleDb不关心参数名称。是否有任何不接受姓名的具体原因,只有他们的订单?是因为OleDb还是Access? _ + 1当然_ – 2013-04-28 14:49:17

+0

@SonerGönül我不知道*为什么*就是这样。但我不相信这是由于MS Access设计选择造成的......参数名称在DAO下运行的查询中使用时有意义。 “无意义的”参数名称问题似乎是特定于ADO/OleDb的。 – HansUp 2013-04-28 15:01:06

3

根据查询

string sqlQuerry = "UPDATE aspnet_Users SET [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected] WHERE [email protected]"; 

    OleDbCommand cmd = new OleDbCommand(sqlQuerry, oleDBConn); 
    cmd.CommandType = CommandType.Text; 
    cmd.Parameters.AddWithValue("@firstName", firstName); 
    cmd.Parameters.AddWithValue("@lastName", lastName); 
    cmd.Parameters.AddWithValue("@Gender", Gender); 
    cmd.Parameters.AddWithValue("@Address", sAddress); 
    cmd.Parameters.AddWithValue("@Telephone", sTelephone); 
    cmd.Parameters.AddWithValue("@Course", sCourse); 
    cmd.Parameters.AddWithValue("@Email", sEmail); 
    cmd.Parameters.AddWithValue("@UserName", User.Identity.Name);