c#中,怎么用dataset(ado.net)向表中插入多条记录?不要用存储过程。
在网上我看了dataset更新的例子,都是先查询出来,修改一下,然后update,由于我是先显示数据,然后对其做一番修改(可能间隔很长的时间),dataset已经不存在了,需要新建一个吧,但是我操作没有成功。表table1含有3个字段(col1,col2,col3),向数据库中新增多条记录。
请给予指点,给出代码示例

解决方案 »

  1.   

    dataset已经不存在了?
    那你的数据在哪显示?DataGridView中?
      

  2.   

    dataset已经不存在了? 是应用程序关闭了?然后再运行?DATASET其实就是内存数据缓存,生存期结束后就没有了干脆你直接执行INSERT的SQL 语句吧
      

  3.   

    直接在DataGirdView中添加记录.然后嘛~~~简单的两句话搞定~
                        //adapter 就是DataAdapter... ds就是DataSet... 捆绑在了DataGirdView中~
                        SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
                        adapter.Update(ds);
      

  4.   

    回3l
    就是因为麻烦,我才想这个办法的。对,在DataGridView中显示,我的dataset是在一个按钮事件中定义的,按钮结束了就不存在了
    对5楼我的理解是:一旦绑定到DataGridView中,这个dataset就一直存在吗?
      

  5.   

    为什么不把dataset定义为当前窗体的私有成员,这样你按钮结束了dataset仍存在嘛。
    PS:LZ头像中的熊猫很可爱
      

  6.   

    表table1含有3个字段(col1,col2,col3),向数据库中新增多条记录。 
    请给予指点,给出代码示例 
    这个也是我目前想知道的,如果是固定的值,用数组和循环可以搞定,但添加的记录可多可少,如何智能的读取和插入表中呢??
      

  7.   

    回10谢谢你回我的帖子,我的问题还是没有解决
    虽然吧dataset/table给绑定到datagridview中了,即使dataset/table真的存在的话,从绑定到datagridview时到提交更新数据库,这期间可能别的用户修改了数据库表中的记录怎么避免这种情况,如果我吧dataset定义为窗体级的变量,这个变量在窗体关闭之前就一直存在,我修改dataset再用dataadapter更新,这样如何,要是期间别人动了数据库也没关系吗?
      

  8.   

    没有关系.
    DataSet是吧数据库虚拟到内存中.
    用adapter.update()方法就可以对在虚拟数据库中的修改保存进去.也就是说Dataset是什么数据了就保存到数据库什么数据
      

  9.   

    像8楼所说的一样,把DataSet设为窗体级的变量
    以下是一个Sava例子,但愿对你有所帮助                    this.dgvSysSet.EndEdit();//加上此行能把当前正在编辑的单元格的新值保存到数据库
                        this.BindingContext[myDataSet, "tabpaseh"].Position = this.dgvSysSet.CurrentCell.RowIndex;
                        this.BindingContext[myDataSet, "tabpaseh"].EndCurrentEdit();                    DataTable  ChgObjPaSeh = this.myDataSet.Tables["tabpaseh"].GetChanges();
                        if (ChgObjPaSeh != null)
                        {
                            //if (Program.myConn.State.ToString() =0)
                            //{
                            //    Program.myConn.Open();
                            //}                        MyDataAdapterSysSet.ContinueUpdateOnError = true;
                            try
                            {
                                if (ChgObjPaSeh != null)
                                {
                                    
                                    MyDataAdapterSysSet.Update(ChgObjPaSeh);
                                    myDataSet.Merge(ChgObjPaSeh);
                                    myDataSet.AcceptChanges();
                                    MessageBox.Show("保存成功!", "保存提示");
                                }
                            }
                            catch (Exception ex)
                            {
                                MessageBox.Show(ex.ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                myDataSet.Tables["tabpaseh"].RejectChanges();
                            }                    }
      

  10.   

    就是变量生存期的问题,如果你把DataSet对象声明成局部变量,那么它的生存期就很短,但如果你把它声明为私有成员那么它的生存期就和窗体是一样的
      

  11.   

    谢谢热情的12楼,我还是有问题没弄清楚
    你说的没关系是指“操作不会发生错误”,是这个意思吧?但是逻辑上呢?举例说
    表里面有两条数据,row1,row2;我全部查询出来,存放在dataset中,然后,我通过某种方法,向dataset中对应的表增加一条记录newRow3,现在共存在着3条记录.
    此时,别人操作数据库,删除了表中的row2.我用dataset更新数据库表之后,表中还存在row2吗??