2014-09-12 93 views
-3
protected void UpdateCustomer(object sender, GridViewUpdateEventArgs e) 
{ 
    string CustomerID = ((Label)GridView1.Rows[e.RowIndex] 
         .FindControl("lblCustomerID")).Text; 
    string Name = ((TextBox)GridView1.Rows[e.RowIndex] 
         .FindControl("txtContactName")).Text; 
    string Company = ((TextBox)GridView1.Rows[e.RowIndex] 
         .FindControl("txtCompany")).Text; 
    MySqlConnection con = new MySqlConnection(); 
    string Connection = "Server=localhost;" + 
    "DATABASE=northwind2007;" + "username=;" + 
    "PASSWORD=;"; 
    con.ConnectionString = Connection; 
    MySqlCommand cmd = new MySqlCommand(); 
    cmd = new MySqlCommand(cmd.CommandText, con); 
    cmd.CommandType = CommandType.Text; 
    cmd.CommandText = "update Customers set [email protected]," + 
    "[email protected] where [email protected];" + "select ID,FirstName,Company from Customers"; 
    cmd.Parameters.AddWithValue("@CustomerID", MySqlDbType.VarChar).Value = CustomerID; 
    cmd.Parameters.AddWithValue("@ContactName", MySqlDbType.VarChar).Value = Name; 
    cmd.Parameters.AddWithValue("@CompanyName", MySqlDbType.VarChar).Value = Company; 
    GridView1.EditIndex = -1; 
    MySqlDataAdapter da = new MySqlDataAdapter(cmd); 
    DataTable dt = new DataTable(); 
    da.Fill(dt); 
    GridView1.DataSource = dt; 
    GridView1.DataBind(); 
} 

我已经尝试了一切,但它现在正在努力,每次我尝试更新从我的网格记录它会引发此错误。{“输入的字符串格式不正确。”}

+0

在哪条线上?你的问题不清楚。 – 2014-09-12 10:46:08

+1

MySql上的Northwind? @DernerGönülat da.Fill(dt); – 2014-09-12 10:47:19

+0

@SonerGönülat da.Fill(dt); – 2014-09-12 10:58:57

回答

3

不要使用AddWithValueAdd

cmd.Parameters.Add("@CustomerID", MySqlDbType.VarChar).Value = CustomerID; 

否则MySqlDbType.VarChar被视为值。

你也应该执行更新命令,你需要Open连接:

con.Open(); 
int updatedRecords = cmd.ExecuteNonQuery(); 

如果你想以后填写表格,你可以使用DataAdapter

using(var da = new MySqlDataAdapter("select ID,FirstName,Company from Customers", con)) 
    da.Fill(dt); 

注意您应该始终使用using -statement来确保任何非托管资源将被处置并且连接被关闭(即使出现错误)。例如:

using(var con = new MySqlConnection()) 
using(var cmd = new MySqlCommand("UPDATE ...", con)) 
{ 
    con.Open(); 
    cmd.ExecuteNonQuery(); 
} 
+0

现在它不会抛出任何错误,但它不更新记录。 – 2014-09-12 10:59:58

+0

@ZeeshanRizvi:我编辑了我的答案。但请包括更详细的问题描述。 – 2014-09-12 11:00:55

+0

我不这么说,还没有更新记录 – 2014-09-12 12:20:30