[ASP]错误 '80004005' 未发现数据源名称并且未指定默认驱动程序!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[ASP]错误 '80004005' 未发现数据源名称并且未指定默认驱动程序!相关的知识,希望对你有一定的参考价值。

代码如下:
<%
dim ConnStr,RecUser,SQLstr
ConnStr="DNS=chat2;"
Set RecUser=server.CreateObject("ADODB.RecordSet")

SQLstr="Select * from content where speaktime >= #" & session("entertime") & "# order by speaktime"
RecUser.Open SQLstr,ConnStr,1,3 ‘第17行
do while not RecUser.EOF
if RecUser("isprivate") = true then
Response.Write"<font color=bule>" & RecUser("userid") & "私下对" & RecUser("friendid") & "说:</font>" & RecUser("content") & "<br>"
else
Response.Write RecUser("userid") & "对" & RecUser("friendid") & "说:" & RecUser("content") & "<br>"
end if
RecUser.MoveNext
loop
RecUser.Close
Set RecUser = Nothing
%>
错误信息:
Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'
[Microsoft][ODBC 驱动程序 管理器] 未发现数据源名称并且未指定默认驱动程序
/ht/chatissue.asp, 行17

数据库连接没有问题,数据源也设置了,其他网页连接这个数据库都没有问题,就这个网页不行。
郁闷~~

参考技术A Microsoft
OLE
DB
Provider
for
ODBC
Drivers
error
'80004005'
[Microsoft][ODBC
Driver
Manager]
Data
source
name
not
found
and
no
default
driver
specified.
原因:
最可能的原因是ConnectString是一个在global.asa中初始化的Session变量,但是global.asa
却没有正常工作。解决办法是,检查赋值时是否正确:(在你的asp中加入下面的代码)
<%=
"'auth_user'
is
"
&
request.servervariables("auth_user")%>
<P>
<%=
"'auth_type'
is
"
&
request.servervariables("auth_type")%>
<P>
<%=
"connection
string
is
"
&
session("your_connectionstring")%>
<P>
还有一个原因就是你在你的ConnectString中加入了多余的空格,例如
DSN
=
MyDSN;
Database
=
Pubs;
试试改成下面这个样子:
DSN=MyDSN;Database=Pubs;
如果是global.asa还没有工作,检查该文件是否在运用程序的根目录中,或者是虚拟目录的根目录中。
还有可能错误出现的原因是DSN名称没找着,这可以采用我提供的id=36767的办法解决。
最后是检查是否安装了最新的驱动程序,既是否是最新的MDAC版本。

隐藏面板内的 ASP.NET updatepanel 可能存在错误

【中文标题】隐藏面板内的 ASP.NET updatepanel 可能存在错误【英文标题】:ASP.NET updatepanel inside hidden panel possible bug 【发布时间】:2011-02-24 11:29:58 【问题描述】:

asp.net SciptManager 控件生成的 JavaScript 似乎有错误,无法处理隐藏的 UpdatePanel。当一个更新面板中的控件尝试使另一个更新面板可见时,将引发 JavaScript 错误。

这是 ASP.Net AJAX 的错误吗?有没有人知道如何解决这个问题?

这是我正在尝试做的一个例子

<script type="text/C#" runat="server">
    protected void LinkButton1_Click(object sender, EventArgs e)
    
        Panel1.Visible = true;
    
</script>

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click" Text="Show Panel"></asp:LinkButton>
    </ContentTemplate>
</asp:UpdatePanel>

<asp:Panel ID="Panel1" runat="server" Visible="false">
    <asp:UpdatePanel ID="UpdatePanel2" runat="server">
        <ContentTemplate>
            blah bla blah
        </ContentTemplate>
    </asp:UpdatePanel>
</asp:Panel>

这是单击“LinkBut​​ton1”链接时引发的 JavaScript 错误。此错误来自 asp.net ScriptManager 控件生成的 JavaScript

Error: Sys.InvalidOperationException: Could not find UpdatePanel with ID 'ctl00_ContentPlaceHolder1_UpdatePanel2'

【问题讨论】:

【参考方案1】:

您得到的错误不是来自 JavaScript,而是来自 ASP.NET。

你得到它是因为你试图让 Panel1 可见,即在你所称的 UpdatePanel 之外,这是不可能的。

您要在网页上更新的所有内容都必须在您调用的UpdatePanel 内。

【讨论】:

【参考方案2】:

您遇到了问题,因为在首次呈现页面时未呈现 Panel1 的内容。这会导致 UpdatePanel2 未正确初始化。

(管理所有部分更新的页面请求管理器需要知道 UpdatePanel2 的存在,如果不渲染就不会发生这种情况。另外,如果您考虑一下,更新面板需要渲染一些元素,如果只是添加一个占位符 div,它将在部分回发中注入其内容)。

我不确切知道您要达到什么目的,但是,如果您只是希望 UpdatePanel2 由本身不在更新面板内的控件触发,则将 LinkBut​​ton1 设置为这样的触发器。

<script runat="server">
    protected void LinkButton1_Click(object sender, EventArgs e)
    
        blabla.Visible = true;
    
</script>

<asp:ScriptManager ID="ScriptManager1" runat="server" ScriptMode="Debug">
</asp:ScriptManager>

<asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click" Text="Show Panel"></asp:LinkButton>

<asp:UpdatePanel ID="UpdatePanel2" runat="server" >
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="LinkButton1" />
    </Triggers>
    <ContentTemplate>
        <asp:PlaceHolder runat="server" ID="blabla" Visible="false">
        blah bla blah
        </asp:PlaceHolder>
    </ContentTemplate>
</asp:UpdatePanel>

如果 LinkBut​​ton1 确实必须在更新面板内(也许 LinkBut​​ton1 并不总是可见?)那么您可以执行以下操作

<script runat="server">
    protected void LinkButton1_Click(object sender, EventArgs e)
    
        blabla.Visible = true;
        UpdatePanel2.Update();
    
</script>

<asp:ScriptManager ID="ScriptManager1" runat="server" ScriptMode="Debug">
</asp:ScriptManager>

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" >
    <ContentTemplate>
        <asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click" Text="Show Panel"></asp:LinkButton>
    </ContentTemplate>
</asp:UpdatePanel>

<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional" >
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="LinkButton1" />
    </Triggers>
    <ContentTemplate>
        <asp:PlaceHolder runat="server" ID="blabla" Visible="false">
        blah bla blah
        </asp:PlaceHolder>
    </ContentTemplate>
</asp:UpdatePanel>

【讨论】:

感谢您的彻底回复。您会认为页面请求管理器足够聪明,可以实现第二个更新面板未呈现在页面上。你的第二个建议接近我想要做的事情。但这样做意味着更新面板必须包围占位符的所有内容,而在我的情况下,只有一小部分内容需要使用 ajax。 为什么不把更新面板和占位符只包裹在需要更新的内容周围呢?

以上是关于[ASP]错误 '80004005' 未发现数据源名称并且未指定默认驱动程序!的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005' [Microsoft][ODBC

asp的数据库查询语句

访问和经典 ASP 错误 80004005 超出系统资源

[急急急]mysql不允许插入'(单引号)??

我把源码放到web但是提示错误,说要放在wwwroot,但是我又没有wwwroot这个目录文件夹。

在windows2008系统下,通过IIS下载.exe.config文件时提示404错误,要怎么设置才可以呢?2003系统是没问题