private void updata()
        {
            OleDbCommandBuilder ob = new OleDbCommandBuilder();   //第一行
            da.UpdateCommand = ob.GetUpdateCommand();             //第二行
            da.InsertCommand = ob.GetInsertCommand();             //第三行
            da.DeleteCommand = ob.GetDeleteCommand();             //第四行            da.Update(ds,"通讯录");                               //第五行
        }        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            updata();                                              //第六行
        }
da 是OleDbDataAdapter,ds是DataSet,
 我在dataset中进行删除、更改、添加行后,用updata更新数据源,可每次调用private void updata()的时候,总会在第二行抛出一个异常   “DataAdapter.SelectCommand 属性需要初始化。”
如果我把第二行给注释了,同样的异常会出现在第三行,这是怎么回事啊..!? 
DataAdapter.SelectCommand 属性我在填充dataset的时候就已经定义过了啊..希望哪位高手帮下忙啊~~~   先谢谢大家了~!!!!!!!!!!!!

解决方案 »

  1.   

    晕,你什么都不设置,搞啥啊
    要先设置一下SelectCommand的~
      

  2.   

    先设置一下SelectCommand 选项吧
      

  3.   

    ????  什么意思,!? 为什么要先设置SelectCommand  呢,!?
      

  4.   

    晕, 什么意思啊..!? 怎么设置.. 断点查看  da 中的selectcommand属性有赋值的 ..
      

  5.   

    OleDbCommand   comm   =   new   OleDbCommand(sqltxt,conn); 
    OleDbDataAdapter MyDataAdapter = new OleDbDataAdapter(); 
    MyDataAdapter.SelectCommand = comm  ; 
      

  6.   

    回复 #7楼 这些在之前都建立好了啊,在之前创建dataset的时候都已经建立好了,
    OleDbDataAdapter da,还有dataset ds 这些都是全局变量..
      

  7.   


    有值跟有正确的值是两码事。 你连 Select 什么东西都不告诉 CommandBuilder,它怎么帮你创建 Update, Insert, Delete 啊?
      

  8.   

    第一行改为:
    OleDbCommandBuilder ob = new OleDbCommandBuilder(da); 
    自动给da生成insertCommand、updateCommand。。
    可以去掉2、3、4行
    以上前提是selectCommand的来源是同一个表!
    即它的Sql语句如:select * from tb(单个表)。。