2012-01-25 70 views
0

我使用Visual Foxpro 9和SQL Server作爲後端。我執行這個查詢來更新與一個unicode文本的現有列值:將連接查詢從Visual Foxpro發送到SQL Server數據庫

UPDATE <table> SET fname = "N('" + hexchr + "')" 

問題是Foxpro中被存儲的字符串作爲:

N(0945; 0987)

而當相同的命令通過SQL Server管理工作室運行,字符串存儲爲實際的devnagari字體。

如何使Foxpro用N執行上述查詢?

+0

曾聽說過SQL注入? SQL的字符串連接通常是一個壞主意...... – gbn

+0

現在還不是一個問題。 – RKh

回答

1

我從來沒有嘗試過使用Unicode和提供SQL Server ...但是,有關幫助防止SQL注入,在VFP中,使用SQL通過(SQLConnect(),SQLExec()等)時) ,如果你用「?」編寫查詢它會查看VFP內部的VARIABLE ...如

myField = 0x123 && or whatever hex value... VFP leading with 0x implies hex 
myKey = "whatever" 

cSQLCmd = "update SomeTable set Field1 = ?myField where SomeKey = ?myKey" 
nSQLHandle = sqlconnect(YourConnectionStringInfo) 
SQLExec(nSQLHandle, cSQLCmd) 
sqldisconnect(nSQLHandle) 

VFP將處理?通過各自找到的可用變量名稱爲您提供參數。現在,所有這些說,VFP只是基於32位,並不認爲它承認「unicode」值。你可能需要做的是在SQL中創建一個接受兩個十六進制值(或其他)的存儲過程,然後調用它並根據需要傳遞它。