我想将数据库中数据显示到dataGrid中,运行时提示错误信息:
“多步OLEDB操作产生错误。如果可能,请检查每个OLEDB的状态值。没有工作被完成。”
救救我这只菜鸟!Please! 
很急呀!!!private void button3_Click(object sender, System.EventArgs e)
{
    string strAccessConn=@"
               Provider=Microsoft.Jet.OLEDB.4.0;
               Integrated Security=SSPI;
               Initial Catalog=temporary;  
               Persist Security Info=False;
               Data Source=C:\Documents and Settings\dong\桌面\毕业设计\temporary.mdb";
    string strAccessSelect="SELECT Code,Date,Start,End,High,Low,Amount,Money,Area FROM stock";
    OleDbConnection myAccessConn =null;
    DataSet myDataSet = new DataSet();
    try
   {
myAccessConn=new OleDbConnection(strAccessConn); 
OleDbCommand myAccessCommand = new OleDbCommand(strAccessSelect,myAccessConn);
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand);
myAccessConn.Open();
myDataAdapter.Fill(myDataSet,"stock"); 
this.dataGrid1.DataSource =myDataSet;
this.dataGrid1.DataMember="stock";
    }
   catch(OleDbException odbe)
   {
MessageBox.Show("OleDbException:"+odbe.Message);
   }
   finally
   {
myAccessConn.Close();
   }
}

解决方案 »

  1.   

    myDataAdapter 沒有指定連接吧?
      

  2.   

    下面语句有很多栏位名称是关键字,如Date/End/Low/Money,取名时应注意。//可以加上[]表明
    string strAccessSelect="SELECT Code,[Date],Start,[End],High,[Low],Amount,[Money],Area  FROM stock";
      

  3.   

    我把栏位名称改了,但还是报同样的错,why?
      

  4.   

    我看可能是关键字引起,像kssys()说的那样试试,应该是可的,
    你的myDataAdapter已经有了连接,是这个语句指定的:OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand);
      

  5.   

    myAccessConn=new OleDbConnection(strAccessConn); 
    myAccessConn.Open();//先打开连接。 OleDbCommand myAccessCommand = new OleDbCommand(strAccessSelect,myAccessConn);
    OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand);
      

  6.   

    你这样写毕业设计怎么过连接access数据库的连接串没写过sql中uid=;pwd=;database=;server=local;
      

  7.   

    我照hsmserver的方法做了,但依然报同样的错,请问为什么
      

  8.   

    那么,楼主设断点试试上面的代码不可能会导致:"多步OLEDB操作产生错误。如果可能,请检查每个OLEDB的状态值。没有工作被完成。”
      

  9.   

    多谢kssys!
    但我还是不太明白,程序当然是停在断点那行啦,把代码贴出来?贴到哪?
      

  10.   

    我把断点设在:
    string strAccessConn=@"
                   Provider=Microsoft.Jet.OLEDB.4.0;
                   Integrated Security=SSPI;
                   Initial Catalog=temporary;  
                   Persist Security Info=False;
                   Data Source=C:\Documents and Settings\dong\桌面\毕业设计\temporary.mdb";
    停住后按F5,就显示“多步OLEDB操作产生错误。如果可能,请检查每个OLEDB的状态值。没有工作被完成。”
      

  11.   

    //以下代码调试通过
    private void button3_Click(object sender, System.EventArgs e)
    {
    string strAccessConn=@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\dong\桌面\毕业设计\temporary.mdb"";
    string strAccessSelect="SELECT Code,[Date],[Start],[End],[High],[Low],[Amount],Money,Area FROM stock";
    OleDbConnection myAccessConn =null;
    DataSet myDataSet = new DataSet();
    try
    {
    myAccessConn=new OleDbConnection(strAccessConn); 
    OleDbCommand myAccessCommand = new OleDbCommand(strAccessSelect,myAccessConn);
    OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand);
    myAccessConn.Open();
    myDataAdapter.Fill(myDataSet,"stock"); 
    this.dataGrid1.DataSource =myDataSet.Tables[0];
    // this.dataGrid1.DataMember="stock";
    }
    catch(OleDbException odbe)
    {
    MessageBox.Show("OleDbException:"+odbe.Message);
    }
    finally
    {
    myAccessConn.Close();
    }
    }
      

  12.   

    照amandag的方法可以出来正确结果了!多谢amandag!
    再次感谢大家的帮助!!!
      

  13.   

    我是菜鸟,不清楚什么原因,我觉得区别就是:
    错:this.dataGrid1.DataSource =myDataSet;
      this.dataGrid1.DataMember="stock";
    对:this.dataGrid1.DataSource =myDataSet.Tables[0];
    但不知道为什么,大家来指教一下!
      

  14.   

    1.你的连接字符串出了问题
    2.以下两种写法应该是一样的,不过我更习惯第一种
    错:this.dataGrid1.DataSource =myDataSet;
      this.dataGrid1.DataMember="stock";
    对:this.dataGrid1.DataSource =myDataSet.Tables[0];
    3.记得结贴