ADOHTTP

Обсуждение проектов наших жителей.
Вы можете выставить проект на тест или найти помощников для его реализации.

Модератор: BV

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

ADOHTTP

Сообщение Antonariy » 21.06.2006 (Ср) 17:36

Клиент-серверная библиотека, позволяющая делать sql-запросы через интернет к серверу с IIS. Объектная модель повторяет ADO с некоторыми отличиями

Класс Recodset
-------------------------
Поменял названия Open, Close, Seek на Open2, Close2, Seek2 соответственно в связи с ограничениями VB на названия процедур.

Приобрел свойство Recordset, возвращающее текущий объект ADODB.Recordset.

Из событий осталось только FetchComplete.

Класс является источником данных, так что его можно использовать как значение свойства DataSource контролов. Наборы данных открываются только в режиме adOpenStatic.


Класс Connection
----------------------------
Новые свойства/методы

ADOHTTPError - возвращает объект Error2 (аналог ADODB.Error) с описанием ошибки, произошедшей в библиотеке ADOHTTP. Если номер ошибки равен 12004 - это означает, что был получен неверный ответ от сервера или его отсутствие, а cвойство SQLState содежит html-текст ответа. К примеру, ести произвести запрос по адресу ya.ru, то свойство будет содержать html-текст этой страницы. При возникновении такой ошибки State переходит в состояние adStateClosed.

ConnectionSecurity - устанавивает тип соединения с базой на сервере, csUseConnectionString - через строку подключения, передаваемую клиентом, csUseApplication - через алиас, созданный на сервере.

Server - устанавливает адрес сервера.

Application - устанавливает название алиаса.

Compression - устанавливает тип сжатия запросов, ctNone - без компрессии, ctHuffman - сжимает вдвое, но быстро, ctLZSS сжимает втрое, но медленно. Сервер использует метод сжатия, с которым пришел запрос с клиента.

Connect(Optional Security As ConnectionSecurity = csUseApplication, Optional bAsync As Boolean, Optional HTTPUser As String, Optional HTTPPassword As String)
Появился вместо метода Open. При открытии асинхронного соединения все дальнейшие действия будут проходить в этом режиме.

Класс HTTPServer
-----------------------------
Методы.

Execute(Request As ASPTypeLibrary.Request, Response As ASPTypeLibrary.Response)
Вызывается из кода ASP-страницы

ShowAppsForm() - отображает диалог создания алиасов.


В архиве сама библиотека, asp-файл для сервера и vbs, отображающий диалог настройки алиасов.
У вас нет доступа для просмотра вложений в этом сообщении.
Лучший способ понять что-то самому — объяснить это другому.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 17.08.2006 (Чт) 11:06

Решил вот выложить исходники. Самому эта байда не нужна, есть более продвинутая система, а кому-то может будет интересно.
У вас нет доступа для просмотра вложений в этом сообщении.
Лучший способ понять что-то самому — объяснить это другому.

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 17.08.2006 (Чт) 16:26

ДЫк, а RDS для чего?
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 17.08.2006 (Чт) 16:43

Дык RDS неочевидный. Я не смог заставить его работать. Кроме того, мало ли что еще можно наворотить сверху. Например, шифрование.
Лучший способ понять что-то самому — объяснить это другому.

Paladium
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 21.03.2006 (Вт) 15:56

Сообщение Paladium » 18.12.2006 (Пн) 15:00

Antonariy писал(а):Решил вот выложить исходники. Самому эта байда не нужна, есть более продвинутая система, а кому-то может будет интересно.


По правде говоря столкнулся с проблемой задачи онлайн базы, на первый взгляд решение простое написать все на PHP+HTML, но к сожалению я знаю только HTML, а с PHP не знаком!
Писать сервер было бы логично, но назначение базы слишком скромное, потому мне лениво!!
Увидел тему, заинтересовался!

Можно подробне что за "болие продвинутая система".
Если можно выложите asp.dll, и инфу по исходничку!
Я так понимаю вы Antonariy-автор!

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 18.12.2006 (Пн) 16:02

