查看: 654|回复: 10
|
ASP 的问题当换成Mysql就不可以了。
[复制链接]
|
|
- 这是access的
- <%
- Response.Expires = -1000
- Dim oRS, oConn,sSQL
- Dim rndMax,rndNumber
- Set oConn = Server.CreateObject("ADODB.Connection")
- oConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("advertise.mdb"))
- sSQL = "SELECT * FROM banners"
- Set oRS = Server.CreateObject("ADODB.Recordset")
- oRS.Open sSQL , oConn, 3
- rndMax = CInt(oRS.RecordCount)
- oRS.MoveFirst
- Randomize Timer
- rndNumber = Int(RND * rndMax)
- oRS.Move rndNumber
- response.write "<a href='" & oRS("alink") & "' target='_blank'><img border=0 src='images" & oRS("aPicture") & "'></a>"
- set oRS = nothing
- set oConn = nothing
- %>
复制代码
- 当我换成Mysql就出error了。
- <%
- Response.Expires = -1000
- Dim oRS, oConn,sSQL
- Dim rndMax,rndNumber
- connection = "dsn=mydata;driver={myodbd driver};server=localhost;uid=root;pwd=chen1983;database=mydata"
- Set oConn = Server.CreateObject("ADODB.Connection")
- oConn.Open connection
- sSQL = "SELECT img FROM product"
- Set oRS = Server.CreateObject("ADODB.Recordset")
- oRS.Open sSQL , oConn, 3
- rndMax = CInt(oRS.RecordCount)
- oRS.MoveFirst
- Randomize Timer
- rndNumber = Int(RND * rndMax)
- oRS.Move rndNumber
- response.write (""&oRS("img")&"")
- set oRS = nothing
- set oConn = nothing
- %>
复制代码
这是他的error
Error Type:
(0x80020009)
Exception occurred.
line 16
line 16 也就是这个
response.write (""&oRS("img")&"") |
|
|
|
|
|
|
|
发表于 24-12-2005 12:02 PM
|
显示全部楼层
不知道行不行...
copy from ccfans.net
- ASP使用MYSQL数据库全攻略
- 发表日期:2005年2月18日 出处:互联网 【编辑录入:赏金猎人】
- MYSQL数据库以它短小、方便、速度快、免费等优点成为很多网站目前首选数据库,但一般都是用PHP+MYSQL相结合来开发各种动态页面,其实ASP也可以使用MYSQL数据库开发动态页面,小弟我也是刚刚学会,不敢独享,所以特写了这篇文章供大伙参考。
- 我的环境是WINDOWS98+PWS4.0+mysql-3.23.32-win+PHP4
- 必要的软件:PWS4.0(呵呵,废话)
- mysql-3.23.32-win
- myodbc-2.50.36-dll(这个是最重要的,MYSQL ODBC的驱动程序,可以到www.mysql.com下载)
- 第一步:安装MYSQL ODBD的驱动程序,将下载的myodbd-2.50.46-dll文件复制到windows\system目录下(windows2000是 winnt/system32)然后建立一新文件,扩展名为reg(就是注册表文件),将以下内容复制到该文件中。
- REGEDIT4
- [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\myodbc driver]
- "UsageCount"=dword:00000002
- "Driver"="C:\\WINDOWS\\System\\myodbc.dll"
- "Setup"="C:\\WINDOWS\\System\\myodbc.dll"
- "SQLLevel"="1"
- "FileUsage"="0"
- "DriverODBCVer"="02.50"
- "ConnectFunctions"="YYY"
- "APILevel"="1"
- "CpTimeout"="120"
- [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers]
- "myodbc driver"="installed"
- 保存后双击该文件,将上面代码注册到WINDOWS注册表中。
- 如果安装在windows2000中,则Driver和Setup主键的值要做相应改变,这里我想就不用多说了。
- 如果成功,在控制面板/ODBD数据源的驱动程序里将看到myodbd driver这一项!
- 第二步:建立ASP文件链接数据库。
- 这里有两种方法,一种是在ODBC数据源中建立一个系统DSN。后来我发现不建立也可以在ASP中使用MYSQL,方法在下文将讲道。
- 打开控制面板/ODBD数据源,选择系统DSN,然后添加一个新的DSN,驱动程序选择myodbd driver,会出现一个对话框供输入mysql
- 相关信息。
- Windows DSN name: 所要建立DSN的名称
- Mysql Host (name or ip):Mysql服务器的名称或者是IP地址,通常填localhost
- Mysql database name:需要使用数据库的名称,数据库在Mysql管理程序中建立。这里我们使用一个例子。数据库名:mydata里面有数据表:user 数据表有两个字段分别是:username和password,随便插入几个数据。
- user:链接数据库的用户名,我填的是root超级用户
- password:链接数据库用户密码,如果没有,可以不填
- Port(if not 3306):Mysql在服务器的端口,如果不填默认为3306
- SQL command on connect:使用sql命令链接数据库,这项可以不填
- 填写完毕后选择OK保存。
- 下面链接数据库的ASP代码!
- <%
- strConnection = "dsn=mydata;driver={myodbd driver};server=localhost;uid=root;pwd=;database=mydata"
- Set adoDataConn = Server.CreateObject("ADODB.Connection")
- adoDataConn.Open strConnection
- strQuery = "SELECT * FROM user"
- Set rs = adoDataConn.Execute(strQuery)
- If Not rs.BOF Then
- %>
- <TABLE>
- <TR>
- <TD<b>username</b></TD>
- <TD><b>password</b></TD>
- </TR>
- <%
- Do While Not rs.EOF
- %>
- <TR>
- <TD><%=rs("username")%></TD>
- <TD><%=rs("password")%></TD>
- </TR>
- <%
- rs.MoveNext
- Loop
- %>
- </TABLE>
- <%
- Else
- Response.Write("Sorry, no data found.")
- End If
- rs.Close
- adoDataConn.Close
- Set adoDataConn = Nothing
- Set rsEmailData = Nothing
- %>
- 第二种方法:我在使用中想过如果不建立系统DSN,是否也可以使用MYSQL数据库呢?结果是可以的。
- 方法很简单,把上面ASP代码第二行代码改为:
- strconnection="DefaultDir=;Driver={myodbc driver};database=mydata"
- 我奇怪的发现,这种方法连用户名和密码都不需要就可以使用。是不是MYSQL的一个BUG呢?
复制代码 |
|
|
|
|
|
|
|

