Delphi中使用SQL语句要注意的事项,归纳起来主要有一下几条:
1、一定不要漏空格或换行符。
在使用Delphi开发管理软件时,我们要经常拼装SQL语句,例如:
'SELECT * FROM Users'+
'WHERE UserOID IS NOT NULL'
这个时候SQL语句就变成了
SELECT * FROM UsersWHERE UserOID IS NOT NULL
这样的SQL语句肯定会出错,所以一定不要忘记加空格和换行符。
2、引号配对。
这是在Delphi使用SQL语句时容易出错的地方,由于delphi规定在字符串中用两个西文的单引号“''”表示一个“'”,在拼装语句的时候就容易疏忽遗漏。
Delphi里有个函数QuotedStr能够在字符串的头尾加上一个西文的单引号【'】,这个函数的定义:function QuotedStr(const s: string):string;
因此,如果要在一个语句中拼装入字符串类型的变量就可以用到这个函数。
3、请多使用QuotedStr和过滤一些特殊字符(防止SQL注入)。
举例说明:
在某个功能界面上,可以输入用户名查询出该用户的资料。程序员所使用的SQL语句如下:
SELECT * FROM Users WHERE Name=’’%S’’
如果我把%S替换成一个单引号呢?这时SQL语句就会变成
SELECT * FROM Users WHERE Name=’’这样的SQL肯定执行出错。
如果我又把%S替换成'OR u.[Name]<>'呢?这时SQL有会变成
SELECT * FROM Users WHERE Name=''OR Name<>''
列出这张表里的所有数据。
如果SQL语句如下:
SELECT * FROM Users WHERE Name=%S
而%S的值,全部用QuotedStr转换成字符串再传入的话就安全多啦!也不会出错。抄自小强日志!