C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: ADOConnection...подключение к серверу  (Прочитано 8716 раз)
3JIou
Участник


Сказали спасибо: +0/-0
Offline

Сообщений: 55


« : 07 Май 2008, 10:07:49 »

Здравствуйте, такой вопрос: имеется приложение, работающее с MS SQL Server через ADOConnection->ADOTable и т.д. Приложение должно работать на разных машинах (многопользовательское). Как соединиться с БД через ADOConnection, если не использовать мастер соединения? Т.е. как сгенерировать ConnectionString, зная, допустим, имя и ip компьютера с SQL Server'ом, имя БД? Или можно использовать другой метод? Спасибо.
Записан
oxotnik
Глобальный модератор


Сказали спасибо: +100/-15
Offline

Сообщений: 2425


« Ответ #1 : 07 Май 2008, 10:10:46 »

https://cbuilder.ru/index.php/topic,487.0.html

я делал через ini файл, если его нет (прога запускается 1-й раз, тогда выводить мастер подключения)

Код
 
 TIniFile *pIniFile = new TIniFile(ExtractFilePath(Application->ExeName) + "connect.ini");
 AnsiString CS = pIniFile->ReadString("BASE CONNECTION", "CONNECTION STRING", "");
 delete pIniFile;
 ADOConnection1->Connected = false;
 if (CS.Length()< 10)
    {
      ADOConnection1->ConnectionString = "";
      CS = MainForm->ConnectDB();
    }
 
 ADOConnection1->ConnectionString = CS;
 ADOConnection1->Connected = true;
 
в OnFormCreate
« Последнее редактирование: 07 Май 2008, 10:18:13 от oxotnik » Записан
AVC
Администратор


Сказали спасибо: +28/-6
Offline

Сообщений: 1189


« Ответ #2 : 07 Май 2008, 10:51:28 »

Видел решение, когда приложение таскало с собой udl файл, который, при необходимости, можно легко настроить штатными средствами.
http://rxlib.ru/forums/index.php?act=ST&f=4&t=2046&hl=udl
Записан
3JIou
Участник


Сказали спасибо: +0/-0
Offline

Сообщений: 55


« Ответ #3 : 07 Май 2008, 14:09:01 »

Наличие на клиентской машине ни каких доп.средств SQL Server не надо? Enterprise Manager или че-нить в этом роде?)
Записан
oxotnik
Глобальный модератор


Сказали спасибо: +100/-15
Offline

Сообщений: 2425


« Ответ #4 : 07 Май 2008, 14:20:18 »

Наличие на клиентской машине ни каких доп.средств SQL Server не надо? Enterprise Manager или че-нить в этом роде?)
если ХР стоит, то ниче не надо. В ней уже все основные драйверы ADO есть, в частности для MS SQLServer
Записан
3JIou
Участник


Сказали спасибо: +0/-0
Offline

Сообщений: 55


« Ответ #5 : 07 Май 2008, 15:32:16 »

А что надо include чтобы TIniFile и *pIniFile были Не undefined? 

P.S. если делать через ShellExecute(Handle,"open","C:\\connect.udl",NULL,NULL,SW_SHOW);в OnFormCreate когда в ConnectionString написано File name="C:\\connect.udl" , то мастер открывается каждый раз (что логично) с настройками из файла connect.udl, но надо тыкать каждый раз ОК, что может испугать юзера. Как в этом случае лучше сделать проверку? Проверить длину файла, если не пустой -> мастер не вызываем?
Записан
oxotnik
Глобальный модератор


Сказали спасибо: +100/-15
Offline

Сообщений: 2425


« Ответ #6 : 07 Май 2008, 15:47:26 »

#include

по поводу ShellExecute:
делай проверку:
Код
if (!FileExist ("C:\\connect.udl")) ShellExecute(Handle,"open","C:\\connect.udl",NULL,NULL,SW_SHOW);
 
Записан
3JIou
Участник


Сказали спасибо: +0/-0
Offline

Сообщений: 55


« Ответ #7 : 07 Май 2008, 15:55:26 »

if (!FileExist ("C:\\connect.udl")) проверка на наличие файла...файл есть всегда, условие !FileExist ("C:\\connect.udl") всегда будет false...
Записан
oxotnik
Глобальный модератор


Сказали спасибо: +100/-15
Offline

Сообщений: 2425


« Ответ #8 : 07 Май 2008, 15:58:46 »

тогда по размеру файла... если пустой, то размер == 0
Записан
anton_ms
Участник


Сказали спасибо: +2/-0
Offline

Сообщений: 252


« Ответ #9 : 11 Июнь 2009, 07:16:22 »

https://cbuilder.ru/index.php/topic,487.0.html

я делал через ini файл, если его нет (прога запускается 1-й раз, тогда выводить мастер подключения)

Код
 
 TIniFile *pIniFile = new TIniFile(ExtractFilePath(Application->ExeName) + "connect.ini");
 AnsiString CS = pIniFile->ReadString("BASE CONNECTION", "CONNECTION STRING", "");
 delete pIniFile;
 ADOConnection1->Connected = false;
 if (CS.Length()< 10)
    {
      ADOConnection1->ConnectionString = "";
      CS = MainForm->ConnectDB();
    }
 
 ADOConnection1->ConnectionString = CS;
 ADOConnection1->Connected = true;
 
в OnFormCreate

Поднимаю старую тему..... Почему-то у моей формы нет ->ConnectDB();
В чем может быть проблема?
Записан
IT-IR
Участник


Сказали спасибо: +72/-22
Offline

Сообщений: 877

Плата за вход-Разум!


« Ответ #10 : 11 Июнь 2009, 08:45:36 »

и не  должно быть!
Это отдельная функция выделенная как метод объекта формы!
Записан
anton_ms
Участник


Сказали спасибо: +2/-0
Offline

Сообщений: 252


« Ответ #11 : 11 Июнь 2009, 09:12:11 »

Все понял, вопрос снят, проблема решена.
ЗЫ. Ох как с утра плохо голова работает ))
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  




....

Powered by SMF 1.1.21 | SMF © 2025, Simple Machines
Страница сгенерирована за 0.13 секунд. Запросов: 22.