2012-01-25 72 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中创建一个接受两个十六进制值(或其他)的存储过程,然后调用它并根据需要传递它。