C#2005用代码访问Access数据库老是出错,代码应该没错.请各位大哥看看是什么原因?

时间:2022-09-12 08:30:31

            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操作系统的还是一样出错,操作系统的问题也被排除.

小弟知道这里卧虎藏龙,跪求各位大哥指点一下?感激不尽!!

6 个解决方案

#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]

#5


看看是不是相对路径有问题.

#6


谢谢大家,这个问题已经解决了.20分我只能给"末日之痕"啦.谢谢你..呵呵,

#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]

#5


看看是不是相对路径有问题.

#6


谢谢大家,这个问题已经解决了.20分我只能给"末日之痕"啦.谢谢你..呵呵,