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驱动是不是有问题?
ODBC驱动是不是有问题?
#2
language 是个表名,不是C#的关键字
还要建ODBC,客户最讨厌用了,客户也不喜欢你在他电脑上建ODBC,他每次重装电脑,不可能每次建ODBC的.
MyConnection.Open();那句都是OK的,
OleDbDataReader myreader = MyCommand.ExecuteReader();这句读后台数据库中的数据的时候就不行了.
谢谢你的回复.
还要建ODBC,客户最讨厌用了,客户也不喜欢你在他电脑上建ODBC,他每次重装电脑,不可能每次建ODBC的.
MyConnection.Open();那句都是OK的,
OleDbDataReader myreader = MyCommand.ExecuteReader();这句读后台数据库中的数据的时候就不行了.
谢谢你的回复.
#3
OleDbCommand MyCommand = new OleDbCommand("select * from [language] ", MyConnection);
language是Access的关键字 一楼说的很正确
language是Access的关键字 一楼说的很正确
#4
select * from [language]
#5
看看是不是相对路径有问题.
#6
谢谢大家,这个问题已经解决了.20分我只能给"末日之痕"啦.谢谢你..呵呵,
#1
language 会不会是Access的关键字?
ODBC驱动是不是有问题?
ODBC驱动是不是有问题?
#2
language 是个表名,不是C#的关键字
还要建ODBC,客户最讨厌用了,客户也不喜欢你在他电脑上建ODBC,他每次重装电脑,不可能每次建ODBC的.
MyConnection.Open();那句都是OK的,
OleDbDataReader myreader = MyCommand.ExecuteReader();这句读后台数据库中的数据的时候就不行了.
谢谢你的回复.
还要建ODBC,客户最讨厌用了,客户也不喜欢你在他电脑上建ODBC,他每次重装电脑,不可能每次建ODBC的.
MyConnection.Open();那句都是OK的,
OleDbDataReader myreader = MyCommand.ExecuteReader();这句读后台数据库中的数据的时候就不行了.
谢谢你的回复.
#3
OleDbCommand MyCommand = new OleDbCommand("select * from [language] ", MyConnection);
language是Access的关键字 一楼说的很正确
language是Access的关键字 一楼说的很正确
#4
select * from [language]
#5
看看是不是相对路径有问题.
#6
谢谢大家,这个问题已经解决了.20分我只能给"末日之痕"啦.谢谢你..呵呵,