ASP连接数据库字符串的老问题

时间:2021-09-07 07:37:50
我用的是先建立ODBC数据源(如userinfo),然后用
  Conn.open "dsn=userinfo"

可为什么总提示出错!

本页无法显示 
试图访问的网页出现问题,无法显示。 

--------------------------------------------------------------------------------

请尝试以下方法:

单击 刷新按钮或者梢候再试。

打开 localhost 主页,然后查找与所需信息相关的链接。 
HTTP 500.100 - 内部服务器错误 - ASP 错误
Internet 信息服务

--------------------------------------------------------------------------------

技术信息(适用于支持人员)

错误类型:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E4D)
/selectDemo.asp, 第 17 行


浏览器类型:
Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0) 

页:
GET /selectDemo.asp 

时间:
2004年12月9日, 10:15:22 


什么原因哦?帮帮俺,都2天了,还没解决
(IIS5.0+sqlserver2000个人版+win2k专业版)

我看了这上面的帖子,也试过了,不能用啊!!!!急!!!在线等!!!

29 个解决方案

#1


把代码贴出来瞧瞧啊

#2


"********************************************************************
" 与SQL Server2000有关的连接
" 可以参照它建立您的数据库连接
"********************************************************************
"敬请注意:
"请根据情况配置StrServer,StrUid,StrSapwd,StrDbName四个参数
Dim StrServer,StrUid,StrSaPwd,StrDbName
StrServer="(local)" "数据库服务器名
StrUid="testuser" "您的登录帐号
StrSaPwd="12345" "您的登录密码
StrDbName="db_test_com" "您的数据库名称

Dim Conn "数据库连接
Dim StrDSN "数据库连接字符串
Dim Rs "命令字符串 
StrDSN="driver={SQL server};server="&StrServer&";uid="&StrUid&";pwd="&StrSaPwd&";database="&StrDbName
"建立和数据库master的连接
set Conn = Server.CreateObject("ADODB.Connection")
set Rs=Server.CreateObject("ADODB.RecordSet")
Conn.Open StrDSN
"********************************************************************
"********************************************************************


http://www.ytyu.com/news/html/212/2004-3/200431994436-1.html

#3


启用服务器iis的客户端脚本调试,和服务器端脚本调试

#4



<% @ language="VBS"   %>
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.open "DSN=userinfo;Uid=kele;Pwd=kele;" 



set Rs=Conn.execute("select * from User where(username='zhou' and password='zhou')" )
%>
select data Demo:<p>
<TABLE border=1 align=center>
<% do while (Not Rs.EOF) %>

<TR>
<TD><% =Rs("username") %></TD><td><% =Rs("password") %></td>
</TR>

<% Rs.movenext %>
<% loop %>
</TABLE>
<% Rs.close %>


<% Conn.close %>



#5


少了个<% ,加在第一个set语句前。不好意思

#6


set Rs=Conn.execute("select * from User where(username='zhou' and password='zhou')" )
没必要那么多()

set Rs=Conn.execute("select * from User where username='zhou' and password='zhou'" )

#7


17行在哪里?!

#8


数据源存在吗?

#9


ASP连接数据库相关源代码参考

1. ASP连接Access数据库语句

Set Conn=Server.CreateObject("ADODB.Connection") 
Connstr="DBQ="+server.mappath("www/bbs.mdb")+";DefaultDir=;DRIVER={Microsoft 
AccessDriver(*.mdb)};DriverId=25;FIL=MSAccess;ImplicitCommitSync=Yes;MaxBufferSize=5
12;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Threads=3;UserCommitSync=Yes;"
Conn.Open connstr 

其中Set Conn=Server.CreateObject("ADODB.Connection")为建立一个访问数据的对象
server.mappath("www/bbs.mdb")是告诉服务器access 数据库访问的路径

2. ASP连接Sqlserver数据库语句

Set conn = Server.CreateObject("ADODB.Connection") 
conn.Open"driver={SQLServer};server=202.108.32.94;uid=wu77445;pwd=p780522;database=w
ww_panwei_com"
conn open                    
其中/Set conn = Server.CreateObject("ADODB.Connection")为设置一个数据库的连接对象
driver=()告诉连接的设备名是SQL-SERVER
server是连接的服务器的ip地址,Uid是指用户的用户名,pwd是指的用户的password,
database是用户数据库在服务器端的数据库的名称

 

#10


数据源是存在的啊,而且数据源也测试成功了!

这个是17行

Conn.open "DSN=userinfo;Uid=kele;Pwd=kele;"

#11


