Sql2:='Insert XS values('''+xh+''','''+xm+''','+xb+',
    '''+cssj+''','''+zy+''','+zxf+','''+bz+''')';
[Error]  Unterminated string
[Error]  Missing operator or semicolon
=================================
还有弱弱地问下,为什么delphi中引用SQL语句要用'''+xh+''' 这种形式啊?
+号有什么用?不是2个单引号等于一个单引号就号了吗?

解决方案 »

  1.   

    错在“把一个字符串分成两行书写”了。即:xb+后面的','''是一个字符串,不能分成两行写。+号是字符串运算符。理解成VB里的字符串连接符也可以。
    整个的SQL2就是一个字符串,它是由几个子串连接成的。Delphi里连续两个单引号表示一个字符单引号,正确。
      

  2.   

    当你不能确定最终生成的SQL字串是否是你想要的结果, 你可以在ADOQuery.Open或ExecSql之前,
    ShowMessage(SQL字串)看一下.例如:
    //SQL字串赋值部分
    ShowMessage(ADOQuery1.SQL.Text);//看一看生成的字串什么样子,是不是合意
    //ADOQuery1.ExecSQL;
      

  3.   

    sql 语句写的不对,用+号是因为sql 语句中value()里面一个字符的值要用‘’引起来。
      

  4.   

    加号表示字符串的连接,'''其中两个表示单引号的一半,另外一个是本身字符串的引号.在delphi字符串中''表示单引号的一半
      

  5.   

    例子:sql1:='aaa',zd1:='bb',sql2:='cc',delphi中sql1+'='''+zd1+''' where '+sql2,sql语句表示:aaa='bb' where ccc
      

  6.   

    Sql2:='Insert into XS values('''+xh+''','''+xm+''','+xb+','
    +' '''+cssj+''','''+zy+''','+zxf+','''+bz+''') ';