您的当前位置:首页 > 焦点 > asp连接mysql数据库代码 正文

asp连接mysql数据库代码

时间:2026-10-17 04:35:49 来源:网络整理 编辑:焦点

核心提示

ASP 连 MySQL,最直接的方式是走 ODBC 驱动。Windows 服务器上装了 MySQL ODBC 驱动之后,用 `Driver={MySQL ODBC 8.0 Driver}` 就能连。别

ASP 连 MySQL,数据最直接的库代方式是走 ODBC 驱动。Windows 服务器上装了 MySQL ODBC 驱动之后,数据用 `Driver={ MySQL ODBC 8.0 Driver}` 就能连。库代别用那个老掉牙的数据 `MySQL ODBC 3.51 Driver`,除非你的库代服务器还在跑 Windows Server 2003。

先看连接字符串长什么样:

<% Dim conn,数据 connStr Set conn = Server.CreateObject("ADODB.Connection") connStr = "Driver={ MySQL ODBC 8.0 Unicode Driver};" & _ "Server=127.0.0.1;" & _ "Port=3306;" & _ "Database=testdb;" & _ "Uid=root;" & _ "Pwd=yourpassword;" & _ "Option=3;" conn.Open connStr %>

这里几个地方容易踩坑。`Option=3` 别省,库代它告诉驱动做完整的数据能力协商,某些 MySQL 版本下不加会报奇怪的库代语法错误。`Driver` 名字必须和服务器上装的数据驱动版本完全一致,写错了报 [IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序,库代这个错误信息我见过太多次了。数据

连上之后查数据,库代用 ADODB.Recordset:

<% Dim rs,数据 sql sql = "SELECT id, username, email FROM users WHERE status = 1 ORDER BY id DESC LIMIT 20" Set rs = conn.Execute(sql) Do While Not rs.EOF Response.Write rs("username") & " - " & rs("email") & "<br>" rs.MoveNext Loop rs.Close Set rs = Nothing %>

注意 MySQL 的 LIMIT 语法在 ADODB 里能正常用,因为 SQL 是直接透传给 MySQL 的,ASP 那层不解析。但如果你用 Access 做数据库,同样的代码就挂了。这也是为什么很多人从 Access 迁到 MySQL 之后觉得爽——SQL 语法终于正常了。

插入数据的时候,字符串拼接要处理单引号。别偷懒,写个替换函数:

<% Function SafeStr(str) If IsNull(str) Then SafeStr = "" Else SafeStr = Replace(str, "'", "''") End If End Function Dim username, email username = SafeStr(Request.Form("username")) email = SafeStr(Request.Form("email")) conn.Execute("INSERT INTO users (username, email) VALUES ('" & username & "', '" & email & "')") %>

这当然不是防注入的完整方案,但至少不会因为一个英文名 O'Brien 就让 SQL 报错。真要防注入,老老实实用参数化查询,ADODB.Command 配合参数对象。不过说实话,我见过的老 ASP 项目里,十个有八个是直接拼字符串的。

中文乱码是另一个高频问题。连接字符串里加上 charset=utf8mb4,页面头部声明 <%@ CodePage=65001 %> 和 Response.Charset="utf-8"。三处都对了才不会出现问号。少一处都不行,我调这个调过整整一个下午。

最后记得关连接。ASP 没有连接池的自动管理那么智能,页面结束前 conn.Close 加 Set conn = Nothing 是基本素养。不然 IIS 跑一段时间就给你颜色看。

这套东西现在用的人不多了,但维护老系统的还得会。新项目就别用 ASP 了,真的。