请求高手帮助,用asp.net做网站连接access数据库时,出现 80040154错误。

爱思考的实践者 2011-12-17 09:39:29
“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------

检索 COM 类工厂中 CLSID 为 {2206CDB2-19C1-11D1-89E0-00C04FD7A829} 的组件时失败,原因是出现以下错误: 80040154。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Runtime.InteropServices.COMException: 检索 COM 类工厂中 CLSID 为 {2206CDB2-19C1-11D1-89E0-00C04FD7A829} 的组件时失败,原因是出现以下错误: 80040154。

源错误:


行 25: OleDbCommand cmd = new OleDbCommand();//声明一个OleDbCommand的对象,并将该对象cmd实例化
行 26: cmd.Connection = con;
行 27: con.Open();//打开数据库连接
行 28: OleDbDataAdapter sda = new OleDbDataAdapter("select top 9 * from tb_xinwen order by fabushijian desc", con);//从新闻表tb_xinwen按发布时间fabushijian的降序排序
行 29: DataSet ds = new DataSet();//声明一个DataSet的对象,并将该对象ds实例化


源文件: e:\WebSite3\Default.aspx.cs 行: 27

堆栈跟踪:


[COMException (0x80040154): 检索 COM 类工厂中 CLSID 为 {2206CDB2-19C1-11D1-89E0-00C04FD7A829} 的组件时失败,原因是出现以下错误: 80040154。]
System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck) +0
System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache) +103
System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache) +261
System.RuntimeType.CreateInstanceImpl(Boolean publicOnly) +14
System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) +1036
System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) +114
System.Data.OleDb.OleDbConnectionInternal.CreateInstanceDataLinks() +96
System.Data.OleDb.OleDbConnectionInternal.GetObjectPool() +130

[InvalidOperationException: .Net Framework 数据提供程序要求 Microsoft Data Access Components(MDAC)。请安装 Microsoft Data Access Components(MDAC) 2.6 或更高版本。]
System.Data.OleDb.OleDbConnectionInternal.GetObjectPool() +166
System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection) +51
System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) +53
System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup) +27
System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +47
System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +105
System.Data.OleDb.OleDbConnection.Open() +37
Default2.xinwenfillgv() in e:\WebSite3\Default.aspx.cs:27
Default2.Page_Load(Object sender, EventArgs e) in e:\WebSite3\Default.aspx.cs:17
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +15
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +33
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +47
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1061




--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:2.0.50727.1891; ASP.NET 版本:2.0.50727.1879
...全文
227 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdn_aspnet 2011-12-18
  • 打赏
  • 举报
回复
在web.config中配置好连接字符串,然后在后台取,在此我的做法是存两个值,将Provider和assess数据库文件的路径分开存,如下:

<connectionStrings>
<add name="access_con" connectionString="Provider=Microsoft.Jet.Oledb.4.0;data source="/>
<add name="access_path" connectionString="~/App_Data/db.mdb"/>
</connectionStrings>因为在配置文件中存放的为相对路径,所以在后台读取出来后要将其转换为绝对路径,如下:

private string con_str = ConfigurationManager.ConnectionStrings["access_con"].ConnectionString
+HttpContext.Current.Server.MapPath( ConfigurationManager.ConnectionStrings["access_path"].ConnectionString);主要的区别就在连接字符串方面,其他的操作和sqlserver基本相同,将命名空间和类换成olddb的就行。在webconfig中写连接字符串时有一点需要注意:

<add name="access_con" connectionString="Provider=Microsoft.Jet.Oledb.4.0;data source="/>上面代码中的data source 中间一定要有空格,不能写成了datasource ,否则在执行程序的时候就会报错
-晴天 2011-12-17
  • 打赏
  • 举报
回复
可能是你的MDAC文件坏了,到这儿下载一个修复文件修复了试试:
http://ishare.iask.sina.com.cn/f/20708176.html?from=like

28,409

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