由於 ' (單引號)是SQL的標準字符符號,所以在SQL語句中間遇到 ' 時要做特殊處理。
1. 使用 QuotedStr 函數
QuotedStr的作用是使字符串包含單引號:
在字符的前後加上( ')號,因爲在DELPHI中字符賦值是需要引號的
比如
CommandText := CommandText + QuotedStr(Edit1.Text);
Sql := 'select ... from ... where uName=' + QuotedStr(Edit1.Text);
上面的語句還可以寫成:
Sql := 'select ... from ... where uName=' + Char(39) + stringreplace(Edit1.Text,'''','''''',[rfReplaceAll])+ Char(39);
2、採用替代法 即用 " 代替 ' ,正好delphi有現在的函數,例如:
UName :=stringreplace(ComBoUser.Text,'''','''''',[rfReplaceAll]);
UPwd :=StringReplace(EPassword.Text ,'''','''''',[rfReplaceAll]);
Sql :='select UAuth from VUser where UName=''' +UName +''' and UPwd=''' +UPwd +'''';
adoquery1.SQL.Add(Sql);
3、採用參數法 即用參數代替變量 ,此時不需要對變量做任何處理,例如:
AdoQuery1.SQL.Add('update GoodsReason set GRCode =:VC,GRName =:VN where GID =:ID');
AdoQuery1.Parameters.Clear;
AdoQuery1.Parameters.CreateParameter('VC',ftString,pdinput,10,EGCode.Text );
AdoQuery1.Parameters.CreateParameter('VN',ftString,pdinput,20,EGName.Text );
AdoQuery1.Parameters.CreateParameter('ID',ftInteger,pdinput,8,StrToInt(GoodsId.Caption));
AdoQuery1.ExecSQL ;