Как через веб-сервисы выполнять SQL_запросы на базе данных?
В WDSL есть метод ExecuteSQL, он принимает параметр APackage
Нигде в документации ничего про это не нашел. Не нашел так же никаких примеров кода.
Как выполнить SQL-запрос к данным базы через веб-сервисы?
Нравится
Тут многое зависит от версии системы.
В своем блоге я показал пример вызова сервисов под 3.3.0.
APackage это не сам запрос, а вся команда к SQL серверу с параметрами, сохраненная определенным образом сначала в xml, потом в Base64(Mime) и, в зависимости от параметров соединения, возможно зазипованая.
Плюс возможна пакетная передача данных, если запросы большие.
хм.... на 3.3.0 и 3.3.2 не работает:
string LoginInfoXml = Enc.GetString(Convert.FromBase64String(LoginInfoStr)); XmlDocument XmlDoc = new XmlDocument(); XmlDoc.LoadXml(LoginInfoXml); XmlNode node = XmlDoc.FirstChild;
неправильно раскодирует. Надо будет попробовать на более поздних версиях...
Нет, Саня, на 3.3.2.119 не работает.
Возвращает респонз, который начинается всегда для всех запросов с символов "eAEB".
Это какие-то управляющие спецсимволы, если их перевести в нормальную кодировку.
На ранних версиях у меня этого нет. Т.к. это не стандартная кодировка - пример, что выложен тоже не работает.
Convert.FromBase64String(LoginInfoStr) - не правильно разкодирует то что пришло с сервера.
Кстати, под 4-м фреймворком вообще вебсервисы не работают, только под 2-м.
Возможно, эта задача и не приоритетная - решать вам. Я просто констатирую факты.
Сегодня добрался до тестирования проблемы с выполнением ExecuteSQL через веб-сервисы.
Так вот, выяснил, что управляющие символы в начале -- это начало архива (сжатие результатов в zip-архив). Поэтому Convert.FromBase64String возвращал не то что хотелось, т.к. нужно делать "разархивацию".
Для упрощения работы с веб-сервисами, я добавил возможность возвращать результаты без дополнительного сжатия. В моем примере из предыдущего комментария это задается в строке номер 72:
rqOpenConfiguration.ACompressionLevel = 0; //Without compression (zip)
Эта доработка появилась начиная с версии 3.3.2.123.