Sql server 2008 从Visual Foxpro向SQL Server数据库发送连接查询

Sql server 2008 从Visual Foxpro向SQL Server数据库发送连接查询,sql-server-2008,visual-foxpro,Sql Server 2008,Visual Foxpro,我正在使用Visual Foxpro 9和SQL Server作为后端。我正在执行此查询以使用unicode文本更新现有列值: UPDATE <table> SET fname = "N('" + hexchr + "')" 更新集fname=“N(“+hexchr+”)” 问题在于Foxpro将字符串存储为: N(0945;0987;) 而当通过SQLServerManagementStudio运行同一命令时,字符串存储为实际的devnagari字体 如何让Foxpro使用N执

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

UPDATE <table> SET fname = "N('" + hexchr + "')"
更新集fname=“N(“+hexchr+”)” 问题在于Foxpro将字符串存储为:

N(0945;0987;)

而当通过SQLServerManagementStudio运行同一命令时,字符串存储为实际的devnagari字体


如何让Foxpro使用N执行上述查询?

我从未尝试过使用Unicode和SQL Server。。。但是,为了帮助防止SQL注入,在VFP中,当使用SQL传递(SQLConnect()、SQLExec()等)时,如果使用“?”占位符编写查询,它将从VFP中查看变量。。。比如

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中创建一个接受两个十六进制值(或任何值)的存储过程,并根据需要调用该存储过程并将其传入。

听说过SQL注入吗?SQL的字符串连接通常是一个坏主意……到目前为止还没有引起关注。