sqlstr:='insert into [lpb](门牌号,户主,户型,出租否,出售否,产权证号,土地证号,面积) values(edit10.text,edit11.Text,huxing,chuzu,chushou,edit15.Text,edit16.text,edit17.Text)'+'''';
   query1.Close;
   query1.SQL.Clear;
   query1.SQL.Add(sqlstr);
   query1.ExecSQL;执行后出现‘Missint right quote.’的错误。小弟用个问题一直没有弄清楚,就是关于,Delphi中SQL的使用,其中的单引号与双引号具体是怎么用的,上面的例子都是用的单引号,还请哪位大虾指点一下。

解决方案 »

  1.   

    var
      s: String;
    begin
      Edit1.Text := 'Test';
      s := 'Test1(' + Edit1.Text + ')Test2'; 
                         //执行后s的值变为Test1(Test)Test2 
      s := 'Test1(Edit1.Text)Test2'; 
                        //执行后s的值变为Test1(Edit1.Text)Test2
      s := 'Test1(' + '''' + Edit1.Text + '''' + 'Test2'; 
                        //执行后s变为Test1('Test')Test2
    end;看看,试试,理解理解吧
    顺便说一句,SQL语句中遇到字符串是需要加上引号的,也就是需要用最后那种方式
      

  2.   

    sqlstr:='insert into [lpb](门牌号,户主,户型,出租否,出售否,产权证号,土地证号,面积) values(:MPH,:HZ,huxing,chuzu,chushou,:CQ,:TDZ,:MJ)';
       query1.Close;
       query1.SQL.Clear;
       query1.SQL.Add(sqlstr);
       PARAMBYNAME('MPH'):=EDIT10.TEXT;
       .....
       query1.ExecSQL;
    以參數的形式取值,思路如上,自已補兗完
      

  3.   

    其实这个问题我前段时间也是一直弄得迷迷糊糊的对于delphi中的单引号和双引号来说
     
    在''中间的如果用了引号表示,那么就需要用双引号
    比如sqlStr='select * from a where time =''2006-3-1'' '';
    如果在数据库中之需要写为select * from a where time ='2006-3-1'.
    这里的双引号其实就是转义字符''表示',那么最后的''也是如此
    ------------------------------------
    体验速度,体验CSDN论坛助手:http://community.csdn.net/Expert/TopicView.asp?id=4700683