to yb2008:
  我在网上看到了好多连接字符串的写法,每个人给出的都不一样,字符串里的属性值也都不一样,  能 告诉我这是怎么回事么?

我装sqlserver2000个人版的时候选择的是混合验证,而且为用户名为sa的用户设置了密码。装完sqlserver2000后,在企业管理器中注册服务器时选择的是windows验证,那么我如果使用ODBC数据源的连接方式时,UID和PWD该写哪个?是我进入操作系统时的用户名和密码?还是这个用户名为sa的用户对应的用户名和密码?感觉用数据源连接很不方便,其他的连接方式字符串又该怎么写呢?平时一直用数据源连接,也不知道这到底是属于那种连接方式,对数据访问技术又没多少经验,就是在网上看的干巴巴的理论,OLEDB,ODBC,JET,ADO一堆术语,到底怎么回事也闹不清楚。请指教,谢拉先!

#12


你用的sql数据库
用这个吧
string="driver={SQLServer};server=127.0.0.1;uid=test;pwd=1234;database=yourdatabase"
set Conn = Server.CreateObject("ADODB.Connection")
set Rs=Server.CreateObject("ADODB.RecordSet")
Conn.Open string

#13


要回了,再up一下吧

#14


没有解决么?

#15


http://support.microsoft.com/?scid=kb;zh-tw;307002&spid=555&sid=global

可能的错误: 您正試圖使用標準的 SQL Server 的帳戶驗證來建立連線,而 ADO 連接字串中沒有指定 UID 參數。

解決方案:
確認在 ADO 連接字串中加入 Trusted_Connection=yes 連接字串參數。如果您沒有加入這個參數,即使用來處理對 ASP 網頁要求的 Windows NT/Windows 2000 使用者帳戶在 SQL Server 中有相對應的 Windows 驗證登入名稱,還是會發生上述錯誤。
&#8226; 如果您想要使用標準 SQL Server 的帳戶驗證建立資料庫連線,請確認指定了 UID 與 PWD 連接字串參數。即使 DSN 的設定屬性是設為使用標準 SQL Server 帳戶驗證,您還是必須指定這些參數。如果您沒有指定這些參數,IIS 會試圖開啟信任的連線連至資料庫。

如果要使用標準 SQL Server 帳戶驗證建立連線,您必須在目標 SQL Server 上設定安全性設定,以允許使用混合模式 (NT 與 SQL Server) 帳戶驗證。如果您在連接字串中有指定有效的 UID 但漏掉了 PWD 參數,當指定的使用者識別碼包含非空白的密碼時,您會收到下面錯誤訊息:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E4D) 

................

#16


to xiaoyuehen:
  谢了先,马上测试!一会回来

#17


to xiaoyuehen:
         
有了点进展,提示的0x80040E4D错误消失了,可出现了新错误如下:

Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
/selectDemo.asp, 第 19 行


<%@ Language=VBScript%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>

<BODY>
<%

    dim connstr

connstr="Trusted_Connection=true;Server='bct-kele';Database='testdb'"
     Set Conn = Server.CreateObject("ADODB.Connection")
Conn.open connstr            Rem 这是第19行!

     set Rs=Conn.execute("select * from Orders")
%>
select data Demo:<p>
<TABLE border=1 align=center>
<% do while (Not Rs.EOF) %>

<TR>
<TD><% =Rs("OrderID") %></TD><td><% =Rs("OrderDate") %></td>
</TR>

<% Rs.movenext %>
<% loop %>
</TABLE>
<% Rs.close %>


<% Conn.close %>

</BODY>
</HTML>

帮我看看啦?

#18


<% @ language="VBS"   %>
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.open "DSN=userinfo;Uid=kele;Pwd=kele;" 
这里错了, 应该为这样的:
Conn.open "DSN=userinfo;Uid=kele;Pwd=kele;Database=数据库名;" '少了Database项啦。



set Rs=Conn.execute("select * from User where(username='zhou' and password='zhou')" )
%>
select data Demo:<p>
<TABLE border=1 align=center>
<%do while (Not Rs.EOF) %>

<TR>
<TD><% =Rs("username") %></TD><td><% =Rs("password") %></td>
</TR>

<% Rs.movenext %>
<% loop %>
</TABLE>
<% Rs.close %>


<% Conn.close %>

#19


connstr="Trusted_Connection=true;Server='bct-kele';Database='testdb'"
应该为:
connstr= "Driver={SQL Server};Server=localhost;UID=kele;PWD=kele;Database=testdb"
注意你的用户名和密码~~

#20


