2014-12-03 117 views
0

我的应用程序创建免费的foxpro表格并向其中插入数据。插入带双引号的字符串时,会出现语法错误。 这里是导致问题的字符串 - “尾灯在15和72”之间的高度“。我曾尝试用双引号,/双引号试图转义双引号,但没有任何帮助。 有没有其他方法可以解决这个问题? 任何帮助,非常感谢。 谢谢。visual foxpro逃脱双引号

这是我的INSERT语句

INSERT INTO NAMEMAIN (ACCIDENT,CHARGE,YEARSTAMP,ZIP,ZONE) VALUES ("1", "TAIL LAMPS-HEIGHT BETWEEN 15\" AND 72\"", 0, " ", "OVPK") 

回答

2

这将是更好地看到你正在尝试做插入语句。插入应该来自变量引用而不是硬字符串。

lcSomePart = Thisform.txtboxDescription.Value 

insert into YourTable (somePartField) values (lcSomePart) 

它应该没有问题,但没有你的例子,很难确认你正在运行什么。

另一种方式是VFP允许多个选项包串,如果你有它硬编码引用,如

lcSomePart = [TAIL LAMPS-HEIGHT BETWEEN 15" and 72"] 
lcSomePart = 'TAIL LAMPS-HEIGHT BETWEEN 15" and 72"' 

两个版本以上的工作。 VFP使用方括号来标识字符串的开始/结束(只要它们是成对的,也允许单引号作为字符串的开始/结束),如果你有一个单引号的字符串,

将插入更改为以下内容,但强烈建议插入变量,特别是如果来自数据输入字段,但请注意,VFP不会转义字符,但我已更改(“1”,[尾灯的高度在15“和72”之间]],0(插入到NAMEMAIN(事故,电荷,YEARSTAMP,ZIP,ZONE)值) ,“”,“OVPK”)

+0

感谢您的回复。我在上面的问题中添加了插入语句。 – user678229 2014-12-03 16:41:17

+0

@ user678229,更新后的答案,你应该在我调整后用[]方括号好。 – DRapp 2014-12-03 17:26:32

+0

谢谢。加上方括号解决了它。 – user678229 2014-12-03 17:40:34

0

但是如果你的文本中有3种分隔符?在这种情况下,你可以使用

lcSomePart = [TAIL [LAMPS-HEIGHT] + ']' + [ BETWEEN "15" and '72'] 

导致lcSomePart成为

TAIL [LAMPS-HEIGHT] BETWEEN "15" and '72' 

我从C++进行的FoxPro查询,并以我个人的string类我的FoxPro逃生功能如下:

MyString& MyString::doSQLFPEscape() { 
    for (size_t i=0; i<this->iLen; i++) { 
     if (this->c_str()[i] == ']') { 
      this->doInsert("+']'+[", i+1); 
      i += 5; 
     } 
    } 
    this->doInsert("[").add("]"); 
    return *this; 
}