ADO 数据库连接

ADO指 ActiveX 数据对象(ActiveX Data Objects),是一种面向对象编程接口,微软介绍说,与其同IBM和Oracle提倡的那样,创建一个统一数据库,不如提供一个能够访问不同数据库的统一接口,这样会更加实用一些。为实现这一目标,微软在数据库和微软的OLE DB中提供了一种“桥”程序,这种程序能够提供对数据库的连接。 开发人员在使用ADO时,其实就是在使用OLE DB,不过OLE DB更加接近底层。ADO的一项属性-远程数据服务,支持“数据仓库”ActiveX 组件以及高效的客户端缓存。作为ActiveX的一部分,ADO也是COM组件的一部分。ADO是由早期的微软数据接口——远程数据对象RDO演化而来的。RDO同微软的ODBC一同连接关系数据库,不过不能连接非关系数据库。

从一个 ASP 页面内部访问数据库的通常的方法是:

  1. 创建一个到数据库的 ADO 连接
  2. 打开数据库连接
  3. 创建 ADO 记录集
  4. 从记录集提取您需要的数据
  5. 关闭记录集
  6. 关闭连接

ADO数据库编程 

中大型的数据库管理信息系统(MIS)的开发,一般很少用VC来完成(因为开发效率低,不过运行效率很高),而是使用VB, C#,Java等开发效率较高的语言。但小型MIS系统完全可以用VC来实现。下面讲解VC中访问数据库的基本技术。 

一、四种数据库访问技术 

ODBC(Open Database Connectivity) 

开放式数据库连接,是一种用来在数据库管理系统(DBMS)中存取数据的标准应用程序接口。有ODBC API和MFC ODBC两种开发技术。

DAO(Data Access Object ) 

即数据访问对象集,是Microsoft提供的基于一个数据库对象集合的访问技术。和ODBC一样,他们都是Windows API的一部分,可以独立于(DBMS)进行数据库的访问。  

DAO跟ODBC的区别是: 

访问机制不同!ODBC工作依赖于数据库制造商(MS SQL Server, Oracle,Sybase等)提供的驱动程序。使用ODBC API的时候,Windows的ODBC管理程序,把对数据库的访问请求传递给正确的驱动程序,驱动程序再使用SQL语句指示DBMS完成数据库访问工作。DAO则绕开中间环节,直接使用数据库引擎(Microsoft Jet Database Engine)提供的各种对象进行工作。速度比ODBC快。

OLE DB(Object Link and Embedding Database) 

非常底层,基于COM接口技术;功能强大灵活,但编程非常麻烦,使用ADO只需要3-5行代码的事情,用OLEDB却需要将近200-300行代码才能完成。WinCE目前不支持ADO,但支持OLEDB。推荐阅读文章:VC++实战OLEDB编程(一)至(九) 

http://gamebabyrocksunblog.163.com/blog/static/571534632008101083957499/  
<%
Set Conn=Server.CreateObject(“Adodb.Connection”)
Path= Server.MapPath(“/user.mdb”)
Conn.ConnectionString=“Provider=Microsoft.Jet.OLEDB.4.0;”&_
“Data Source=”&Path;”&_
“User Id=admin;”&_
“Password=;”
Conn.Open Provider=Microsoft.Jet.OLEDB.4.0; Data Source=”& Server.MapPath(“/user.mdb”)&”;user Id=;password=;”
%>

<%
Set Conn=Server.CreateObject(“Adodb.Connection”)
Conn.Open “
%>

(包括OLE DB提供者的名字和数据源的路径,Conn.ConnectionString还可以包括User ID=UserID;Password=Password)

ADO(ActiveX Data Object) 

是建立在OLE DB之上的高层数据库访问技术,是对OLEDB的封装,微软为我们提供了丰富的COM组件(包括ActiveX)来访问各种关系型/非关系型数据库。特点是简单、易用,这也是为什么大多数数据库应用软件开发者选择ADO的重要原因。

<%
Set Conn=Server.CreateObject(“Adodb.Connection”)
Path= Server.MapPath(“database/user.mdb”)
Conn.Open  “driver={Microsoft Access Driver(user.mdb)};Path=” &DBPath
%>

<%
Set Conn=Server.CreateObject(“Adodb.Connection”)
Conn.Open  “driver={Microsoft Access Driver(user.mdb)};Path=”  &Server.MapPath(“database/user.mdb”)
%>

DSN连接(Data Source Name

使用Connection对象建立并管理与各种数据库的连接;
使用Command对象灵活查询数据。
使用RecordSet数据集和对象;

ADO使用RecordSet数据集对象作为数据的主要界面。ADO可以使用VBScript、JavaScript等脚本语言来控制数据库以及输出查询结果。

可以编写简明紧凑的脚本,以便连接到与Open DataBase Connectivity(ODBC)兼容的数据源和与OLE DB兼容的数据源;

 

notes.asp内容:

<%
Dim MM_notes_STRING
MM_notes_STRING = "dsn=wwuself;"
%>

 

add.asp:

<%
dim oCmd,oConn
set oConn = Server.CreateObject("ADODB.Connection")
set oCmd = Server.CreateObject("ADODB.command")
oConn.ConnectionString = "DSN=wwuself;"
oConn.open
Set oCmd.ActiveConnection = oConn
oCmd.CommandText = "INSERT INTO records (summary,content) VALUES ('"& summary1 &"','"& content1 &"')"
oCmd.Execute
Response.Write("操作成功!")

修改为:

dim oCmd,oConn,db
set oConn = Server.CreateObject("ADODB.Connection")
set oCmd = Server.CreateObject("ADODB.command")
db= "\wwu.mdb"
oConn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;"&_
"Data Source=" & Server.MapPath(db)
oConn.open
Set oCmd.ActiveConnection = oConn
oCmd.CommandText = "INSERT INTO records (summary,content) VALUES ('"& summary1 &"','"& content1 &"')"
oCmd.Execute
Response.Write("操作成功!")

addform.asp\del.asp\modify.asp\adim.asp修改:

1 插入:

dim oConn
dim db
set oConn = Server.CreateObject("ADODB.Connection")
db = "\wwu.mdb"
oConn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;"&_
"Data Source=" & Server.MapPath(db)
oConn.open()

2 删除:<!--#include file="Connections/notes.asp" -->

3 替换:

MM_editConnection = MM_notes_STRING

替换为:MM_editConnection = oConn

Recordset1.ActiveConnection = MM_notes_STRING

替换为:Recordset1.ActiveConnection = oConn

 

'使用ADO对象操作数据库
<%
dim oConn
dim db
set oConn = Server.CreateObject("ADODB.Connection")
db = "\wwu.mdb"
oConn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;"&_
"Data Source=" & Server.MapPath(db)
oConn.open()

Dim rs, cmd,sql
Set rs = Server.CreateObject("ADODB.Recordset")
'对象连接,将Connection对象连接到Recordset对象
rs.ActiveConnection = oConn
'此时即可以使用rs对象的属性和方法;
...
Set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = oConn
sql = "Delete From records where summary='做空货币'"
cmd.Command.Text=sql
cmd.Execute()
...
%>