【问题标题】:Sending concatenated query to SQL Server database from Visual Foxpro从 Visual Foxpro 向 SQL Server 数据库发送串联查询
【发布时间】:2012-01-25 11:00:48
【问题描述】:

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

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

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

N(0945;0987;)

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

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

【问题讨论】:

  • 听说过 SQL 注入吗? SQL 的字符串连接通常是个坏主意...
  • 暂时不用担心。

标签: sql-server-2008 visual-foxpro


【解决方案1】:

我从未尝试过使用 Unicode 并提供 SQL-Server 服务...但是,关于帮助防止 SQL 注入,在 VFP 中,当使用 SQL-Passthrough(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 中创建一个接受两个十六进制值(或其他值)的存储过程,然后调用它并根据需要传递它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多