2014-12-03 434 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; 
}