Отправка каскадного запроса в базу данных SQL Server из Visual Foxpro - PullRequest
0 голосов
/ 25 января 2012

Я использую Visual Foxpro 9 с SQL Server в качестве серверной части.Я выполняю этот запрос, чтобы обновить существующее значение столбца с текстом Unicode:

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

Проблема в том, что Foxpro хранит строку как:

N (0945; 0987;)

тогда как при запуске той же команды через среду управления SQL Server строка сохраняется как фактический шрифт devnagari.

Как заставить Foxpro выполнить вышеупомянутый запрос с N?

1 Ответ

1 голос
/ 25 января 2012

Я никогда не пытался работать с Unicode и использовать SQL-Server ... Однако, что касается предотвращения SQL-инъекций в VFP при использовании SQL-Passthrough (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, которая принимает два шестнадцатеричных значения (или что-то еще), вызывать их и передавать, как требуется.

...