文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>asp复习系列 --数据库操作

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属性时,你必须在打开记录集之前设置该属性值。记录集打开之后,该属性将成为只读的。
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载