【问题标题】:{"Input string was not in a correct format."} [closed]{“输入字符串的格式不正确。”} [关闭]
【发布时间】:2014-11-06 12:41:25
【问题描述】:
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 FirstName=@ContactName," +
     "Company=@CompanyName where ID=@CustomerID;" + "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();
}

我已经尝试了所有方法,但现在解决了,每次我尝试从我的网格更新记录时都会引发此错误。

【问题讨论】:

  • 究竟在哪一行?您的问题不清楚。
  • @SonerGönül at da.Fill(dt);
  • @RowlandShaw 不,我只是把它命名为那个。

标签: c# mysql .net ajax webgrid


【解决方案1】:

不要使用AddWithValue,而是使用Add

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();
}

【讨论】:

  • 现在它没有抛出任何错误,但它没有更新记录。
  • @ZeeshanRizvi:我已经编辑了我的答案。但请对您的问题提供更详细的说明。
  • 我也没有,还没更新记录
  • @ZeeshanRizvi:您必须打开连接,再次编辑我的答案。下次使用调试器看看抛出了哪些异常。
  • 抛出参数key不能为空的异常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
相关资源
最近更新 更多