还用你的SQL语句这样写就行了:
set Rs=Conn.execute("select * from User where username='zhou' and password='zhou' ")

#21


connstr="Trusted_Connection=true;Server='bct-kele';Database='testdb'"
把单引号全部去掉:
connstr="Trusted_Connection=true;Server=bct-kele;Database=testdb"

#22


select * from User where(username='zhou
操,在这一句中,你能通过真是神仙呀,SQLSERVER中这个USER还能通过,最好改成USERS吧!
上面的人都疯了!都是高手!

#23


na lai l

#24


to yrs007:你说的我试过了,改connstr为driver=。。。那些没用的
to comszsoft:我把单引号去掉了,也没用的。最开始一直提示0e4d错误,我按上面的xiaoyuehen 说的改了连接字符串后,那个0e4d的错误就没有了,可又有新问题了,4005错误!这个问题我在csdn里面先搜过了,我就打0e4d,出来一百多张帖子,我没看完,看了一部分,都是没有解决问题,很郁闷的结了。实在不行的话,我就把sql卸了,再重装吧。没着了。

下面再详细描述一下我的问题:使用的操作系统为win2k professional,IIS为5.0版本,sqlserver2000为个人版本,编辑器为editplus。

sqlserver2000个人版的安装过程如下:
在选择认证方式的方式时,选混合 ,设置了用户名为sa的用户的密码为123456,然后顺利完成安装。
启动企业管理器,没把原来的默认数据库删除,直接新建名为testdb的数据库。在“安全性”文件夹下新建登录,登录名为coco,验证模式为sql混合,密码为coco,在数据库访问选项卡中指定访问的数据库为前面建立的testdb数据库。然后在testdb文件夹下点用户有2个,一个为dbo,另一个为coco,在coco用户的属性中选中public,datareader和datawriter三项。完成设置。

然后在控制面板的odbc管理器建一系统dsn,名为fortest,验证为windows验证,连接到的数据库为testdb数据库。测试数据源提示成功!

请问:要使用dsn的连接要怎么写才可以用?不采用建数据源的方式又该怎么写?
注意: 大家最好把帖子看完再下结论,因为很多朋友都给出了不同的解决方案。
另外:我现在在用asp.net,同样用的这个sqlserver2000个人版,就没有这个问题,我注意到.net自动生成的连接字符串为Trusted_Connection=True;erver='bct-keke';database=testdb,能够顺利完成对数据库的操作。

#25


waiting...

#26


你用的是不适系统DSN阿,如果不是,改过来看看

#27


是系统dsn

#28


明天结了
郁闷,没有解决

#29


楼主..如果你按我上面的方法不行的话,那就可能是你的SQL里面的的问题了.你用的用户是否给有权限~~我开发都是这样写.一点问题都没有呀~~~非常的正常呀~~ 要不重装一个SQL。重新开一个用户权限试试。。。。

#1


把代码贴出来瞧瞧啊

#2


"********************************************************************
" 与SQL Server2000有关的连接
" 可以参照它建立您的数据库连接
"********************************************************************
"敬请注意:
"请根据情况配置StrServer,StrUid,StrSapwd,StrDbName四个参数
Dim StrServer,StrUid,StrSaPwd,StrDbName
StrServer="(local)" "数据库服务器名
StrUid="testuser" "您的登录帐号
StrSaPwd="12345" "您的登录密码
StrDbName="db_test_com" "您的数据库名称

Dim Conn "数据库连接
Dim StrDSN "数据库连接字符串
Dim Rs "命令字符串 
StrDSN="driver={SQL server};server="&StrServer&";uid="&StrUid&";pwd="&StrSaPwd&";database="&StrDbName
"建立和数据库master的连接
set Conn = Server.CreateObject("ADODB.Connection")
set Rs=Server.CreateObject("ADODB.RecordSet")
Conn.Open StrDSN
"********************************************************************
"********************************************************************


http://www.ytyu.com/news/html/212/2004-3/200431994436-1.html

#3


启用服务器iis的客户端脚本调试,和服务器端脚本调试

#4



<% @ language="VBS"   %>
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.open "DSN=userinfo;Uid=kele;Pwd=kele;" 



set Rs=Conn.execute("select * from User where(username='zhou' and password='zhou')" )
%>
select data Demo:<p>
<TABLE border=1 align=center>
<% do while (Not Rs.EOF) %>

<TR>
<TD><% =Rs("username") %></TD><td><% =Rs("password") %></td>
</TR>

<% Rs.movenext %>
<% loop %>
</TABLE>
<% Rs.close %>


<% Conn.close %>



#5


少了个<% ,加在第一个set语句前。不好意思

#6


set Rs=Conn.execute("select * from User where(username='zhou' and password='zhou')" )
没必要那么多()

set Rs=Conn.execute("select * from User where username='zhou' and password='zhou'" )

#7


17行在哪里?!

#8


数据源存在吗?

#9


ASP连接数据库相关源代码参考

1. ASP连接Access数据库语句

Set Conn=Server.CreateObject("ADODB.Connection") 
Connstr="DBQ="+server.mappath("www/bbs.mdb")+";DefaultDir=;DRIVER={Microsoft 
AccessDriver(*.mdb)};DriverId=25;FIL=MSAccess;ImplicitCommitSync=Yes;MaxBufferSize=5
12;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Threads=3;UserCommitSync=Yes;"
Conn.Open connstr 