Более продвинутая система - клиент-серверный набор объектов, который способен передавать рекордсеты, байтовые массивы и значения простых типов через http (в том числе) единым запросом. Она является транспортом данных для другого моего творения - VBA Thin Client, который можно найти здесь же в проектах. Кстати, там и описание объектной модели, правда уже немного устаревшее. Только серверной части там нет.

Что за asp.dll?

Какая еще инфа нужна? Краткое описание есть, как работает можно догадаться, изучив исходники.

написать все на PHP+HTML
Надеюсь, ты понимаешь, что это все может работать только на win-хостинге, к тому же он должен позволить установить свою dll. Хотя серверную часть легко реализовать и на чистом asp. php тоже не знаю, соответственно как на нем написать аналог asp-шного вызова HTTPServer.Execute не подскажу.
Лучший способ понять что-то самому — объяснить это другому.

Paladium
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 21.03.2006 (Вт) 15:56

Сообщение Paladium » 19.12.2006 (Вт) 17:25

Моя задача специально разрабатывается для Win хостинга.

Microsoft Active Server Pages Object Library или ASP.dll
на эту библиотеку ссылается часть кода
Код: Выделить всё
Public Sub Execute(Request As ASPTypeLibrary.Request, Response As ASPTypeLibrary.Response)


В этом моменте начинаются все проблемы, проверить работоспособность не возможно, так как “C:\windows\system32\inetsrv\asp.dll" просто отсутствует asp.dll.
Возможно, вы сможете подсказать, где скачать инсталляцию ASP (Microsoft Active Server Pages)?
Я не нашол рабочих ссылок.

Из-за той же невозможности проверить, мне сложно понять, как работает вот этот код:
Код: Выделить всё
cn.Server = "http://localhost/default.asp"

он возврашает страницу "The page cannot be displayed"

Возможно я просто не допонимаю как оно все работает.

Конечно, идеально было бы увидеть, как все должно работать!!
То есть, что должно быть записано в default.asp.
И какой результат возврашает про выполнении кода:
Код: Выделить всё
    cn.Server = "http://localhost/default.asp"
    cn.Connect 1, False

Если вам не сложно напишите что должно быть настроено, и как,
Без наглядного примера, сложно разобраться.


P.S.
Специально для этой задачи, я установил Апачь сервер и базы MySQL.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 19.12.2006 (Вт) 19:48

ASP = Internet Information Server. Он-то и должен быть установлен на компьютере вместо апача. Устанавливается из Установки и удаление программ - компоненты Windows. Посли установки появится папка C:\Inetpub\wwwroot, если в нее скопировать файл default.asp, то адрес http://localhost/default.asp заработает. Что делает файл, можно посмотреть в его содержимом (он есть в обоих архивах).

Можно подключаться к базе, указывая на клиенте в Connection.ConnectionString обычную строку подключения, можно на серве запустить Server config.vbs, в диалоге собрать строку подключения, дать ей имя и уже это имя указывать в ConnectionString.
Лучший способ понять что-то самому — объяснить это другому.

Paladium
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 21.03.2006 (Вт) 15:56

Сообщение Paladium » 20.12.2006 (Ср) 0:24

я пытаюсь создать содинение но при запуске default.asp
мне выдает "Request is empty"
пытался изменить параметры в строке
Код: Выделить всё
sdm.Execute Request, Response

Request- задавал SQL запрос (select * from `test`.`base`)

результат всегда один и тотже.

указываю в клиенте
Код: Выделить всё
Connection.ConnectionString="Provider=MSDASQL.1;Persist Security Info=False;Data Source=proba"

