Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.13;
Скачать: CL | DM;

Вниз

Формирование ConnectionString при старте программы   Найти похожие ветки 

 
prisoner849 ©   (2006-06-01 16:37) [0]

Доброго времени суток!
Вопрос: подскажите, что нужно сделать, чтобы при старте программы формировалась ConnectionString и путь к базе брался из либо реестра, либо какого-нить *.cfg или *.ini.
Как работать с реестром и с файлами данного формата - знаю.
Получается, что при формировании строки и попытке подключиться к БД - выходит сообщение об ошибке... чччерт! уже вторую неделю с этим вожусь.
Помогите, плиз, хоть советом, хоть делом...
Заранее спасибо.


 
Johnmen ©   (2006-06-01 16:48) [1]


> выходит сообщение об ошибке... чччерт!


Первый раз вижу такое сообщение!


 
Rule ©   (2006-06-01 17:24) [2]

а что конкретно выходит ??? :-)))


 
prisoner849 ©   (2006-06-01 17:53) [3]

2 Johnmen
Неплохой орех может получиться...:)


 
AlexWlad ©   (2006-06-01 19:43) [4]

Пример для MS SQL, но думаю, разберешься.
AC_WF - TADOConnection.


procedure TDM_ProjVisa.DataModuleCreate(Sender: TObject);
Var
  ComputerName: array [0..100] of Char;
  Size: Cardinal;
  CName, Server, Base : String;
  fi: TIniFile;
begin
    fi := TIniFile.Create(ExtractFilePath(Application.EXEName)+"Arch.ini");
    Server := fi.ReadString("ProjVisa", "Server", "ERROR");
    Base   := fi.ReadString("ProjVisa", "WF_base", "ERROR");
    Size := SizeOf(ComputerName);
    GetComputerName(ComputerName, Size);
    CName := StrPas(ComputerName);
    AC_WF.Connected := False;
    AC_WF.ConnectionString := "Provider=SQLOLEDB.1;"+
                              "APP=WF_ProjVisa;"+
                              "Password=111;"+
                              "Persist Security Info=True;"+
                              "User ID=sa;"+
                              "Initial Catalog="+Base+";"+
                              "Data Source="+Server+";"+
                              "Use Procedure for Prepare=1;"+
                              "Auto Translate=True;"+
                              "Packet Size=4096;"+
                              "Workstation ID="+CName+";"+
                              "Use Encryption for Data=False;"+
                              "Tag with column collation when possible=False";
    AC_WF.Connected := True;
end;


 
Anatoly Podgoretsky ©   (2006-06-01 23:03) [5]

Rule ©   (01.06.06 17:24) [2]
Конкретно - черт


 
Галинка ©   (2006-06-01 23:32) [6]

У меня вот так:

procedure TZemlDM.Reconnect(MDBFileName:string);
begin
with ADOConnection1 do
 begin
  Close;
  LoginPrompt:=False;
  ConnectionString:="Provider=Microsoft.Jet.OLEDB.4.0;"+
                            "Data Source="+MDBFileName+
                            ";Mode=ReadWrite;"+
                            "Persist Security Info=False";
  KeepConnection:=true;
  Open;
 end;
end;


 
ЮЮ ©   (2006-06-02 03:32) [7]

Галинка ©   (01.06.06 23:32) [6]
У меня вот так:
     

Не... Выше - круче :)                    
  "Password=111;"                            
  "User ID=sa;"+


 
isasa ©   (2006-06-02 10:40) [8]

Из ini, конечно хорошо, но неплохо бы "уметь" динамически переподкльчаться к набору из самой программы.
А то, править ini, не очень элегантно.

Смотрим тут.

{$Delphi}\Source\Property Editors\AdoConEd.pas
function EditConnectionString(Component: TComponent): Boolean;
или тут
{$Delphi}\Source\Vcl\ADODB.pas
function PromptDataSource(ParentHandle: THandle; InitialString: WideString): WideString;


 
AlexWlad ©   (2006-06-02 18:58) [9]


> ЮЮ ©   (02.06.06 03:32) [7]


Ну дык пример же.


 
prisoner849 ©   (2006-06-04 02:03) [10]

Делаю так:

procedure TmdlMain.DataModuleCreate(Sender: TObject);
var
 IniChoice: TiniFile;
 ConnStr: widestring;
begin
 IniChoice:=TIniFile.Create(ChangeFileExt(Application.ExeName,".ini"));
   try
       ConnStr:=IniChoice.ReadString("ConnOptions","ConnSrting","");
     finally
       iniChoice.Free;
   end;
 mdlMain.mainConn.Connected := False;
 mdlMain.mainConn.ConnectionString := "Provider=Microsoft.Jet.OLEDB.4.0;"+
                                      "Password="";User ID=Admin;"+
                                      "Data Source="+ConnStr+";"+
                                      "Mode=Share Deny None;Extended Properties="";"+
                                      "Jet OLEDB:System database="";"+
                                      "Jet OLEDB:Registry Path="";"+
                                      "Jet OLEDB:Database Password="";"+
                                      "Jet OLEDB:Engine Type=5;"+
                                      "Jet OLEDB:Database Locking Mode=1;"+
                                      "Jet OLEDB:Global Partial Bulk Ops=2;"+
                                      "Jet OLEDB:Global Bulk Transactions=1;"+
                                      "Jet OLEDB:New Database Password="";"+
                                      "Jet OLEDB:Create System Database=False;"+
                                      "Jet OLEDB:Encrypt Database=False;"+
                                      "Jet OLEDB:Don""t Copy Locale on Compact=False;"+
                                      "Jet OLEDB:Compact Without Replica Repair=False;"+
                                      "Jet OLEDB:SFP=False";
 mdlMain.mainConn.Connected := True;
end;


при запуске выводи "Autentification failed" :(


 
eJack ©   (2006-06-04 06:45) [11]

www.connectionstrings.com
Там все найдешь !


 
sniknik ©   (2006-06-04 09:44) [12]

> при запуске выводи "Autentification failed" :(
это типа неверный логин/пароль... но у тебя это скорее всего от намешаной кучи абсолютно ненужных параметров в строке, ты знаеш что каждый означает/почему  используется и зачем именно ты его устанавливаеш?

достачно будет
mdlMain.mainConn.ConnectionString := "Provider=Microsoft.Jet.OLEDB.4.0;"+
                                                    "Data Source=+ConnStr+";"+
                                                    "Persist Security Info=False";

если идентификация не пройдет и по этой строке, то тогда у тебя база или юзер под паролем.


 
Галинка ©   (2006-06-05 23:43) [13]

А зачем нужны расширенные свойства?


 
sniknik ©   (2006-06-06 00:40) [14]

описаны в справке по конкретному OLE DB провайдеру, разние и для разного.
для jet описание в разделе "OLE DB Provider for Microsoft Jet" справки мсофиса ADO210.CHM.

причем не все они только для открытия конекта, есть например еще указываюшие тип/свойства новой базы создаваемой CompactDatabase... (т.е. эти и подобные в строке для подключения ну, как минимум лишние)



Страницы: 1 вся ветка

Текущий архив: 2006.08.13;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.04 c
2-1153511140
WhiteCat
2006-07-21 23:45
2006.08.13
Проклятый DBGrid


3-1149768298
fuckman
2006-06-08 16:04
2006.08.13
Ошибка "Multiple record found, but only one was expected"


15-1153159217
tesseract
2006-07-17 22:00
2006.08.13
в этот день


15-1153050877
novoalex
2006-07-16 15:54
2006.08.13
Ищю работу...


3-1149599458
VALUA
2006-06-06 17:10
2006.08.13
Копия формы