其中Set Conn=Server.CreateObject("ADODB.Connection")为建立一个访问数据的对象
server.mappath("www/bbs.mdb")是告诉服务器access 数据库访问的路径

2. ASP连接Sqlserver数据库语句

Set conn = Server.CreateObject("ADODB.Connection") 
conn.Open"driver={SQLServer};server=202.108.32.94;uid=wu77445;pwd=p780522;database=w
ww_panwei_com"
conn open                    
其中/Set conn = Server.CreateObject("ADODB.Connection")为设置一个数据库的连接对象
driver=()告诉连接的设备名是SQL-SERVER
server是连接的服务器的ip地址,Uid是指用户的用户名,pwd是指的用户的password,
database是用户数据库在服务器端的数据库的名称

 

#10


数据源是存在的啊,而且数据源也测试成功了!

这个是17行

Conn.open "DSN=userinfo;Uid=kele;Pwd=kele;"

#11


to yb2008:
  我在网上看到了好多连接字符串的写法,每个人给出的都不一样,字符串里的属性值也都不一样,  能 告诉我这是怎么回事么?

我装sqlserver2000个人版的时候选择的是混合验证,而且为用户名为sa的用户设置了密码。装完sqlserver2000后,在企业管理器中注册服务器时选择的是windows验证,那么我如果使用ODBC数据源的连接方式时,UID和PWD该写哪个?是我进入操作系统时的用户名和密码?还是这个用户名为sa的用户对应的用户名和密码?感觉用数据源连接很不方便,其他的连接方式字符串又该怎么写呢?平时一直用数据源连接,也不知道这到底是属于那种连接方式,对数据访问技术又没多少经验,就是在网上看的干巴巴的理论,OLEDB,ODBC,JET,ADO一堆术语,到底怎么回事也闹不清楚。请指教,谢拉先!

#12


你用的sql数据库
用这个吧
string="driver={SQLServer};server=127.0.0.1;uid=test;pwd=1234;database=yourdatabase"
set Conn = Server.CreateObject("ADODB.Connection")
set Rs=Server.CreateObject("ADODB.RecordSet")
Conn.Open string

#13


要回了,再up一下吧

#14


没有解决么?

#15


http://support.microsoft.com/?scid=kb;zh-tw;307002&spid=555&sid=global

可能的错误: 您正試圖使用標準的 SQL Server 的帳戶驗證來建立連線,而 ADO 連接字串中沒有指定 UID 參數。

解決方案:
確認在 ADO 連接字串中加入 Trusted_Connection=yes 連接字串參數。如果您沒有加入這個參數,即使用來處理對 ASP 網頁要求的 Windows NT/Windows 2000 使用者帳戶在 SQL Server 中有相對應的 Windows 驗證登入名稱,還是會發生上述錯誤。
&#8226; 如果您想要使用標準 SQL Server 的帳戶驗證建立資料庫連線,請確認指定了 UID 與 PWD 連接字串參數。即使 DSN 的設定屬性是設為使用標準 SQL Server 帳戶驗證,您還是必須指定這些參數。如果您沒有指定這些參數,IIS 會試圖開啟信任的連線連至資料庫。

如果要使用標準 SQL Server 帳戶驗證建立連線,您必須在目標 SQL Server 上設定安全性設定,以允許使用混合模式 (NT 與 SQL Server) 帳戶驗證。如果您在連接字串中有指定有效的 UID 但漏掉了 PWD 參數,當指定的使用者識別碼包含非空白的密碼時,您會收到下面錯誤訊息:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E4D) 

................

#16


to xiaoyuehen:
  谢了先,马上测试!一会回来

#17


to xiaoyuehen:
         
有了点进展,提示的0x80040E4D错误消失了,可出现了新错误如下:

Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
/selectDemo.asp, 第 19 行


