从Visual Foxpro向SQL Server数据库发送连续查询

时间:2012-01-25 11:00:48

标签: sql-server-2008 visual-foxpro

我使用Visual Foxpro 9和SQL Server作为后端。我正在执行此查询以使用unicode文本更新现有列值:

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

问题是Foxpro将字符串存储为:

N(0945; 0987)

而当通过SQL Server管理工作室运行相同的命令时,该字符串将存储为实际的devnagari字体。

如何使Foxpro使用N?

执行上述查询

1 个答案:

答案 0 :(得分:1)

我从未尝试过使用Unicode并提供SQL-Server ...但是,在使用SQL-Passthrough(SQLConnect(),SQLExec()等)时,在VFP中帮助防止SQL注入,如果用“?”编写查询占位符,它将从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中创建一个存储过程,接受两个十六进制值(或其他),并调用它并按需要传入它。