Insert和Rs.Addnew

发布时间:2015年3月3日 作者:未知 查看次数:1329

Insert和Rs.Addnew


还没遇到这样的情况,先记录下。

Insert和Rs.Addnew的比较

自:http://www.lzjh.info/mssql/show.asp?id=7

在MSSQL数据库中添加一条新记录,可以通过使用RecordSet对象的Addnew方法,和通过执行SQL语句中的insert语句实现。那两者有何区别呢?

    从本质上讲,ADO的Addnew方法只是将“Insert into”语句封装了起来,所以,直接使用SQL语句将会大大加快存取数据的速度,因为它减少了ADO的“翻译”时间,尤其当对大量数据进行操作的时候表现得更为明显。但是直接使用SQL语句的缺点:不能传递太长的字段内容,在向数据库中IMAGE字段加入数据时,长文本数据时,就需要使用Addnew了。此外,当字段比较多时SQL语句将会很长而导致不易排错,推荐有经验的编程者优先考虑。

    相比较而言,RecordSet对象的Addnew方法首先需要建立一个可更新的RecordSet对象,并且一直保持到Update结束,所以比较消耗系统资源。不过它的优点是灵活性比较好,代码容易阅读,除错方便,推荐新手使用。

    附:

    笔者在使用ASP+MSSQL2008添加记录的时候,页面出现过以下错误信息:

    Microsoft OLE DB Provider for SQL Server
    错误 '80040e31'
    超时已过期

    笔者使用的是RecordSet对象的Addnew方法,代码如下:

  1. set rs=server.CreateObject("adodb.recordset")   
  2. sql="select * from product"  
  3. rs.open sql,conn,1,3 '页面提示这行代码出错   
  4. rs.addnew   
  5. '中间略去   
  6. rs.update  

    Product表中有二十几万条数据,因此笔者觉得,出现错误的原因可能是RecordSet对象打开记录集过多。因此,建议大家,在给数据量大的表添加数据时,尽量少用RecordSet对象的Addnew方法。如果为了方便查看,非得用Addnew方法的话,不妨将代码改下,只读取一条数据,如:

  1. set rs=server.CreateObject("adodb.recordset")   
  2. sql="select top 1 * from product"  
  3. rs.open sql,conn,1,3 '页面提示这行代码出错   
  4. rs.addnew   
  5. '中间略去   
  6. rs.update  

 



版权所有!www.sieye.cn
E.Mail:sieye@sohu.com QQ:66697110