网站首页 | 网页加密 | 网页解密 | 脚本加密与解密 | 域名WHOIS查询 | 域名空间 | 站点收录查询 | 站长工具
发新话题
打印

[数据库] [整理-适合初学asp的朋友]数据库连接

[整理-适合初学asp的朋友]数据库连接

1 数据库连接

  a.数据库的连接(ACCESS和SQL)
在APS脚本中可以通过3中方式访问数据库:

  ∈IDC (Internet Database Connector)方式;
  ∈ADO (ActiveX Data Object)方式;
  ∈RDS (Remote Data Service)方式;

从概念上来讲,这3种方式对数据库的访问都是通过IIS来完成的。Web浏览器用HTTP协议向IIS提交请求。Internet信息服务器执行访问数据库的操作,并以一个HTML格式的文档作为回答。这里我们主要讲解使用ADO连接数据库的方法。

两个接口 1、 OLE DB  2、ODBC

OLE DB(Object Linking & Embedding Database)
它是一个最新数据访问接口,除了可以访问关系型数据库,还可以访问非关系型数据库(如Excel、Email)。

ODBC(Open Database Connectivity)
它是基于SQL的,主要用于处理关系型数据库,但对非关系型数据库就无能为力了。

ADO是OLE DB / ODBC的使用者,它提供了对OLE DB数据源的应用程序级的访问。在ASP中,可以使用ADO通过OLE DB的数据库驱动程序直接访问数据库,也可以编写紧凑简明的脚本以便连接到ODBC兼容的数据库,这样ASP程序员就可以访问任何与ODBC兼容的数据库,如SQL Server, Oracle, Access等。

简单的流程图
=========================================================


用户浏览器


ASP网页


ADO



OLE DB / ODBC



数据库


=========================================================



在创建数据库脚本之前,必须提供一条使ADO定位、标识和与数据库通信的途径。即在ODBC中添加相应的数据库驱动程序,并创建相应的DSN(Data Source Name,数据源名——DSN是一个代表ODBC连接的符号,它隐藏了诸如数据库名、所在目录、数据库驱动程序、用户ID、密码细节。)定位和表示特定的ODBC兼容数据库,将信息冲web应用程序传递给数据库。

怎样创建配置数据源名:(Windows XP Pro)
1.       开始—>设置—>控制面板—>管理工具—>数据源 (ODBC),出现以下对话窗口


2.       设置一个DSN(数据源—这里以连接Access数据库为例)

选择系统DSN,添加一个数据源,选择数据源的驱动程序(1-2)

选择Microsoft Access Driver (*.mdb)
为数据源命名(1-3)

单击选择按钮,选择(定位)Access数据库(1-4)

然后单击确定,这样我们就配置好了一个DSN



说明:我们还可以为DSN设置用户权限,具体方法是在1-3中点“高级”按钮,就可以设置用户名和密码。

然后我们再看看调用这个DSN的ASP代码:
oConn.Open "dsn=FcNews;"

DSN-less连接方法:

set adocon=Server.Createobject("adodb.connection")
adoconn.Open"Driver={Microsoft Access Driver(*.mdb)};DBQ="& _
Server.MapPath("数据库所在路径")

说明:其实SQL数据库也可以建立DSN,方法同ACCESS数据库很类似,这里就不重复说明。如果条件允许,推荐大家用DSN连接数据库,因为这里(oConn.Open "dsn=FcNews;"隐藏了书库的地址等信息,即使你的ASP源代码泄露,一般人们很难猜出你的服务器上数据库的路径。不过由于一般大家是使用的虚拟主机,所以一般才用了DSN-LESS方法。还有下面介绍的方法,连接数据库)

下面我又给出了我们常用的OLEDB的连接代码
'oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("" & AccDBPath & "")

SQL数据库的OLE DB连接代码
oConn.Open "Provider=SQLOLEDB.1;Server=127.0.0.1;UID=sa;PWD=mydotcom;Database=" & SQLDBName & ""

最后在这里我给一个简单的连接数据库的函数

复制内容到剪贴板
代码:
<%
' ============================================
' 以下为数据库相关函数
' ============================================
' 初始化数据库连接对象
' 使用原则:最迟调用,最早释放
' ============================================
Dim oConn, oRs, sSql
Dim Rs, Sql
'=============================================
' 函数功能:建立数据库的连接
' 函数名称:oDBConnBegin(DBType)
' 参数说明:DBType -- 数据库的类型
'                ConType -- 连接类型(DSN或者OLE DB)
'                DBName -- 数据库名称(数据源名称)
'=============================================
Sub oDBConnBegin(DBType,ConType,DBName)
    ' 如果数据库对象已打开,不要再打开
    If IsObject(oConn) = True Then Exit Sub

    ' 你可以不需要打开数据库连接对象而直接打开记录集对象,但如果你需要打开多个记录集对象的话,效率是很低的。
    ' 如果你不创建一个数据库连接对象,ADO会在每个记录集打开时自动创建一个新的数据库连接对象,就算你用的是相同的SQL语句。
    Set oConn = Server.CreateObject("ADODB.Connection")
   
  On Error Resume Next
   
  ' 选择不同的数据库连接类型
  Select Case DBType
          Case "Acc"
             If C Then
                oConn.Open = "dsn=" & DBName
             ElseIf C Then
                oConn.Open = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("" & DBName & "")
             End If            
          Case "SQL"
             If C Then
                oConn.Open = "dsn=" & DBName
             ElseIf C Then
                oConn.Open "Provider=SQLOLEDB.1;Server=127.0.0.1;UID=sa;PWD=007007;Database=" & DBName & ""
             End If
  End Select
   
    If Err.Number > 0 Then
        ' 显示错误信息,并且发送邮件通知管理员
        Call DBConnError(Err)
        ' 完全地退出正在运行的脚本
        Response.End()
    End If

  Set oRs = Server.CreateObject( "ADODB.Recordset" )
End Sub      

'=============================================
' 函数功能:释放数据库连接对象
' 函数名称:oDBConnEnd()
'=============================================
Sub oDBConnEnd()
    On Error Resume Next
    oRs.Close
    Set oRs = Nothing
    oConn.Close
    Set oConn = Nothing
End Sub

'=============================================
' 函数功能:数据库连接错误处理
' 函数名称:DBConnError(ErrInfo)
' 参数说明:ErrInof--系统提示的错误信息
'=============================================
Sub DBConnError(ErrInfo)
    Response.write("数据库连接错误:" & ErrInfo & "<br>")
    Response.write("请发送邮件通知<a href='mailto:" & strAdminEmail & "'>网站管理员</a>!")
    Response.End()
End Sub
%>

怎么样,现在你对数据库的连接是否有了一些了解呢?当然,由于水平有限,如果有什么说的不对的地方还望大家原谅和指教。
有了流量你就喊.。o0
空间域名 服务器安全 QQ:5515804

TOP

发新话题