2014-09-12 4 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

На какой строке точно? Ваш вопрос непонятен. –

+1

Northwind на MySql? –

+0

@ SonerGönül at da.Fill (dt); –

ответ

3

Не используйте 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(); 
} 
+0

теперь он не бросает никаких ошибок, но не обновляет запись. –

+0

@ ZeeshanRizvi: Я отредактировал свой ответ. Но, пожалуйста, укажите более подробное описание вашей проблемы. –

+0

У меня не то, что тоже, не обновляя записи Еще –