过傻过天真 发表于 2008-7-14 16:11

新手问个小问题

我刚学ASP不久,今天按照教材里的例题做了一个ASP文件和一个数据库,那ASP文件是用来把数据表里的内容显示出来,内容如下:

<%@language="vbscript"%>
<%
dim filepath,cn1,sq1,rs
filepath=server.MapPath("a1.mdb")
set cn1=server.createobject("adodb.connection")
cn1.open "driver={microsoft access driver(*.mdb)};dbq="&filepath
sq1="select * from s"
set rs=cn1.excute(sq1)
%>
<html>
<body bgcolor="white" topmargin="10" leftmargin="10">
<p align="center">
<font size="4"><b>用户情况表</b></font><br>
<hr size="1" width="90%" align="center">
<table width="90%" align="center" border="1" cellpadding="0" cellspacing="0" bordercolorlight="#000080" bordercolordark="#FFFFFF" bordercolor="#FFFFFF">
<tr height="35">
<td align="center">姓名</td>
<td align="center">性别</td>
<td align="center">年龄</td>
<td align="center">工资</td>
<td align="center">电话</td>
<td align="center">居住地区</td>
</tr>
<%
do while(not rs.eof)
response.write"<tr>"
response.write"<td align=center>&nbsp;"&rs("姓名")&"&nbsp;</td>"
response.write"<td align=center>&nbsp;"&rs("性别")&"&nbsp;</td>"
response.write"<td align=center>&nbsp;"&rs("年龄")&"&nbsp;</td>"
response.write"<td align=center>&nbsp;"&rs("工资")&"&nbsp;</td>"
response.write"<td align=center>&nbsp;"&rs("电话")&"&nbsp;</td>"
response.write"<td align=center>&nbsp;"&rs("居住地区")&"&nbsp;</td>"
response.write"</tr>"
rs.movenext
loop
rs.close
set rs=nothing
cn1.close
set cn1=nothing
%>
</table>
</body>
</html>

数据表(表名为s)内容如下:

编号        姓名        性别        年龄        工资        电话        居住地区
1        小唐        男        25        1600        6630030        长沙
2        小张        女        22        1400        5656453        北京
3        小李        男        20        1600        2626681        上海
4        小王        女        20        1300        2803502        武汉
5        小红        女        24        1400        2627562        长沙

我把这两个文件一起上传到虚拟空间一个名为123456789的文件夹了,可是不能访问,打开网页,显示:

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

[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序

/123456789/Index.asp,行 6

我想了很久不知道第6行到底错在哪里,书里是这么写的啊.

请问这是为什么,该如何解决,请高手帮帮我,谢谢!

hmhz 发表于 2008-7-14 16:54

set rs=cn1.excute(sq1)
改成
set rs=server.createobject("adodb.recordset")
rs.open sq1,cn1,1,1

multiple1902 发表于 2008-7-14 18:58

我觉得楼上改法值得商榷。

他的出错在第六行,就是连接数据库那行。难道没有ac的驱动?

过傻过天真 发表于 2008-7-14 20:46

[quote][bo][un]hmhz[/un] 在 2008-7-14 16:54 的发言:[/bo]

set rs=cn1.excute(sq1)
改成
set rs=server.createobject("adodb.recordset")
rs.open sq1,cn1,1,1 [/quote]

还是不行啊,

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

[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序

/123456789/Index.asp,行 6

yms123 发表于 2008-7-15 08:35

cn1.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&filepath&";Persist Security Info=False"

过傻过天真 发表于 2008-7-15 11:59

[quote][bo][un]yms123[/un] 在 2008-7-15 08:35 的发言:[/bo]

cn1.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&filepath&";Persist Security Info=False" [/quote]

还是不行

ADODB.Connection 错误 '800a0bb9'

参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。

/123456789/Index.asp,行 8

过傻过天真 发表于 2008-7-15 12:07

可以了!!!

把hmhz和yms123两位斑竹的方法结合起来就行了!

谢谢你们!

不过我看不懂yms123那语句是什么意思,能否给我讲一下?

kgdipbyve 发表于 2008-7-16 17:29

意思应该打开数据库.你可以根据字面意思推出来open是打开的意思,后面是连接数据库.不知道我说的是否正确?

multiple1902 发表于 2008-7-16 17:36

至于这个open,也有2种方式连接Access数据库,见置顶帖。

楼主的情况可能是系统缺少了某个组件所致。

从你上面发的出错信息可以看到,用了yms123大牛的方法之后数据库可以打开了,只是进行查询的步骤出了错。

yms123 发表于 2008-7-16 20:18

[quote][bo][un]过傻过天真[/un] 在 2008-7-15 12:07 的发言:[/bo]

可以了!!!

把hmhz和yms123两位斑竹的方法结合起来就行了!

谢谢你们!

不过我看不懂yms123那语句是什么意思,能否给我讲一下? [/quote]
因为从楼主提供的错误信息来看,可能是连接字符串错误,检查连接字符串发现连接字符串正确,因此推断可能楼主的计算机不支持那种连接字符串,所以将数据库连接字符串进行替换为另一种连接字符串。
数据库连接字符串的不同,决定了数据库和连接数据库的方式不同。
同样是Access数据库,不同的连接字符串会使用不同的方式进行连接。

页: [1]

编程论坛