我正在尝试使用以下代码从DataGridView
更新我的数据库行:
private void button2_Click(object sender, EventArgs e)
{
foreach (GridViewRow dr in dataGridView1.Rows)
{
string constring = "Data Source = localhost; port = 3306; username = root; password = 0159";
string Query = "Update TopShineDB.Table1 set Time = '" + dr.Cells[0].Text + "', CarColorNumber = '" + dr.Cells[1].Text + "', Interior = '" + dr.Cells[2].Text + "', Exterior = '" + dr.Cells[3].Text + "', CPlastic = '" + dr.Cells[4].Text + "', MPlastic = '" + dr.Cells[5].Text + "', SPlastic = '" + dr.Cells[6].Text + "', PlasticB = '" + dr.Cells[7].Text + "', WashExt = '" + dr.Cells[8].Text + "', WashEng = '" + dr.Cells[9].Text + "', WashTrunk = '" + dr.Cells[10].Text + "', WashSeats = '" + dr.Cells[11].Text + "', SeatsRmv = '" + dr.Cells[12].Text + "', SeatsFit = '" + dr.Cells[13].Text + "', Notes = '" + dr.Cells[14].Text + "', where Time = '" + dr.Cells[0].Text + "' ;";
MySqlConnection conn = new MySqlConnection(constring);
MySqlCommand command = new MySqlCommand(Query, conn);
MySqlDataReader myReader;
try
{
conn.Open();
myReader = command.ExecuteReader();
MessageBox.Show("Table Successfully Updated");
while (myReader.Read())
{
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
但我最终得到了这个错误:
{"Unable to cast object of type 'System.Windows.Forms.DataGridViewRow' to type 'System.Web.UI.WebControls.GridViewRow'."}
答案 0 :(得分:0)
您正在进行DataReader并尝试更新。要更新,您需要executeNonQuery。 所以而不是:
assert(min_on(mod2, 3, 2) == 2);
你需要
myReader = command.ExecuteReader();
以下是foreach循环中的代码如何看起来像
cmd.ExecuteNonQuery();
答案 1 :(得分:0)
它的foreach(DataGridViewRow ...不是foreach(GridViewRow ... 与msdn documentation .Rows属性一样:
获取DataGridViewRow对象的数组。
为了使用此更改进行编译,您需要在访问单元格值时使用.Value而不是.Text