我在数据库程序中如果输入单引好就会报错,请问如何解决

解决方案 »

  1.   

    这是一个程序员常常忽略的东西,我也常常忽略
    //这样就不可以判断了,
    //pos函数有问题
    procedure TForm1.Button1Click(Sender: TObject);
    var
     i: integer;
    begin
      for i := 1 to length(edit1.text) do
        if edit1.text[i] = chr(39) then
          showmessage('ok');
    end;
      

  2.   

    不好意思
    pos我传反了参数
    if pos(#39,edit1.text) > 0 then
      showmessage('ok');
      

  3.   

    if key=#39 then key:=#0;
      

  4.   

    我也是有几十个窗体,把所有的信息都传到一个函数里面去处理
    返回真可以通过,返回假不能通过,你们在设计的时候就该考虑到的
    比如叫
    function checkchar(achar): boolean;
    所有的输入信息都要通过这个,不能包含特殊字符,和你们的通信协议的协议
      

  5.   

    procedure TTFrmItemType.EdtBeforeNumKeyPress(Sender: TObject;
      var Key: Char);
    var
      I:Integer;
      sSql:String;
    begin
      sSql:=(Sender as TFlatEdit).Text;  if Length(Trim(EdtBeforeNum.Text))>=10 then
      begin
        key := #0;
        Exit
      end  if Key=#13 then
        EdtBeforeRatio.SetFocus;  if (not (key in ['0'..'9', '.', #8])) then
      begin
        key := #0;
        Exit
      end  //---------------初始为空,添加小数点
      if (Trim(EdtBeforeNum.Text)='') and (Key='.') then
      begin
        key := #0;
        Exit
      end
      if key=#39 then 
      begin
        key := #0;
        Exit
      endend;
      

  6.   

    zsy_good(只要坚定不移的走下去,那一定会成功) 
    好办法呀,哈哈
      

  7.   

    兄弟们不能在KeyPress里面判断,KeyDown里面判断
    如果全部依赖于这个,用户如果复制一个文本,然后到你的编辑框
    中粘贴,你就死了/你还是要处理
    还不如全部写成函数。
    呵呵
      

  8.   

    用 quotedstr函数
    str := 'select * from table where F1 = ' + QuotedStr(Edit1.Text)
    这样就不怕用户输入'号了
      

  9.   

    同意 ahzhuqi(zhuqi)  的写法,很简单,也很实用。
    不过,我平时用:function StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;比较合我写SQL 语句的习惯。建议用 ahzhuqi 的写法。
      

  10.   

    写个public的函数,function ChangeStarChar(sourStr : string): string ;begin
      sourStr:=StringReplace(sourStr,'''','',[rfReplaceAll]);
    end;