ASP 连接 MySQL 数据库两种方法

ASP 连接 MySQL 数据库两种方法

一般都是用myodbc来连接。首先,在系统中安装 Mysql 的ODBC数据库驱动。如安装稳定版本是3.51.下载地址是:http://dev.mysql.com/downloads/connector/odbc/3.51.html。

下载安装好后。在控制面板-->管理工具-->数据源 (ODBC)中的“驱动程序”页中如果有MySQL ODBC 3.51 Driver就说明驱动已经安装成功,就可以开始写程序了。

下面是我测试时使用的程序,里面有说明就不再介绍了。

方法一:

<%

'设置MySql连接属性

'各个变量说明:

' myHost:MySql数据库地址

' myDB:使用的MySql数据库名

' myUID:连接MySql数据库使用的帐号

' myPWD:连接MySql数据使用帐号的密码

' myChareSet:客户端使用的编码类型。根据实际情况使用。

' 一般情况下使用gb2312 utf8 gbk这三种编码。如果这三种都测试过仍然有乱码。

' 请检查你的设置。

'数据库设置开始

dim myHost,myDB,myUID,myPWD

myHost = "localhost"

myDB = "knowldge"

myUID = "root"

myPWD = "mysqladmin"

myChareSet = "gb2312"

strconnection="driver={mysql odbc 3.51 driver};server=" & myHost & ";database=" & myDB & ";user name=" & myUID & ";password=" & myPWD

set conn = server.createobject("adodb.connection")

'连接数据库

conn.open strconnection

'设置客户端字符编码

conn.execute("set names '" & myChareSet & "'") '不加此语句汉字部分可能会出现???乱码

'数据库设置结束

%>

或:

set conn = server.createobject("adodb.connection")

Conn.Open "DRIVER={MySQL ODBC 3.51 Driver};SERVER=127.0.0.1;DATABASE=Shops;USER=root;PASSWORD=xxx;"

上面是使用ADODB的连接方法,在默认3306端口是正常。

但在端口改成3333了,就出错。

SERVER=127.0.0.1:3333; 这样也不对,在PHP这样是可以用的

SERVER=127.0.0.1,3333; MSSQL是这样改端口,但在这是错的。

这样可能可以:

Conn.Open "DRIVER={MySQL ODBC 3.51 Driver};SERVER=127.0.0.1;PORT=3333;DATABASE=Shops;USER=root;PASSWORD=xxx;"

方法二:

另外还可以先在ODBC数据源里新建一个系统DSN,选择 MySQL ODBC 3.51 Driver作为数据源,填入相关的用户名和密码并测试之。相关的ASP连接代码如下:

strconnection="dsn=dbdsn;driver={mysql odbc 3.51 driver};uid=dbuser;password=dbpwd"

'dsn:新建的DSN名称

'uid:用户名

'password:密码

set con = server.createobject("adodb.connection")

con.open strconnection

需要注意的问题(mysql4.1及以上版本)

mysql4.1及以上版本对字符集的限定跟之前的版本有很大不同,在进行数据库查询的时候如果不对字符集加以设定,一旦有查询的字段有中文,便很可能出现下面这样的错误:

Microsoft OLE DB Provider for ODBC Drivers 错误 ‘80040e31’

[MySQL][ODBC 3.51 Driver][mysqld-4.1.18]Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation ‘=’

这个时候就需要对asp的查询语句进行一些修改,增加有关的字符集的设定:

"select email from members where username=_gbk '"&username&"' COLLATE gbk_chinese_ci"

代码示例解释如下:如使用下面代码链接

示例1:

Conn.Open "DRIVER={MySQL ODBC 3.51 Driver};SERVER=" & strIP & ";DATABASE=" & strDBName & ";USER=" & strUserName & ";PASSWORD=" & strPass & ";OPTION=3;"

如果MyODBC版本不同,请自行修改Driver中的字符串

<%

strconnection="dsn=mysqltest;

driver={mysql odbc 3.51 driver};

server=填入服务器地址;uid=用户名;pwd=密码;database=mm"

'连接字符串,dsn就是我们设置的数据源标识符

注意driver我们刚才在设置系统DSN的时候提过。

set conn = server.createobject("adodb.connection")

conn.open strconnection

sql = "select * from my" 'SQL查询语句

set rs = conn.execute(sql)

if not rs.bof then

%>

示例2:

<%

'测试读取MySql数据库的内容

strconnection="driver={mysql odbc 3.51 driver};database=weste_net;server=localhost;uid=root;password="

'无需配置dsn

set adodataconn = server.createobject("adodb.connection")

adodataconn.open strconnection

strquery = "select * from News"

set rs = adodataconn.execute(strquery)

if not rs.bof then

%>

序列号

<%

do while not rs.eof

%>

<%

rs.movenext

loop

%>

标题
<%=rs("News_id")%> <%=rs("News_Title")%>

<%

else

response.write("无数据.")

end if

rs.close

adodataconn.close

set adodataconn = nothing

set rsemaildata = nothing

%>

示例3:

<%

Dim Conn, sConnString, myChareSet,strquery

myChareSet = "gb2312"

sConnString="driver={mysql odbc 3.51 driver};database=portaldata;server=localhost;uid=root;password=123456"

Set Conn=Server.CreateObject("adodb.Connection")

Conn.open sConnString

conn.execute("set names '" & myChareSet & "'")

'不加上面语句汉字部分可能会出现???乱码

%>

<%

strquery = "select * from Article"

Set rs = Server.CreateObject("Adodb.RecordSet")

rs.open strquery, Conn, 1, 1

'set rs = Conn.execute(strquery)

if not rs.bof then

%>

<%

do while not rs.eof

%>

<%

rs.movenext

Loop

%>

编号 标题
<%=rs("AID")%> <%=rs("Atitle")%>

<%

else

Response.Write("无数据!")

End if

rs.close

Set rs=Nothing

Conn.Close

Set Conn=Nothing

%>

注意:若使用上面代码出现如下错误

错误类型:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E21) ODBC 驱动程序不支持所需的属性。

则可能是MySql中不支持select top 10 *……,不支持top 10的语法

相关推荐

合作伙伴