楼主 |
发表于 24-12-2005 12:25 PM
|
显示全部楼层
谢谢flashang的回答,
但是,我不是这个问题。
ASP connect with Mysql这个我的可以。
问题是当我把那个MSAccess的DB换去Mysql的时候他的ASP source code就出了问题。 |
|
|
|
|
|
|
|
发表于 24-12-2005 12:45 PM
|
显示全部楼层
你的IMG field是什么Type的?
只是普通的text吗? |
|
|
|
|
|
|
|
发表于 24-12-2005 03:44 PM
|
显示全部楼层
datatype和tag...都有错~
很久没来,来疯疯~ |
|
|
|
|
|
|
|

楼主 |
发表于 27-12-2005 09:10 AM
|
显示全部楼层
原帖由 jasonmun 于 24-12-2005 12:45 PM 发表
你的IMG field是什么Type的?
只是普通的text吗?
对是普通的text。
我把picture放在folder里的。 |
|
|
|
|
|
|
|

楼主 |
发表于 27-12-2005 09:11 AM
|
显示全部楼层
原帖由 o1j2m3 于 24-12-2005 03:44 PM 发表
datatype和tag...都有错~
很久没来,来疯疯~
错,错什么呢?? |
|
|
|
|
|
|
|

楼主 |
发表于 28-12-2005 09:08 AM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 28-12-2005 09:31 AM
|
显示全部楼层
先尝试用 oRS.MoveNext, 看看是否能把 oRS 的资料成功呼唤出来. |
|
|
|
|
|
|
|

楼主 |
发表于 29-12-2005 09:23 AM
|
显示全部楼层
发现一个问题,就是那个CInt(oRS.RecordCount)不能用的
要 sql = "SELECT count(rr) as total_record FROM product WHERE...."
rndMax = CInt(oRS.total_record).
为什么 CInt(oRS.RecordCount) 在MYSQL db 时不能用呢???
还有就是为什么我 count 了不能display data 呢?
sql = "SELECT count(rr) as total_record,rr FROM product WHERE...." |
|
|
|
|
|
|
|

楼主 |
发表于 29-12-2005 05:40 PM
|
显示全部楼层
|
|
|
|
|
|
| |
本周最热论坛帖子
|