asp复习系列 --数据库操作
时间:2006-05-09 来源:pplboy
** asp 数据库操作 **
asp数据库对象
Activex数据对象共有七种独立的对象。下面列出了这七种对象的名字,并简要介绍了它们的功能:
ADODB.Connection 连接对象。代表与一个数据源的唯一对话。例如,你可以用连接对象来打开一个对Microsoft SQL Sever的连接。
ADODB.RecortSet 记录集对象。代表来自一个数据提供者的一组记录。例如,你可以用一个记录集对象来修改一个SQL Sever表中的记录。
域对象。代表一个记录集中的一个域。
命令对象。代表一个命令。例如,你可以用命令对象执行一个SQL存储过程或有参数的查询。
参数对象。代表SQL存储过程或有参数查询中的一个参数。
属性对象。代表数据提供者的具体属性。
错误对象。代表ADO错误。 asp 与数据库联接
与本地access数据库联接
Set MyConn = Server.CreateObject("ADODB.Connection")
MyConn.Open("Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\\Inetpub\\wwwroot\\guest\\db1.mdb")
//MyConn.Execute()
Set RS = MyConn.Execute("select * from guest")
MyConn.Close asp向html文件写信息
Response.Write(var) asp检索并打印数据
Set RS = MyConn.Execute("select * from guest")
Response.Write(RS("name"))
RS.MoveNext asp插入数据
MyConn.Execute("insert into guest (name,msg) values ('sss','ddd')") asp结果集的游标类型和使用
adOpenFowardOnly。使用前向游标,你只能在记录集中向前移动。
adOpenKeyset。使用Keyset游标,你可以在记录集中向前或向后移动。如果另一个用户删除或改变了一条记录,记录集中将反映这个变化。但是,如果另一个用户添加了一条新记录,新记录不会出现在记录集中。
adOpenDynamic。使用动态游标,你可以在记录集中向前或向后移动。其他用户造成的记录的任何变化都将在记录集中有所反映。
adOpenStatic。使用静态游标,你可以在记录集中向前或向后移动。但是,静态游标不会对其他用户造成的记录变化有所反映。 在缺省情况下,当你打开一个记录集时,将用前向游标打开它。这意味着你只能用MoveNext方法在记录集中向前移动。对记录集的其它操作将不受支持。
前向游标的好处是它比较快。无论何时,如果前向游标可以实现你的要求,你就应该使用前向游标。但是,如果你需要用功能更强的游标打开记录集,你可以使用如下的脚本:
Set MyConn=Sever.CreateObject(“ADODB.Connection”)
Set RS=Sever.CreateObject(“ADODB.RecordSet”)
MyConn.Open “FILEDSN=d:\Program Files\Common Files\ODBC\Data Sources\MyData.dsn
RS.Open “SELECT * FROM Mytable”,MyConn,adOpenDynamic
RS.Close
MyConn.Close asp使用ADODB.RecordSet显式打开数据库时锁定类型和使用
打开记录集时,你也可以指定锁定类型。锁定类型决定了当不止一个用户
同时试图改变一个记录时,数据库应如何处理。你可以指定下面的四种锁定类型:
adLockReadOnly。指定你不能修改记录集中的记录。
adLockPessimistic。指定在编辑一个记录时,立即锁定它。
adLockOptimstic。指定只有调用记录集的Update方法时,才锁定记录。
adLockBatchOptimstic。指定记录只能成批地更新。
在缺省情况下,记录集使用只读锁定。要指定不同的锁定类型,你可以在打开记
录集时包含这些锁定常量之一。这里有一个例子:
Set MyConn=Sever.CreateObject(“ADODB.Connection”)
Set RS=Sever.CreateObject(“ADODB.RecordSet”)
MyConn.Open “FILEDSN=d:\Program Files\Common Files\ODBC\Data Sources\MyData.dsn
RS.Open “SELECT * FROM Mytable”,MyConn,adOpenDynamic,adLockPessimistic
RS.Close
MyConn.Close asp使用ADODB.RecordSet显示打开数据库时Options参数和使用
打开一个记录集时,你可以指定一个Options参数。Options参数标明用来打开记录集的命令
字符串的类型。告诉ADO被执行的字符串内容的有关信息有助于高效地执行该命令字符串。
你可以使用下面的常量作为Options参数:
adCMDTable。被执行的字符串包含一个表的名字。
adCMDText。被执行的字符串包含一个命令文本。
adCMDStoredProc。被执行的字符串包含一个存储过程名。
adCMDUnknown。不指定字符串的内容。(这是缺省值。)
在下面的脚本中,Options参数用来告诉ADO,命令字符串的内容是命令文本:
Set MyConn=Sever.CreateObject(“ADODB.Connection”)
Set RS=Sever.CreateObject(“ADODB.RecordSet”)
MyConn.Open “FILEDSN=d:\Program Files\Common Files\ODBC\Data Sources\MyData.dsn
RS.Open “SELECT * FROM Mytable”,MyConn,adOpenDynamic,adCMDText
RS.Close
MyConn.Close 使用RecordSet对象向数据库添加信息
RS.AddNew //创建一条新信息
RS(“MyColumn”)=”A new column” //给信息赋值
RS.Update //更新到数据库 使用RecordSet的其他方法 AddNew。向记录集中添加一条新记录。 CancelBatch。(当记录集处在批量更新模式时)取消一批更新。 CancelUpdate。(调用Update之前)取消对当前记录所做的所有修改。 Delete。从记录集中删除一条记录。 Update。保存对当前记录所做的修改。 UpdateBatch。(当记录集处于批量更新模式时)保存对一个或多个记录的修改。 遍历记录集
Move NumRecords。在记录集中向前或向后移动指定数目的记录数。
MoveFirst。移动到记录集的第一条记录。
MoveNext。移动到记录集的下一条记录。
MovePrevious。移动到记录集中的上一条记录。
MoveLast。移动到记录集的最后一条记录。 记录集对象还有许多属性,对遍历记录集是有用处的。同样,许多属性需要特定的游标类型:
AbsolutePosition。用来设置或读取当前记录在记录集中的位置顺序号。
BOF。标明当前位置在记录集中的第一条记录之前。
EOF。标明当前位置在记录集中的最后一条记录之后。
RecordCount。表示一个记录集中的记录总数。 在一个记录集中反向移动的实例
RS.Open “SELECT * FROM Mytable”,MyConn,adOpenStatic
RS.MoveLast
WHILE NOT RS.EOF
Response.Write(“<BR>”&RS(“MyCOlumn”))
WEND
RS.Close 返回记录数目
你可以用记录集对象的RecordCount属性来确定一个记录集中的记录总数。但是,你应该慎重使用这个属性,因为这个属性在许多情况下效率极低。
对一个用前向游标打开的记录集,你不能使用RecordCount属性。你必须打开一个效率较低的游标才可以使用这个属性 RS.Open “SELECT Mycolumn FROM Mytable”,MyConn,adOpenStatic //注意为 adOpenStatic
Response.Write(RS.RecrdCount)
你应该避免使用RecordCount属性。取而代之,你可以执行一个SQL COUNT(*)查询 对记录集进行分页
AbsolutePage。指定当前的页。
PagePount。返回记录集中的逻辑页数。
PageSize。指定一个逻辑页中的记录个数,缺省值是10。
PageCount属性可以用来反回总页数 分页 <HTML>
<HEAD>
<TITLE>Recordset With Pages</TITLE>
</HEAD>
<BODY>
<!-- #INCLUDE VIRTUAL="ADOVBS.inc" -->
<%' Figure out the current page
IF Request.QueryString("MOVE")="NEXT" THEN
Session("CurrentPage")=Session("CurrentPage")+1
END IF
IF Request.QueryString("MOVE")="PREV" THEN
Session("CurrentPage")=Session("CurrentPage")-1
END IF
IF Session("CurrentPage")="" THEN
Session("CurrentPage")=1
END IF%>
<H1>Current Page: <%=Session("CurrentPage")%></H1>
<HR>
<%' Open a Connection and Recordset
Set MyConn=Server.CreateObject("ADODB.Connection")
Set RS=Server.CreateObject("ADODB.RecordSet")
MyConn.Open "FILEDSN=d:\Program Files\Common Files\ODBC\Data Sources\MyData.dsn"
' Retrieve the list of products
RS.Open "SELECT ProductName FROM Products", MyConn,adOpenStatic
' Set the number of records in a page
RS.PageSize=5
' Set the current page
RS.AbsolutePage=Session("CurrentPage")
' Show the records for the current page
WHILE NOT RS.EOF AND NumRows<RS.PageSize %>
<BR>
Product Name: <%=RS("ProductName")%>
<%RS.MoveNextNumRows=NumRows+1WEND%>
<HR>
<% IF Session("CurrentPage")>1 THEN %>
<A HREF="pages.asp?MOVE=PREV"> [PREV] </A>
<% END IF %>
<% IF Session("CurrentPage")<RS.PageCount THEN %>
<A HREF="pages.asp?MOVE=NEXT"> [NEXT] </A>
<% END IF %>
<%RS.CloseMyConn.Close%>
</BODY>
</HTML>
把记录取到数组中
RS.Open “SELECT MyFirstCol,MySecondCol FORM Mytable”,MyConn
MyArray=RS.GetRows()
<%
FOR i=0 TO UBOUND(MyArray,2)
%>
<BR> First Column:<%=MyArray(0,i)%>
<BR> Second column:<%=MyArray(1,i)%>
<%
NEXT
%>
VBScript函数UBOUND()用来确定数组的第二维的维数。FOR……NEXT循环用来扫描数组的所有元素。这个数组代表一个有两个字段的记录集。当该数组的第一个下标值是0时,代表第一个字段,当第一个下标值是1时,代表第二个字段。 指定记录集的最大容量
通过使用MaxRecords属性,你可以限制从一个数据库查询返回到一个记录集中的记录数目
RS.MaxRecords=10
RS.Open “SELECT MyColumn FROM Mytable”,MyConn
WHILE NOT RS.EOF
Response.Write(“<BR>”&RS(“MyColumn”))
RS.MoveNext
WEND
在这个脚本中,MaxRecords属性被设为10。当记录集RS被打开时,不会有超过10个记录被取到RS中。即使表中有10,000条记录,也只有10条记录被取出。使用MaxRecords属性时,你必须在打开记录集之前设置该属性值。记录集打开之后,该属性将成为只读的。
ADODB.Connection 连接对象。代表与一个数据源的唯一对话。例如,你可以用连接对象来打开一个对Microsoft SQL Sever的连接。
ADODB.RecortSet 记录集对象。代表来自一个数据提供者的一组记录。例如,你可以用一个记录集对象来修改一个SQL Sever表中的记录。
域对象。代表一个记录集中的一个域。
命令对象。代表一个命令。例如,你可以用命令对象执行一个SQL存储过程或有参数的查询。
参数对象。代表SQL存储过程或有参数查询中的一个参数。
属性对象。代表数据提供者的具体属性。
错误对象。代表ADO错误。 asp 与数据库联接
与本地access数据库联接
Set MyConn = Server.CreateObject("ADODB.Connection")
MyConn.Open("Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\\Inetpub\\wwwroot\\guest\\db1.mdb")
//MyConn.Execute()
Set RS = MyConn.Execute("select * from guest")
MyConn.Close asp向html文件写信息
Response.Write(var) asp检索并打印数据
Set RS = MyConn.Execute("select * from guest")
Response.Write(RS("name"))
RS.MoveNext asp插入数据
MyConn.Execute("insert into guest (name,msg) values ('sss','ddd')") asp结果集的游标类型和使用
adOpenFowardOnly。使用前向游标,你只能在记录集中向前移动。
adOpenKeyset。使用Keyset游标,你可以在记录集中向前或向后移动。如果另一个用户删除或改变了一条记录,记录集中将反映这个变化。但是,如果另一个用户添加了一条新记录,新记录不会出现在记录集中。
adOpenDynamic。使用动态游标,你可以在记录集中向前或向后移动。其他用户造成的记录的任何变化都将在记录集中有所反映。
adOpenStatic。使用静态游标,你可以在记录集中向前或向后移动。但是,静态游标不会对其他用户造成的记录变化有所反映。 在缺省情况下,当你打开一个记录集时,将用前向游标打开它。这意味着你只能用MoveNext方法在记录集中向前移动。对记录集的其它操作将不受支持。
前向游标的好处是它比较快。无论何时,如果前向游标可以实现你的要求,你就应该使用前向游标。但是,如果你需要用功能更强的游标打开记录集,你可以使用如下的脚本:
Set MyConn=Sever.CreateObject(“ADODB.Connection”)
Set RS=Sever.CreateObject(“ADODB.RecordSet”)
MyConn.Open “FILEDSN=d:\Program Files\Common Files\ODBC\Data Sources\MyData.dsn
RS.Open “SELECT * FROM Mytable”,MyConn,adOpenDynamic
RS.Close
MyConn.Close asp使用ADODB.RecordSet显式打开数据库时锁定类型和使用
打开记录集时,你也可以指定锁定类型。锁定类型决定了当不止一个用户
同时试图改变一个记录时,数据库应如何处理。你可以指定下面的四种锁定类型:
adLockReadOnly。指定你不能修改记录集中的记录。
adLockPessimistic。指定在编辑一个记录时,立即锁定它。
adLockOptimstic。指定只有调用记录集的Update方法时,才锁定记录。
adLockBatchOptimstic。指定记录只能成批地更新。
在缺省情况下,记录集使用只读锁定。要指定不同的锁定类型,你可以在打开记
录集时包含这些锁定常量之一。这里有一个例子:
Set MyConn=Sever.CreateObject(“ADODB.Connection”)
Set RS=Sever.CreateObject(“ADODB.RecordSet”)
MyConn.Open “FILEDSN=d:\Program Files\Common Files\ODBC\Data Sources\MyData.dsn
RS.Open “SELECT * FROM Mytable”,MyConn,adOpenDynamic,adLockPessimistic
RS.Close
MyConn.Close asp使用ADODB.RecordSet显示打开数据库时Options参数和使用
打开一个记录集时,你可以指定一个Options参数。Options参数标明用来打开记录集的命令
字符串的类型。告诉ADO被执行的字符串内容的有关信息有助于高效地执行该命令字符串。
你可以使用下面的常量作为Options参数:
adCMDTable。被执行的字符串包含一个表的名字。
adCMDText。被执行的字符串包含一个命令文本。
adCMDStoredProc。被执行的字符串包含一个存储过程名。
adCMDUnknown。不指定字符串的内容。(这是缺省值。)
在下面的脚本中,Options参数用来告诉ADO,命令字符串的内容是命令文本:
Set MyConn=Sever.CreateObject(“ADODB.Connection”)
Set RS=Sever.CreateObject(“ADODB.RecordSet”)
MyConn.Open “FILEDSN=d:\Program Files\Common Files\ODBC\Data Sources\MyData.dsn
RS.Open “SELECT * FROM Mytable”,MyConn,adOpenDynamic,adCMDText
RS.Close
MyConn.Close 使用RecordSet对象向数据库添加信息
RS.AddNew //创建一条新信息
RS(“MyColumn”)=”A new column” //给信息赋值
RS.Update //更新到数据库 使用RecordSet的其他方法 AddNew。向记录集中添加一条新记录。 CancelBatch。(当记录集处在批量更新模式时)取消一批更新。 CancelUpdate。(调用Update之前)取消对当前记录所做的所有修改。 Delete。从记录集中删除一条记录。 Update。保存对当前记录所做的修改。 UpdateBatch。(当记录集处于批量更新模式时)保存对一个或多个记录的修改。 遍历记录集
Move NumRecords。在记录集中向前或向后移动指定数目的记录数。
MoveFirst。移动到记录集的第一条记录。
MoveNext。移动到记录集的下一条记录。
MovePrevious。移动到记录集中的上一条记录。
MoveLast。移动到记录集的最后一条记录。 记录集对象还有许多属性,对遍历记录集是有用处的。同样,许多属性需要特定的游标类型:
AbsolutePosition。用来设置或读取当前记录在记录集中的位置顺序号。
BOF。标明当前位置在记录集中的第一条记录之前。
EOF。标明当前位置在记录集中的最后一条记录之后。
RecordCount。表示一个记录集中的记录总数。 在一个记录集中反向移动的实例
RS.Open “SELECT * FROM Mytable”,MyConn,adOpenStatic
RS.MoveLast
WHILE NOT RS.EOF
Response.Write(“<BR>”&RS(“MyCOlumn”))
WEND
RS.Close 返回记录数目
你可以用记录集对象的RecordCount属性来确定一个记录集中的记录总数。但是,你应该慎重使用这个属性,因为这个属性在许多情况下效率极低。
对一个用前向游标打开的记录集,你不能使用RecordCount属性。你必须打开一个效率较低的游标才可以使用这个属性 RS.Open “SELECT Mycolumn FROM Mytable”,MyConn,adOpenStatic //注意为 adOpenStatic
Response.Write(RS.RecrdCount)
你应该避免使用RecordCount属性。取而代之,你可以执行一个SQL COUNT(*)查询 对记录集进行分页
AbsolutePage。指定当前的页。
PagePount。返回记录集中的逻辑页数。
PageSize。指定一个逻辑页中的记录个数,缺省值是10。
PageCount属性可以用来反回总页数 分页 <HTML>
<HEAD>
<TITLE>Recordset With Pages</TITLE>
</HEAD>
<BODY>
<!-- #INCLUDE VIRTUAL="ADOVBS.inc" -->
<%' Figure out the current page
IF Request.QueryString("MOVE")="NEXT" THEN
Session("CurrentPage")=Session("CurrentPage")+1
END IF
IF Request.QueryString("MOVE")="PREV" THEN
Session("CurrentPage")=Session("CurrentPage")-1
END IF
IF Session("CurrentPage")="" THEN
Session("CurrentPage")=1
END IF%>
<H1>Current Page: <%=Session("CurrentPage")%></H1>
<HR>
<%' Open a Connection and Recordset
Set MyConn=Server.CreateObject("ADODB.Connection")
Set RS=Server.CreateObject("ADODB.RecordSet")
MyConn.Open "FILEDSN=d:\Program Files\Common Files\ODBC\Data Sources\MyData.dsn"
' Retrieve the list of products
RS.Open "SELECT ProductName FROM Products", MyConn,adOpenStatic
' Set the number of records in a page
RS.PageSize=5
' Set the current page
RS.AbsolutePage=Session("CurrentPage")
' Show the records for the current page
WHILE NOT RS.EOF AND NumRows<RS.PageSize %>
<BR>
Product Name: <%=RS("ProductName")%>
<%RS.MoveNextNumRows=NumRows+1WEND%>
<HR>
<% IF Session("CurrentPage")>1 THEN %>
<A HREF="pages.asp?MOVE=PREV"> [PREV] </A>
<% END IF %>
<% IF Session("CurrentPage")<RS.PageCount THEN %>
<A HREF="pages.asp?MOVE=NEXT"> [NEXT] </A>
<% END IF %>
<%RS.CloseMyConn.Close%>
</BODY>
</HTML>
把记录取到数组中
RS.Open “SELECT MyFirstCol,MySecondCol FORM Mytable”,MyConn
MyArray=RS.GetRows()
<%
FOR i=0 TO UBOUND(MyArray,2)
%>
<BR> First Column:<%=MyArray(0,i)%>
<BR> Second column:<%=MyArray(1,i)%>
<%
NEXT
%>
VBScript函数UBOUND()用来确定数组的第二维的维数。FOR……NEXT循环用来扫描数组的所有元素。这个数组代表一个有两个字段的记录集。当该数组的第一个下标值是0时,代表第一个字段,当第一个下标值是1时,代表第二个字段。 指定记录集的最大容量
通过使用MaxRecords属性,你可以限制从一个数据库查询返回到一个记录集中的记录数目
RS.MaxRecords=10
RS.Open “SELECT MyColumn FROM Mytable”,MyConn
WHILE NOT RS.EOF
Response.Write(“<BR>”&RS(“MyColumn”))
RS.MoveNext
WEND
在这个脚本中,MaxRecords属性被设为10。当记录集RS被打开时,不会有超过10个记录被取到RS中。即使表中有10,000条记录,也只有10条记录被取出。使用MaxRecords属性时,你必须在打开记录集之前设置该属性值。记录集打开之后,该属性将成为只读的。
相关阅读 更多 +