Mad*_* Zu 2 sql-server adodb cursor-position asp-classic sql-server-2008
我正在查看一些旧代码并发现了一件我似乎无法理解其中的内容......就我所知,它只是一个简单的插入.但为什么他们这样做呢?是否可以重写插入,或者我可能会破坏某些东西?
请看下面:
Set TextRS = Server.CreateObject("ADODB.RecordSet")
Set TextRS.ActiveConnection = Conn
TextRS.Source = "SELECT IDX,TIMESTAMP,CURRENTFLAG,TEXT FROM " & TextTable & " WHERE 1=2 FOR UPDATE"
TextRS.CursorLocation = 2
TextRS.CursorType = 3
TextRS.Open ,,,3
TextRS.AddNew
TextRS(0).Value = IDX
TextRS(1).Value = Timestamp
TextRS(2).Value = "Y"
TextRS(3).AppendChunk TextPiece
TextRS.Update
TextRS.Close
Run Code Online (Sandbox Code Playgroud)
这部分消息来源让我有点困惑.... where 1 = 2??? 显然,它的目的是确保不匹配.
无论如何,这种编程风格使用ADO技术相当陈旧,从DAO到ADO的人经常会打开游标以这种方式迭代数据库...它不遵循现代最佳实践,如何做事,你可以和应该用insert语句替换它!
它可能是在jet4.0/access 2000之前编写的,在这种情况下,它是试图模拟参数化存储过程.虽然如果系统比那更现代,我强烈建议使用存储过程,因为它有多种好处.缓存执行计划,参数以减少SQL注入的机会
我实际上习惯于编写非常类似于12年前的代码:p主要是因为我不知道更好,无论使用何种技术.