2013-04-28 69 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);