string lang = "cn";
            string relan = "";
            string MyConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data source="
                                        + Directory.GetCurrentDirectory() + "\\jiekou.mdb";
            OleDbConnection MyConnection = new OleDbConnection(MyConnectionString);
            OleDbCommand MyCommand = new OleDbCommand("select * from language ", MyConnection);
            MyConnection.Open();
            OleDbDataReader myreader = MyCommand.ExecuteReader();
            //老是执行到上一句就出错,请大家帮忙,编译的时候不出错,但我运行就出错。
            myreader = MyCommand.ExecuteReader();
            DataTable mytable = new DataTable();
            mytable.Load(myreader);
            string mysearch = " lan_id = AA0002 ";
            DataRow[] myrows = mytable.Select(mysearch);
            switch (lang)
            {
                case "cn": relan = (string)myrows[0].ItemArray[1]; break;
                case "ct": relan = (string)myrows[0].ItemArray[2]; break;
                case "en": relan = (string)myrows[0].ItemArray[3]; break;
                default: relan = (string)myrows[0].ItemArray[1]; break;
            }
            MyConnection.Close();
            MessageBox.Show(relan);
            } 
运行后系统报错如下:是OleDbException类报错如下:
IErrorInfo.GetDescription 因 E_FAIL(0x80004005) 而失败。
编译过程是不会出错的,真正运行过程 OleDbDataReader myreader = MyCommand.ExecuteReader(); 这句就会出错.出错我做过如下工作,仔细分析代码,查过很多资料,我个人觉得代码是没错的.
然后又更新Access数据库,原来是office2000的,又改成office2003,还是一样的错误.Access数据库的问题也被排除.
然后,安装MDAC2.8版本的微软数据访问组件,按道理是不用安装的,XP操作系统自带.
换了电脑也是XP操作系统的还是一样出错,操作系统的问题也被排除.小弟知道这里卧虎藏龙,跪求各位大哥指点一下?感激不尽!!

解决方案 »

  1.   

    language 会不会是Access的关键字?
    ODBC驱动是不是有问题?
      

  2.   

    language 是个表名,不是C#的关键字
    还要建ODBC,客户最讨厌用了,客户也不喜欢你在他电脑上建ODBC,他每次重装电脑,不可能每次建ODBC的.
    MyConnection.Open();那句都是OK的,
    OleDbDataReader myreader = MyCommand.ExecuteReader();这句读后台数据库中的数据的时候就不行了.谢谢你的回复.
      

  3.   

    OleDbCommand MyCommand = new OleDbCommand("select * from [language] ", MyConnection);language是Access的关键字 一楼说的很正确
      

  4.   

    select * from [language]