【问题标题】:how to update database from datagridview如何从datagridview更新数据库
【发布时间】:2015-05-20 23:59:06
【问题描述】:

我已经检查了 datagridview 中的启用编辑选项 我有一个从我的数据库生成的数据集模型,我正在尝试使用更新方法,但它没有采用正确的参数 在加载时,即使它正在获取并显示到 datagridview 中。

    private void FrmSession_Load(object sender, EventArgs e)
    {
        tblSessionTableAdapter tblSession = new tblSessionTableAdapter();
        dataGridView1.DataSource = tblSession.spGetSessionRecord();

    } 

但是在按钮上单击,即使它没有从 datagridview 更新,我是否遗漏了什么?

    private void btnAdd_Click(object sender, EventArgs e)
    {
        FMSDataSet ds = new FMSDataSet(); //Object of automatically generated model
        tblSessionTableAdapter tblSession = new tblSessionTableAdapter();
        tblSession.Update(ds);  // i put ds here because on update's third constructor it requires dataset
    }

【问题讨论】:

  • 您应该使用原始修改的 DataSource 并且可能使用原始适配器,如果您创建一个新的 DataSet,您打算如何将仅存在于原始数据集中的修改数据发送到您的数据库?
  • 我没有制作任何数据集或适配器我使用工具箱中的数据集控件生成数据集模型并使用该表适配器我可以获取数据,正如您在“frmSession_Load”事件中看到的那样,为什么我不能使用相同的适配器 tblsession.update 方法更新它?
  • “tblSession.spGetSessionRecord();”的返回类型是什么?

标签: c# winforms datagridview dataset tableadapter


【解决方案1】:

问题是在click方法中创建了一个新的DataSet。新的 DataSet 不包含任何修改,因为它是新创建的。

修改包含在作为 GridView 的数据源的 DataSet/DataTable 中。

tblSession.Update([Put the same DataSet/DataTable as in load method here]);

【讨论】:

    【解决方案2】:

    如果您希望您的数据集具有状态,那么您需要使您的数据集成为一个成员变量,以便您可以保持当前状态并对其进行更新。

    FMSDataSet ds;
    
    Constructor() 
    {
      ds = new FMSDataSet();
    }
    

    //然后在你的点击事件中访问它。

     private void btnAdd_Click(object sender, EventArgs e)
    {
        tblSessionTableAdapter tblSession = new tblSessionTableAdapter();
        tblSession.Update(this.ds);  // update persistent data set
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-03
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      相关资源
      最近更新 更多