VB数据库编程的几点心得(下)
上接:VB数据库编程的几点心得(上)
三、在SQL中处理含单引号的字符串
VB在写SQL时,对字符串数据都用单引号引起来,如:
Select * from MyTable Where ID='FirstID'
若其中的FirstID为First'ID,即中间多出一个单引号,则上述写法将导致错误,解决的办法是将字符串中的每一个单引号用两双引号替换,下面的函数StrToSQL完成该功能,并用单引号将处理后的字符串引起来:
Private Function StrToSQL(ByVal strValue As String) As String StrToSQL = "'" + Replace(strValue, "'", "''") + "'" End Function
在写SQL时如有字符串数据,不管其中有没有单引号,都可以这样使用:
strValue="First'Id" strSQL="Select * from MyTable Where ID="+StrToSQL(strValue)
四、只返回查询结果的前N个记录
这是个老生常谈的问题,稍有这方面经验的人都会想到在SQL中用"Select Top"语句来完成此功能,如访问Access数据库时为:
Select top 50 * From MyTable
SQL Server 7.0和SQL Server 2000中都可以这样,但在SQL Server 6.5中不行,它不支持"Select Top",笔者采用了一个折衷的办法,使用SQL Server 6.5的"Set Rowcount"来限制记录数,例如:
MyConnection.Execute "Set Rowcount 50" ......'执行查询 MyConnection.Execute "Set rowcount 0"
最后一行表示取消记录数据限制,这句千万不能少,因为记录数的限制在MyConnection的生存期都有效,所以其它的查询也会受此限制,最多只返回50条记录,笔者曾深受其害。
本文中涉及的内容的测试平台为Visual Baisc 6.0 Enterprise+Service Pack 4。
| 出处: erwin.softwarechn.com 日期: 2005-4-25 |
好:6 一般:1 差:4 |
|