2016-12-11 8 views
0

誰かが自分のコードを見て、何が間違っているのか教えてください。私は値を更新しようとしていますが、私のメソッドがクエリを解析中であってもAccessデータベースは更新されません。UPDATEクエリがアクセスデータベース内のレコードを更新していません

protected void Page_Load(object sender, EventArgs e) 
{ 
    if ((string)Session["sFlag"] != "LI") 
    { 
     Response.Redirect("Default.aspx"); 
    } 
    else 
    { 
     strUserId = (string)Session["sUserId"]; 
     txtUserId.Text = strUserId; 
     txtName.Text = (string)Session["sName"]; 
     txtAddress.Text = (string)Session["sAddress"]; 
     txtEmail.Text = (string)Session["sEmail"]; 
     txtTel.Text = (string)Session["sContactNo"]; 


    } 
} 
protected void btnSubmit_Click(object sender, EventArgs e) 
{ 

    strUserId = (string)Session["sUserId"]; 
    if (txtName.Text != "") 
    { 
     String strFName = "cFullName"; 
     String strFValue = txtName.Text; 
     UpdateCustomer(strFName, strFValue); 
     Session["sName"] = txtName.Text; 
    } 
    if (UFlag == "T") 
    { 
     Type strType = this.GetType(); 
     ClientScript.RegisterStartupScript(strType, "Success", scriptSuccessUpdate); 
    } 


} 

public void UpdateCustomer(string strFName, string strFValue) 
{ 
    OleDbConnection mDB = new OleDbConnection(); 
    mDB.ConnectionString = "Provider = Microsoft.ACE.OLEDB.12.0;Data source=" 
     + Server.MapPath("~/App_Data/WMA_Proj.accdb"); 
    mDB.Open(); 
    OleDbCommand cmd; 
    String strSQL = "UPDATE Customers SET " + strFName + 
     " = @newValue WHERE cUserId = @userId"; 
    cmd = new OleDbCommand(strSQL, mDB); 
    cmd.Parameters.Add("@newValue", OleDbType.Char).Value = strFValue; 
    cmd.Parameters.Add("@userId", OleDbType.Char).Value = strUserId; 
    cmd.ExecuteNonQuery(); 
    UFlag = "T"; 
    mDB.Close(); 

} 

}

これは、同様に私のAccessデータベーステーブル(画像)です。

Access Database Table

+0

を試してみてください?その方法も表示してください。 –

+0

@ZoranHorvatはい、UpdateCustomerメソッドはデータベースを更新しません。コードはコードテーブルの一番下にあります。 これは表示できない場合のスクリーンショットです:http://puu.sh/sLBoh/4ccb2b659d.png –

+0

はい、申し訳ありませんが、私はスクロールしませんでした... –

答えて

0

あなたは `UpdateCustomer`メソッドは、データベースを更新しないことを意味します。この

public void UpdateCustomer(string strFName, string strFValue) 
    { 
     OleDbConnection mDB = new OleDbConnection(); 
     mDB.ConnectionString = "Provider = Microsoft.ACE.OLEDB.12.0;Data source=" 
      + Server.MapPath("~/App_Data/WMA_Proj.accdb"); 
     mDB.Open(); 
     OleDbCommand cmd; 
     String strSQL = "UPDATE Customers SET cFullname= @newValue WHERE cUserId = @userId"; 
     cmd = new OleDbCommand(strSQL, mDB); 
     cmd.Parameters.AddWithValue("@newValue", strFName); 
     cmd.Parameters.AddWithValue("@userId",strFvalue); 
     cmd.ExecuteNonQuery(); 
     UFlag = "T"; 
     mDB.Close(); 

    } 
+0

が機能していないと思われます。 : –

+0

このように '='の代わりに 'LIKE'を使ってみてください ' String strSQL = "UPDATE Customers SET cFullname = @newValue WHERE cUserId LIKE @userId"; ' – KMarto

関連する問題