Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Соединение с базой.


Автор: ACMilian 25.9.2006, 16:43
Помогите, пожалуйста.
Нужно: сбросить программу на машину вместе с ini-файлом. При запуске этой
 проги, всплывает Оracle Logon, и в нём две строки для ввода username и
 password. Как при помощи ini-файла, определять, что открывается база данных
под таким-то именем и нужно вводить такой пароль и своё имя?(может не корректно
поставил вопрос, т.к. никогда с этим не сталкивался и не знаю даже с чего
начать)
или ссылку где про это можно прочитать. 

Автор: Rodman 25.9.2006, 16:54
Может это в ини файле есть... если он не большой выложи...

Автор: ACMilian 25.9.2006, 17:08
Извиняюсь не дописал...ini-файл я должен сам написать, как я понимаю.

Автор: Rodman 25.9.2006, 18:26
ну если 
Цитата(ACMilian @  25.9.2006,  16:43 Найти цитируемый пост)
 всплывает Оracle Logon
 - это твоя програ, то ты можешь считать данные из ини-файла и загнать их в эдиты...

Автор: ACMilian 25.9.2006, 20:04
ну я даже не знаю с чего там начинать...может подскажете, где про это можно почиатать?

Автор: Fedia 26.9.2006, 03:32
Цитата(ACMilian @  25.9.2006,  20:04 Найти цитируемый пост)
ну я даже не знаю с чего там начинать...может подскажете, где про это можно почиатать?

Программа твоя ?
Какой компонент используется для подключения к БД ?
Есть ли у этого компонента  свойство LoginPrompt ? Если есть, то установи его в значение false, так как возможно сообщение появляется из-за него.
А http://www.excode.ru/?mod=article&id=text&artid=189&action=showart&page=2&ex=8c1aba3e821d9bb05c908394ddbd3ce0 файл стоит использовать для сохранения текущих параметров подключения к БД, и для загрузки этих параметров при последующем запуске программы.

Автор: kobra 26.9.2006, 08:27
я так делаю, может пригадится?
Код

procedure TFMain.ANewConnectionStringExecute(Sender: TObject);
begin
  Connection.Close;
  if EditConnectionString(Connection) then
  begin
    Ini.WriteString('ConnectionString', 'ConnectionString', Connection.ConnectionString);
    Application.MessageBox('sdf', 'sdrgsd', 0);
    Application.Terminate;
  end;
end;

procedure TFMain.TntFormCreate(Sender: TObject);
begin
  Ini:= TIniFile.Create(ExtractFilePath(Application.ExeName) + 'HR.ini');
  Connection.Close;
  Connection.ConnectionString := Ini.ReadString('ConnectionString', 'ConnectionString', '');
  if Connection.ConnectionString = '' then
  begin
    if EditConnectionString(Connection) then
      Ini.WriteString('ConnectionString', 'ConnectionString', Connection.ConnectionString);
  end;
  if POS('Persist Security Info=True', Connection.ConnectionString) > 0 then
    Connection.LoginPrompt := False
  else
  begin
    if POS('Integrated Security=SSPI', Connection.ConnectionString) > 0 then
      Connection.LoginPrompt := False
    else
      Connection.LoginPrompt := True;
  end;
  Connection.Open;
  FMain.WindowState := wsMaximized;
  ActivateKeyboardLayout(LoadKeyboardLayout('00020437', 0), 0);
end;



Добавлено @ 08:28 
да, я ползуюс ADO

Автор: ACMilian 26.9.2006, 08:59
Программу мне дали для доработки.
Ну там, в datamodule есть OracleSession и OracleLogon. На ско-ко я понимаю
связь идёт через них.
LoginPrompt у этих компонентов вроде нет.
 ini файл мне надо написать(его сейчас нет или я не там ищу).
Надо чтобы было так, когда эту программу сбросить на другую машину:
запускаешь exe. Появляется OracleLogon с полями username и password(ещё 
есть поле Database, где можно выбирать базы, но надо, чтобы этого поля 
не было и автоматически соединение с этой базой происходило). Вводишь 
свой пароль и имя, тогда соединение происходит, если не правильно, то 
соединения нет. И чтобы всё это с ini файла узнавало, какой машине и 
какому пользователю надо имя и пароль вводить.   

Автор: Rodman 26.9.2006, 10:55
Смотри... если это твое приложение, то

при первой загрузке пусть пользователь введет логин и пароль и ти
Код

procedure TForm2.BitBtn1Click(Sender: TObject);
var t: TStringList;
begin
  t:=TStringList.Create;
  t.Add(Edit1.text);
  t.Add(Edit2.TExt);
  t.SavetoFile('My.ini');
end;


а при следующей загрузке

Код

procedure TForm2.FormActivate(Sender: TObject);
var t: TStringList;
begin
  if(FileExist('My.ini'))then
  begin
    t:=TStringList.Create;
    t.LoadFromFile('My.ini');
    Edit1.text:=t.String[0];
    Edit2.text:=t.String[1];
    BitBtn1.Click;
  end;
end;

и оно само начнет конектится...

Автор: ACMilian 26.9.2006, 12:00
У меня возник, ещё один очень глупый вопрос:А куда этот код вставлять?
Если в OracleLogon, то я даже подобраться к ниму не могу...
поясните, пожалуйста.

Автор: Rodman 26.9.2006, 13:05
Ну вооще то в OracleLogon

Автор: ACMilian 26.9.2006, 13:23
При незапущеной проге. Когда я открываю datamodule, там эти компоненты OracleSession1,OracleLogon1, OracleDataSetы, OracleQuery.
Вот я нажимаю левой клавишей на OracleLogon, то выскакивает 
эта форма, когда правой нажимаю, то меню там Logon..., ChangePassword...,  и так далее...Но куда код вставлять я не понимаю smile 

Автор: Fedia 27.9.2006, 00:08
Цитата(Rodman @  26.9.2006,  10:55 Найти цитируемый пост)
Смотри... если это твое приложение, топри первой загрузке пусть пользователь введет логин и пароль и ти

Для работы с ini файлами есть специальный класс TIniFile. Пример работы с ним в ссылке, которую я привел выше.
Сохранять данные в ini-файл лучше либо при закрытии программы, либо после вводе новых параметров подключения в БД. А загружать данные из ini нужно перед подключением к БД.

Автор: ACMilian 27.9.2006, 13:20
Всем спасибо. Работает.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)