【问题标题】:How to update database when changes happen in datagridview如何在datagridview中发生更改时更新数据库
【发布时间】:2012-02-12 10:09:53
【问题描述】:

我有问题要问。

我想通过更改 datagridview 来更新数据库后端的表。 DataGridView 更改应反映到数据库中。

我怎样才能实现它?

谢谢...

代码:

SqlCommand command;
            if (con.State == ConnectionState.Closed)
                con.Open();

            string updateQuery = @"UPDATE Hucre set VericiKB=@VericiKB Where OrtamKB=@OrtamKimlikBilgisi and HucreKB=@HucreKB";
            command = new SqlCommand(updateQuery, con);

            command.Parameters.Add("@VericiKB", SqlDbType.Int, 50, "VericiKB");
            SqlParameter param1 = command.Parameters.Add("@HucreKB", SqlDbType.Int, 50, "HucreKB");
            SqlParameter param2 = command.Parameters.Add("@OrtamKB", SqlDbType.Int, 50, "OrtamKB");

            param1.SourceVersion = DataRowVersion.Original;
            param2.SourceVersion = DataRowVersion.Original;

            da.UpdateCommand = command;

【问题讨论】:

  • 您可以通过添加插入、更新或删除命令/事件来实现这一点,到目前为止您尝试过什么......?
  • @DJKRAZE 您好,尝试过但没有成功..
  • 你遇到了什么问题?
  • 请粘贴您尝试过的代码示例。例如如何通过 sql 绑定 DataGridview。您是否使用 DataAdapters..ect...??/
  • 我正在尝试添加我的代码,但它没有更新..

标签: c# winforms data-binding datagridview


【解决方案1】:

da.UpDateCommand = command;.. 在哪里或是什么? 里面

通过包装 Try Catch {} 块重构代码

SqlCommand command = null;
try
{
  if (con.State == ConnectionState.Closed)
  {
      con.Open();
  }

  string updateQuery = @"UPDATE Hucre set VericiKB=@VericiKB 
         WHERE OrtamKB=@OrtamKimlikBilgisi and HucreKB=@HucreKB";
  command = new SqlCommand(updateQuery, con);
  command.Parameters.AddWithValue("@VericiKB", "VericiKB");//pass a variable here 
  SqlParameter param1 = command.Parameters.AddWithValue("@HucreKB", "HucreKB");//pass a variable here
  SqlParameter param2 = command.Parameters.AddWithValue("@OrtamKB", "OrtamKB");//pass a variable here
  param1.SourceVersion = DataRowVersion.Original;
  param2.SourceVersion = DataRowVersion.Original;
  //what is this ..??? da.UpdateCommand = command;
  command.ExecuteNonQuery;
 }
 catch (Exception e)
 {
    //Write or trap your exception here..
 }

//完成后释放 SQLCommand 对象

【讨论】:

  • 如果您尝试使用 DataRowVersion.Original 进行缓存,为什么..?尝试先执行简单的更新,以便我们可以消除其他错误发生的原因或位置..
【解决方案2】:

只需像

一样添加数据绑定
this.domainUpDown1.DataBindings.Add("Text", _user, "Active", true);

此示例适用于实体框架。对于 EF,您必须调用

_repository.UnitOfWork.SaveChanges()

在关闭表单之前,或在更改值之后

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 2017-05-27
    • 1970-01-01
    • 2011-09-13
    • 1970-01-01
    相关资源
    最近更新 更多