Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
3-1149574047
q-q
2006-06-06 10:07
2006.08.13
Используя ЗАБОЙ, полю присваивается NULL, а хотелось бы НОЛЬ


15-1153114284
Ega23
2006-07-17 09:31
2006.08.13
С Днём рождения! 11-14 июля


2-1153915713
WhiteCat
2006-07-26 16:08
2006.08.13
Не вносить запись в таблицу


3-1149584654
RomanH
2006-06-06 13:04
2006.08.13
Выгрузка PNG и PDF из BLOB а


15-1151308474
Анонимщики
2006-06-26 11:54
2006.08.13
Летний чемпионат сайта по шахматам





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский