В данном посте создадим сервер и клиента с нуля и будем пользоваться не провайдерами, а серверными методами. Согласно книге Д.Осипова Delphi и Базы данных – это относительно новый подход, избавляющий от зависимости от COM. Не могу сказать, что он во всем удобный, но тем не менее рассмотреть его стоит.
Подготовительная работа
–Создадим сервер приложений DataSnap
–Подключим сервер приложений DataSnap к СУБД
Единственная разница – в модуле методов сервера, набор компонент сделаем таким…
Сохраним все (File | Save All) с понятными именами в отдельную папку… (называйте так, чтобы потом самим разобраться в файлах)
В менеджере проектов добавим новый проект…
Вообще, про менеджер проектов хочу сказать, что вещь удобная – позволяет быстро переключаться между юнитами, датамодулями и др. элементами проектов.
В клиентском приложении расположим следующие компоненты…
SQLConnection1
SqlServerMethod1
DataSetProvider1
ClientDataSet1
DataSource1
DBGrid1
На этом подготовительные работы закончены.
Что нужно сделать на сервере DataSnap?
Пропишем свойства SQLDataSet1 следующим образом…
–Commandtype ctQuery
–CommandText select*from mytable // здесь запрос к вашей таблице
–SqlConnection – SqlConnection1
Выставим в Active True
Откроем модуль методов сервера и пропишем там следующую функцию
1 |
MyDataSet:TDataSet; |
в секции public…
1 2 3 4 5 6 7 8 9 10 11 |
type TServerMethods1 = class(TDSServerModule) SQLConnection1: TSQLConnection; SQLDataSet1: TSQLDataSet; private { Private declarations } public { Public declarations } function EchoString(Value: string): string; function ReverseString(Value: string): string; function MyDataSet:TDataSet; //Добавляем эту функцию |
Ставим курсор на MyDataSet:TDataSet и жмем Ctrl+Shift+C, попадаем в реализацию метода, там пишем…
1 2 3 4 5 |
function TServerMethods1.MyDataSet: TDataSet; begin sqldataset1.Open; result:=sqldataset1; end; |
Что нужно сделать на клиенте?
У SQLConnection выберем драйвер DataSnap (для проверки подключения – сначала запустите сервер DataSnap, вообще Боб Сварт советует это свойство оставлять выключенным, а включать только в FormCreate, потому что при запуске IDE, если сервер не запущен, клиент будет ругаться)
У ServerMethod – выставим SQLConnection – SQLConnection1, а также ServerMethodName – TServerMethods1.MyDataSet
У DataSetProvider… DataSet – sqlServerMethod1
У ClientDatSet…
У DataSource… DataSet – ClientDataSet1
У DBGrid1… DataSource – DataSource1
Также в FormCreate клиента нужно написать…
1 2 |
sqlconnection1.Open; clientdataset1.Open; |
Итог
Запускаем сервер…
Запускаем клиент…
Как видно – множество корректно отображается…