一、 ADO 数据库连接核心概念
- ADO(ActiveX Data Objects):ASP 中用于访问数据库的技术。
- 核心对象:
Connection:建立与数据库的连接。Recordset:存储查询结果集。Command(可选):执行带参数的 SQL 命令。
- 连接提供程序:
- OLE DB(推荐):
provider=sqloledb(性能更好,功能更全)。 - ODBC:需配置系统 DSN 或使用 ODBC 驱动串。
- OLE DB(推荐):
二、 OLE DB 连接 SQL Server 示例
<%
' 1. 创建 Connection 对象
Set cnn1 = Server.CreateObject("ADODB.Connection")
' 2. 打开连接(注意实例名,默认实例用 "." 或 "(local)")
cnn1.Open "provider=sqloledb;" & _
"data source=.;" & _
"initial catalog=StudentCourse;" & _
"user id=sa;" & _
"password=123321;"
' 3. 执行查询
sql = "SELECT * FROM [dbo].[S]"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, cnn1, 1, 1 ' 1,1 = 只读游标
%>Code language: HTML, XML (xml)
关键注意点
- SQL Server 实例名:若安装的不是默认实例,必须写出实例名。
- 默认实例:
data source=.或data source=(local) - 命名实例:
data source=.\SQLExpress或data source=localhost\实例名
- 默认实例:
- initial catalog:指定数据库名(等同于
Database=StudentCourse)。
三、 开启错误提示(方便调试)
ASP 默认可能不显示详细错误,可在页面顶部或 Global.asa 中添加:
<%
' 开启详细错误提示(调试用,生产环境务必关闭)
On Error Resume Next ' 先开启错误捕获
' 你的数据库代码...
cnn1.Open "..."
' 检查是否有错误
If Err.Number <> 0 Then
Response.Write "错误编号:" & Err.Number & "<br>"
Response.Write "错误描述:" & Err.Description & "<br>"
Response.Write "出错文件:" & Err.Source & "<br>"
Err.Clear
End If
%>Code language: PHP (php)
或者直接在 IIS 中设置:
- IIS 管理器 → 站点 → ASP → 调试属性 → “将错误发送到浏览器”设为 True。
- “脚本错误消息” 可自定义。
四、 报错分析:你的错误原因与解决
错误信息
Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'
[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
/simpleform.asp,行 6Code language: JavaScript (javascript)
原因诊断
- 提供程序不匹配:错误信息显示的是 OLE DB Provider for ODBC Drivers,说明代码实际使用的是 ODBC 驱动,而非你写的
provider=sqloledb。 - 可能原因:
- 连接串被覆盖或未生效(比如文件中有多个连接对象,实际执行的是另一个 ODBC 连接)。
- 服务器上未安装 SQL Server OLE DB 提供程序,系统回退到 ODBC。
- 连接串写错,导致 ADO 自动尝试 ODBC DSN 连接,但找不到 DSN。
解决方案
方案 1:确认使用 OLE DB 并安装提供程序
确保服务器已安装 Microsoft OLE DB Driver for SQL Server(或旧版 sqloledb)。
连接串明确指定:
cnn1.Open "provider=sqloledb;server=.;database=StudentCourse;uid=sa;pwd=123321;"Code language: JavaScript (javascript)
方案 2:改用 ODBC 连接串(如果环境只有 ODBC)
cnn1.Open "Driver={SQL Server};Server=.;Database=StudentCourse;Uid=sa;Pwd=123321;"Code language: JavaScript (javascript)
或(使用 SQL Server Native Client):
cnn1.Open "Driver={SQL Server Native Client 11.0};Server=.;Database=StudentCourse;Uid=sa;Pwd=123321;"Code language: JavaScript (javascript)
方案 3:检查实例名
如果 SQL Server 是命名实例(如 .\SQLEXPRESS),必须写明:
cnn1.Open "provider=sqloledb;data source=.\SQLEXPRESS;initial catalog=StudentCourse;user id=sa;password=123321;"Code language: JavaScript (javascript)
Previous: Global.asa 文件
Next: ASP 数据库操作(ADO)