2015-06-22 40 views
0

在我的C#中,asp.net應用程序,即時將字段值插入到MySQl中,稍後在編輯後更新fiels值。我使用下面的代碼。它的獲得執行,但值不會被添加到數據庫中。我也用更新語句和ExecuteNonQuery不返回C#,MySQL

numRowsUpdated = cmd.ExecuteNonQuery();

但在調試器窗口中,它顯示爲

名稱 'numRowsUpdated' 不會在目前情況下

我的代碼存在:

protected void UpdateBtn_Click(object sender, EventArgs e) 
     { 
      int numRowsUpdated = -1; 
      string Query = "UPDATE employee SET [email protected],EmpID [email protected],Designation [email protected],[email protected],BankName [email protected],AccountNumber = @f,Pancard [email protected],[email protected] WHERE id = @i" ; 
      if (GlobalCS.OpenConnection() == true) 
      {      
       MySqlCommand cmd = new MySqlCommand(Query, GlobalCS.objMyCon); 
       cmd.Parameters.AddWithValue("i", selectedid); 
       cmd.Parameters.AddWithValue("a", NameTxt.Text); 
       cmd.Parameters.AddWithValue("b", EmpidTxt.Text); 
       cmd.Parameters.AddWithValue("c", DesgTxt.Text); 
       cmd.Parameters.AddWithValue("d", JoinTxt.Text); 
       cmd.Parameters.AddWithValue("e", BankTxt.Text); 
       cmd.Parameters.AddWithValue("f", ACNoTxt.Text); 
       cmd.Parameters.AddWithValue("g", PANTxt.Text); 
       cmd.Parameters.AddWithValue("h", PFTxt.Text); 
       numRowsUpdated = cmd.ExecuteNonQuery(); 
      } 
      GlobalCS.CloseConnection();     
     } 

GridView的選擇:

protected void OnSelectedIndexChanged(object sender, EventArgs e) 
     { 
      GridViewRow row = EmployeeGrid.SelectedRow; 
      selectedid = Convert.ToInt32(row.Cells[1].Text); 
      NameTxt.Text = row.Cells[2].Text; 
      EmpidTxt.Text = row.Cells[3].Text; 
      ... 

     } 

selectedid聲明:

namespace SimERP 
{ 
    public partial class Employee : System.Web.UI.Page 
    { 
     int selectedid = -1; 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      LoadEmployeeData(); 
     } 
+0

_「,但值不會被添加「_這個SQL語句只是更新值...你在這之前執行了插入操作嗎? –

+0

'selectedid'從哪裏來?我在這裏看不到它。如果沒有'id = selectedid'的行,則不會更新。 –

+0

是的。插入查詢工作正常。使用插入查詢添加的值可用。我使用gridview選定的行,所有的值都顯示在文本框中,然後即時編輯一些文本框的值,按下更新按鈕添加更改的值。 – Anu

回答

1

代碼似乎罰款。你必須把@符號與參數名:

例子:

cmd.Parameters.AddWithValue("@i", selectedid); 
cmd.Parameters.AddWithValue("@a", NameTxt.Text); 
cmd.Parameters.AddWithValue("@b", EmpidTxt.Text); 
cmd.Parameters.AddWithValue("@c", DesgTxt.Text); 

UPDATE

好像if(!IsPostBack)也缺少在Page_Load事件:

namespace SimERP 
{ 
    public partial class Employee : System.Web.UI.Page 
    { 
     int selectedid = -1; 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       LoadEmployeeData(); 
      } 
     }