<%@ Language=VBScript%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>

<BODY>
<%

    dim connstr

connstr="Trusted_Connection=true;Server='bct-kele';Database='testdb'"
     Set Conn = Server.CreateObject("ADODB.Connection")
Conn.open connstr            Rem 这是第19行!

     set Rs=Conn.execute("select * from Orders")
%>
select data Demo:<p>
<TABLE border=1 align=center>
<% do while (Not Rs.EOF) %>

<TR>
<TD><% =Rs("OrderID") %></TD><td><% =Rs("OrderDate") %></td>
</TR>

<% Rs.movenext %>
<% loop %>
</TABLE>
<% Rs.close %>


<% Conn.close %>

</BODY>
</HTML>

帮我看看啦?

#18


<% @ language="VBS"   %>
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.open "DSN=userinfo;Uid=kele;Pwd=kele;" 
这里错了, 应该为这样的:
Conn.open "DSN=userinfo;Uid=kele;Pwd=kele;Database=数据库名;" '少了Database项啦。



set Rs=Conn.execute("select * from User where(username='zhou' and password='zhou')" )
%>
select data Demo:<p>
<TABLE border=1 align=center>
<%do while (Not Rs.EOF) %>

<TR>
<TD><% =Rs("username") %></TD><td><% =Rs("password") %></td>
</TR>

<% Rs.movenext %>
<% loop %>
</TABLE>
<% Rs.close %>


<% Conn.close %>

#19


connstr="Trusted_Connection=true;Server='bct-kele';Database='testdb'"
应该为:
connstr= "Driver={SQL Server};Server=localhost;UID=kele;PWD=kele;Database=testdb"
注意你的用户名和密码~~

#20


还用你的SQL语句这样写就行了:
set Rs=Conn.execute("select * from User where username='zhou' and password='zhou' ")

#21


connstr="Trusted_Connection=true;Server='bct-kele';Database='testdb'"
把单引号全部去掉:
connstr="Trusted_Connection=true;Server=bct-kele;Database=testdb"

#22


select * from User where(username='zhou
操,在这一句中,你能通过真是神仙呀,SQLSERVER中这个USER还能通过,最好改成USERS吧!
上面的人都疯了!都是高手!

#23


na lai l

#24


to yrs007:你说的我试过了,改connstr为driver=。。。那些没用的
to comszsoft:我把单引号去掉了,也没用的。最开始一直提示0e4d错误,我按上面的xiaoyuehen 说的改了连接字符串后,那个0e4d的错误就没有了,可又有新问题了,4005错误!这个问题我在csdn里面先搜过了,我就打0e4d,出来一百多张帖子,我没看完,看了一部分,都是没有解决问题,很郁闷的结了。实在不行的话,我就把sql卸了,再重装吧。没着了。

下面再详细描述一下我的问题:使用的操作系统为win2k professional,IIS为5.0版本,sqlserver2000为个人版本,编辑器为editplus。

sqlserver2000个人版的安装过程如下:
在选择认证方式的方式时,选混合 ,设置了用户名为sa的用户的密码为123456,然后顺利完成安装。
启动企业管理器,没把原来的默认数据库删除,直接新建名为testdb的数据库。在“安全性”文件夹下新建登录,登录名为coco,验证模式为sql混合,密码为coco,在数据库访问选项卡中指定访问的数据库为前面建立的testdb数据库。然后在testdb文件夹下点用户有2个,一个为dbo,另一个为coco,在coco用户的属性中选中public,datareader和datawriter三项。完成设置。

然后在控制面板的odbc管理器建一系统dsn,名为fortest,验证为windows验证,连接到的数据库为testdb数据库。测试数据源提示成功!

请问:要使用dsn的连接要怎么写才可以用?不采用建数据源的方式又该怎么写?
注意: 大家最好把帖子看完再下结论,因为很多朋友都给出了不同的解决方案。
另外:我现在在用asp.net,同样用的这个sqlserver2000个人版,就没有这个问题,我注意到.net自动生成的连接字符串为Trusted_Connection=True;erver='bct-keke';database=testdb,能够顺利完成对数据库的操作。

#25


waiting...

#26


你用的是不适系统DSN阿,如果不是,改过来看看

#27


是系统dsn

#28


明天结了
郁闷,没有解决

#29


楼主..如果你按我上面的方法不行的话,那就可能是你的SQL里面的的问题了.你用的用户是否给有权限~~我开发都是这样写.一点问题都没有呀~~~非常的正常呀~~ 要不重装一个SQL。重新开一个用户权限试试。。。。