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

}

通过datagridview更新sql数据库

我认为您在更新行的值时有问题。您的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)。

希望这有帮助:)