通过datagridview更新sql数据库
本文关键字:数据库 sql 更新 datagridview 通过 | 更新日期: 2023-09-27 18:00:09
我制作了一个C#程序,其中有一个按钮(名为insert)和一个数据网格视图。我输入了一个cmd,如果我在dvg新行中输入一个新值,那么在单击插入按钮后,会显示一个描述我输入的值的消息框。。现在我想要一个名为update..的第二个按钮。。所以当我在插入新值后点击它时,新值会在我的sql数据库中更新。
这是我的代码的狙击手-
private void button1_Click_1(object sender, EventArgs e)
{
//InsertInfo();
foreach (int rowIndex in lstNewRows)
{
MessageBox.Show(dataGridView1.Rows[rowIndex].Cells[0].Value + "; " +
dataGridView1.Rows[rowIndex].Cells[1].Value);
}
lstNewRows.Clear();
}
private void dataGridView1_DefaultValuesNeeded_1(object sender, DataGridViewRowEventArgs e)
{
lstNewRows.Add(e.Row.Index);
}
private void updateInfo()
{
String strConnection = "Data Source=HP''SQLEXPRESS;database=MK;Integrated Security=true";
SqlConnection con = new SqlConnection(strConnection);
using (SqlConnection sqlConn = new SqlConnection(strConnection))
{
using (SqlCommand cmd = new SqlCommand())
{
int rowIndex;
cmd.CommandText = @"UPDATE tble SET " +
"name = @name, " +
"number = @number" = (int)dataGridView1.SelectedCells[0].Value + " ";
cmd.Parameters.Add("@name", SqlDbType.VarChar, 50, "name");
cmd.Parameters.Add("@number", SqlDbType.VarChar, 50, "number");
cmd.Connection = sqlConn;
using (SqlDataAdapter da = new SqlDataAdapter())
{
DataTable dtRecord = new DataTable();
da.UpdateCommand = cmd;
da.Update(dtRecord);
}
}
}
}
private void button2_Click(object sender, EventArgs e)
{
updateInfo();
}
}
}
我认为您在更新行的值时有问题。您的updateInfo();
在许多地方都是错误的,这是正确的版本:
String strConnection = "Data Source=HP''SQLEXPRESS;database=MK;Integrated Security=true";
//SqlConnection con = new SqlConnection(strConnection); not needed
using (SqlConnection sqlConn = new SqlConnection(strConnection))
{
using (SqlCommand cmd = new SqlCommand())
{
int rowIndex = 1; //row index to update?
var number = Int32.Parse(dataGridView1.Rows[rowIndex].Cells[0].Value.ToString()); //assuming Cells[0] holds number
var name = dataGridView1.Rows[rowIndex].Cells[1].Value.ToString(); //as above
var id = Int32.Parse(dataGridView1.Rows[rowIndex].Cells[3].Value.ToString()); //get id
//your old command text was completly wrong
cmd.CommandText = @"UPDATE tble SET name = @name, number = @number where id = @id"; //id and @id is key for row to update
cmd.Parameters.Add("@name", name);
cmd.Parameters.Add("@number", number);
cmd.Parameters.Add("@id", id);
cmd.Connection = sqlConn;
sqlConn.Open();
cmd.ExecuteNonQuery();
}
}
我把你的命令字符串改成了有效的。同样,在您的原始代码中,您没有检索到要更新的行的id,所以我为其添加了标记,您应该将其更改为正确的标记(变量id
)。
希望这有帮助:)