我使用Visual Foxpro 9和SQL Server作为后端。我正在执行此查询以使用unicode文本更新现有列值:
UPDATE <table> SET fname = "N('" + hexchr + "')"
问题是Foxpro将字符串存储为:
N(0945; 0987)
而当通过SQL Server管理工作室运行相同的命令时,该字符串将存储为实际的devnagari字体。
如何使Foxpro使用N?
执行上述查询答案 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中创建一个存储过程,接受两个十六进制值(或其他),并调用它并按需要传入它。