Форум: "Базы";
Текущий архив: 2006.08.13;
Скачать: [xml.tar.bz2];
ВнизФормирование 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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.029 c