результат:
Connection was not opened because of security reasons[Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию


Пытался делать так:
Поставил базу MySQL
Поставил IIS
Запускаю в браузере http://localhost/default.asp
результат "Request is empty"

расписываю два варианта в ВБ
вариант 1
Код: Выделить всё
cn.Application = "paladium"
cn.Server = "http://localhost/default.asp"
cn.Connect 1, False

результат: Error 12004

вариант2
Код: Выделить всё
cn.ConnectionString="Provider=MSDASQL.1;Persist Security Info=False;Data Source=proba"
cn.Server = "http://localhost/default.asp"
cn.Connect 0, False

результат: Error 12004


Пожалста подскажите что может быть не правильно!!??
Насколько я понимаю, то default.asp должен быть переписан, но как??
можно на серве запустить Server config.vbs, в диалоге собрать строку подключения, дать ей имя и уже это имя указывать в ConnectionString

что значит указать в ConnectionString, то есть записать как "DSN=proba", так?


Чтобы я не делал, результат получается отрицательный!!!

Возможно ли получить болие подробную инструкцию, или пример.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 20.12.2006 (Ср) 11:27

Просто зарегистрировал библиотеку и написал код:
Код: Выделить всё
Private Sub Form_Load()
Dim cn As New ADOHTTP.Connection
Dim rs As New ADOHTTP.Recordset
    cn.ConnectionString = "driver={sql server};server=(local);database=callcenterr"
    cn.Server = "http://golubkov/ADOHTTP/default.asp"
    cn.Connect csUseConnectionString
    If cn.State = adStateOpen Then _
        rs.Open2 "select * from datProjects", cn, adLockBatchOptimistic
End Sub
Все работает. Ошибка 12004 может появляться по двум основным причинам: проблемы со связью с адресом, указанным в ConnectionString или ошибка соединения с базой данных. Первое проверяется открытием адреса в броузере. Если получен ответ "Request is empty", то со связью все в порядке. Дополнительная информация об ошибке находится в ADOHTTPError.Description и .SQLState. Если в Description текст Out of memory, то ответ от сервера пришел не в ожидаемого формате, а скорей всего в тексте, раскодирование которого не удалось с этой ошибкой. Ответ сервера в виде текста пишется в SQLState.

Судя по всему ошибка в строке подключения.
Лучший способ понять что-то самому — объяснить это другому.

Paladium
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 21.03.2006 (Вт) 15:56

Сообщение Paladium » 20.12.2006 (Ср) 13:40

Наверно это крайность.
Библиотека расчитана на работу только с MSSQL или возможено работать с MySQL????

Тут немного подробнее
cn.ConnectionString = "driver={sql server};server=(local);database=callcenterr"


насколько мне известно то сторока подключения выглядит так
Код: Выделить всё
Provider=MSDASQL.1;Persist Security Info=False;Data Source=MyServer;Mode=Read

я взял строку с http://www.connectionstrings.com
Код: Выделить всё
Driver={MySQL ODBC 3.51 Driver};Server=data.domain.com;Port=3306;Database=myDataBase;User=myUsername;Password=myPassword;Option=3;

Проверил на обычном ADO соединении все работает.

попробывал её, результат тотже
Код: Выделить всё
0             12004         0            Out of memory
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML dir=ltr><HEAD><TITLE>The page cannot be displayed</TITLE>

дебагер выдает все одно и тоже

Когда вы тестировали эту библиотеку
вы использовали реальный хостинг или пользовались Http://localhost/
(Http://127.0.0.1/)?

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 20.12.2006 (Ср) 14:14

Я подключался к ms sql серверу, поэтому у меня такая строка. К чему и как подключаетесь вы, вам виднее, но к аксессу тоже подключается.

Отлаживал все на своем компе, в примере это должно быть видно из адреса сервера. Http://127.0.0.1/ не работает, походу XMLHTTP такой адрес почему-то не переваривает, из-за этого вылезает <TITLE>The page cannot be displayed</TITLE>. Http://localhost/ работает. http://computername/ работает всегда.

можно на серве запустить Server config.vbs, в диалоге собрать строку подключения, дать ей имя и уже это имя указывать в ConnectionString
Здесь я ошибся. Имя пишется в свойство Application, а не ConnectionString.

Я создал у себя на сервере приложение Northwind, соединенное с одноименной микрософтовской базой, попробуйте присоединиться к нему, используя код:
Код: Выделить всё
Private Sub Form_Load()
Dim cn As New ADOHTTP.Connection
Dim rs As New ADOHTTP.Recordset
    cn.Application = "Northwind"
    cn.Server = "http://82.142.161.118/test/default.asp"
    cn.Connect csUseApplication
    If cn.State = adStateOpen Then
        rs.Open2 "select * from Employees", cn, adLockBatchOptimistic
    Else
        Debug.Print cn.ADOHTTPError.SQLState
    End If
End Sub
Лучший способ понять что-то самому — объяснить это другому.


Вернуться в Наши проекты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17

    TopList