| 
| 
查看: 763|回复: 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
|
显示全部楼层 |  |  |  |
 
|  |  |  
|  |  |  |  | 
            本周最热论坛帖子 |