【问题标题】:Inserting and updating data grid row in the linked db table using sqlite, wpf and C#使用 sqlite、wpf 和 C# 在链接的 db 表中插入和更新数据网格行
【发布时间】:2013-10-21 06:18:57
【问题描述】:

我用于将 db 表链接到数据网格的 sqlite 代码是:

 sqlitecon.Open();
 string Query2 = "Select * from Security_details "; 
 SQLiteCommand createCommand2 = new SQLiteCommand(Query2, sqlitecon);  createCommand2.ExecuteNonQuery();
 SQLiteDataAdapter dataAdp2 = new SQLiteDataAdapter(createCommand2);
 DataTable dt2 = new DataTable("Security_details");
 dataAdp.Fill(dt2);
 datagrid_security.ItemsSource = dt2.DefaultView;
 dataAdp2.Update(dt2); 
 sqlitecon.Close();

此代码在表单加载事件期间将 db 表链接到数据网格。

我希望用户能够:

  • 在数据网格上添加新行并插入到数据库中
  • 编辑数据网格上的现有行将更新到数据库中。

下面的查询是我的数据库字段

SQLiteCommand comm = new SQLiteCommand("update Security_details  " + 
      "set id=@id,Code=@Code,Description=@Description,Rate=@Rate," + 
      "Qty=@Qty,Amount=@Amount,Remarks=@Remarks where id=@id", sqlitecon);

请告诉我通过datagrid插入和编辑db表的命令集?谢谢

【问题讨论】:

  • 注意:这里我没有使用任何FrameWork...我在google上搜索过我发现很多文章使用实体框架在datagrid上执行此任务

标签: c# sqlite datagrid wpf-controls


【解决方案1】:

SQLiteDataAdapter 的声明移动到全局类级别,并在那里声明SQLiteCommandBuilder。然后,在将数据绑定到网格之前,初始化 SQLiteCommandBuilder,它将自动创建适合您的表的 UPDATE/INSERT/DELETE 命令(前提是 SELECT 返回表的主键)

此时,当您准备好将数据提交到数据库时,调用全局 SQLiteDataAdapter 实例的Update 方法

public class YourClass
{
     SQLiteDataAdapter dataAdp2;
     SQLiteCommandBuilder cmdBuilder;
     .....


     public void BindMyGrid()
     {
          sqlitecon.Open();
          string Query2 = "Select * from Security_details "; 
          SQLiteCommand createCommand2 = new SQLiteCommand(Query2, sqlitecon);                

          dataAdp2 = new SQLiteDataAdapter(createCommand2);
          cmdBuilder = new SQLiteCommandBuilder(dataAdp2);
          DataTable dt2 = new DataTable("Security_details");
          dataAdp2.Fill(dt2);
          datagrid_security.ItemsSource = dt2.DefaultView;
          sqlitecon.Close();
     }
     ....
     public void SubmitData()
     {
          dataAdp2.Update((datagrid_security.ItemsSource As DataView).Table);
     }
     ......
}

如果您需要更深入地讨论这个过程you could read this MSDN article,它比较老,关于 SQL Server,它是在 VB.NET 中,但基本概念是相同的。

【讨论】:

  • public void SubmitData() { dataAdp2.Update((datagrid_security.ItemsSource As DataView).Table); } 这个函数会编辑并插入到 db 表中吗?
  • 现在无法找到 SQLite 的确切参考页面,但 this page for the base class DbDataAdapter 解释了此方法的预期功能。是的,它应该更新、插入和删除您的 MODIFIED/INSERTED 和 DELETED 行
猜你喜欢
  • 2013-12-14
  • 2012-03-16
  • 2012-06-06
  • 1970-01-01
  • 2014-02-12
  • 2013-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多