2 编辑和修改数据 Recordset对象有一些基础特性,如属性、集合和方法等。例如,在打开Recordset之前需要指定游标类型、游标位置和加锁类型。游标打开之后,用户可以增加新记录、编辑和删除数据或者简单导航记录集。当然还有众多其他特性,如排序、查找和索引Recordset。我们主要介绍对数据的编辑和修改操作方法,其他的属性和方法读者可以查看相关的文献。 (1) AddNew方法 使用ADO在SQL Server 中编辑数据十分简单。为在表中添加新记录,只须使用Recordset对象的AddNew方法,如程序清单6.14所示。在调用该方法之后,就能设置字段值,然后调用Update方法以保存修改的结果。 (13)程序清单6.14 向表中添加一条新记录 '---创建Connection对象 set objConn = Server.CreateObject (" ADODB.Connection") '---创建Command对象 set objCmd = Server.CreateObject (" ADODB.Command") '---创建Recordset对象 set objRS = Server.CreateObject("ADODB.Recordset" ) '----通过连接字符串:Server的OLE DB提供者(SQLOLEDB)使用没有密码的用户名"sa", '---创建对名为misserver的服务器的连接,访问名为pubs的数据库 objConn.Open "Provider=SQLOLEDB.1;User ID=sa;" & _ "Password=;Initial Catalog=pubs;Data Source=misserver" set objCmd.ActiveConnection = objConn '--- 创建连接参数 objCmd.CreateParameter("percentage", adInteger, adParamInput,,50) objCmd.CommandText = "authors" '---设置锁类型 objRS.Open objCmd, , adOpenStatic, adLockOptimistic '-- 添加新记录,填写数据并更新 objRS.AddNew objRS("au_id") = "123-45-6789" objRS("au_lname") = "Papa" objRS("au_fname") = "Colleen" objRS("phone") = "919 555-1234" objRS("address") = "1 Lois Lane" objRS("city") = "Metropolis" objRS("state") = "NY" objRS("zip") = "12345" objRS("contract") = False '-- 添加的新记录写入数据库 objRS.Update (2) Update方法 (3) Delete方法 ADO2.0的另一个新特性是查找指定记录。为此使用新的Find方法查找指定记录,Find方法的语法格式为: recordset.Find criteria, skipRows, searchDirection, start 其中: ・ criteria指定查找的行,是一个字符串表达式,基本上是SQL WHERE 短语去掉WHERE关键字。 ・ start参数指出记录集的一个书签行作为查找的开始。 ・ skipRows参数指定和开始点相关的行开始查找。默认为当前行,即0。换句话说,skipRows是start参数的偏移。 ・ searchDirection指出查找的方向:向前或向后。 程序清单6.17显示Find方法如何使用选择条件查找�"NC"洲的作者。 (16)程序清单6.17 查找指定记录 set objConn = Server.CreateObject("ADODB.Connection") set objCmd = Server.CreateObject("ADODB.Command") set objRS = Server.CreateObject("ADODB.Recordset" ) objConn.Open "Provider=SQLOLEDB.1;User ID=sa;" & _ "Password=;Initial Catalog=pubs;Data Source=misserver" strSQL = "SELECT * FROM authors" objRS.CursorLocation = adUseClient objRS.Open strSQL, objConn, adOpenStatic '---查找字段State值为"NC"的记录 objRS.Find "state = 'NC'" 如果有数行符合条件,可以重新使用Find方法和参数,只需改变skipRows参数。简单地改变值为1 ,它就开始从当前行之后查找。 |