Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2009, 19:49   #1
Абдуллаев Рустам
Пользователь
 
Регистрация: 01.05.2009
Сообщений: 37
По умолчанию База в локальной сети(connectionstring)

Здравствуйте! У меня вот такой вопрос, может такой и был уже, но у меня немного
по-другому. В общем хочу сделать так чтобы база была доступна из приложения на
Delphi На другом компьютере, - локальная сеть. Сеть есть. Я думаю что принцип
состоит в том чтобы поменять connectionstring. В общем создал Opendialog
и допустим через него захожу и нахожу файл на другом компьютере, а потом этот
файл даже не знаю как использовать(Opendialog.filename).
Connectionstring когда работает в приложении имеет строку подключения:
Код:
Provider=MSDASQL.1;Persist Security Info=False;Data Source=My application;Extended Properties="DSN=My application;UID=;APP=Enterprise;WSID=1-45489A6584C24;DATABASE=inventory;Trusted_Connection=Yes";Initial Catalog=inventory
Естественно я делаю ее равным ='' и на форме через opendialog открываю
путь к файлу iiventory_data, но куда вставить этот путь в connectionstring
не имею понятия, а главное как это сделать с правильным синтаксисом.
Пробовал по-разному-не получается(Хотя бы на том же компьютере).
Помогите решить этот вопрос. Заранее спасибо!
mol4ok
Абдуллаев Рустам вне форума Ответить с цитированием
Старый 26.05.2009, 20:11   #2
5naip
Форумчанин
 
Аватар для 5naip
 
Регистрация: 05.10.2007
Сообщений: 536
По умолчанию

возможно,в вашей connectionstring это написано,но я не понял но к какой именно БД вы хотите подключиться?
rocklistener...
5naip вне форума Ответить с цитированием
Старый 26.05.2009, 22:18   #3
Абдуллаев Рустам
Пользователь
 
Регистрация: 01.05.2009
Сообщений: 37
По умолчанию

Цитата:
Сообщение от 5naip Посмотреть сообщение
возможно,в вашей connectionstring это написано,но я не понял но к какой именно БД вы хотите подключиться?
База данных на sql server 2000, приложение на delphi 7.
Да с этим стрингом все работает, но мне нужно чтобы он менялся и подстраивался, выбирался самим пользователем во время работы программы, например для другого компьютера, где стоит приложение, в приложении вначале выбрать тот компьютер где стоит база, а возможно и файл с базой, я сам не знаю, но предполагаю, и хочу спросить у тех, кто возможно знает, как с этим работать.
mol4ok
Абдуллаев Рустам вне форума Ответить с цитированием
Старый 27.05.2009, 04:11   #4
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

я использовал ODBC драйвер и подключался через него к удаленной бд в инете
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума Ответить с цитированием
Старый 27.05.2009, 06:31   #5
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

В uses пропиши ADOConEd. При необходимости сменить базу напиши EditConnectionString(ADOConnection1 ) и собственно все. При работе с SQL сервером не нужно париться о файлах БД. Это уже забота сервера (в общем случае).
Баламут вне форума Ответить с цитированием
Старый 27.05.2009, 16:00   #6
Абдуллаев Рустам
Пользователь
 
Регистрация: 01.05.2009
Сообщений: 37
По умолчанию

Цитата:
Сообщение от Баламут Посмотреть сообщение
В uses пропиши ADOConEd. При необходимости сменить базу напиши EditConnectionString(ADOConnection1 ) и собственно все. При работе с SQL сервером не нужно париться о файлах БД. Это уже забота сервера (в общем случае).
Не могли бы вы поподробнее написать как можно сменить строку подключения, т.е в connectionstring прописать путь к тому компьютеру, где лежит база. И представить хотя бы небольшой кусочек кода с EditConnectionString(ADOConnection1 ) просто незнаю как это может работать.
mol4ok
Абдуллаев Рустам вне форума Ответить с цитированием
Старый 27.05.2009, 18:05   #7
Dark_Spirit
Форумчанин
 
Аватар для Dark_Spirit
 
Регистрация: 05.02.2009
Сообщений: 324
По умолчанию

я вот тож столкнулся такой проблемой, пока решил её таким образом: создал файл настроек в котором прописал:
Provider=SQLOLEDB.1
Integrated Security=SSPI
Persist Security Info=False
Initial Catalog=<base_name>
Data Source=<comp_name>\<server_name>
и руками меняю в зависимости того на каком компе рассположен сервер и имя сервера
Тяжело быть бестолковым.....
Dark_Spirit вне форума Ответить с цитированием
Старый 28.05.2009, 00:28   #8
Абдуллаев Рустам
Пользователь
 
Регистрация: 01.05.2009
Сообщений: 37
По умолчанию

Я так понял, вы создаете отдельно файл, в котором прописываете постоянно путь. А как это реализовать?
Не могли бы вы прислать код? Заранее благодарен.
mol4ok
Абдуллаев Рустам вне форума Ответить с цитированием
Старый 28.05.2009, 01:52   #9
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Цитата:
Сообщение от Абдуллаев Рустам Посмотреть сообщение
Не могли бы вы поподробнее написать как можно сменить строку подключения...
Да все очень просто

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ADOConEd, DB, ADODB, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    ADOConnection1: TADOConnection;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  ADOConnection1.Connected := EditConnectionString(ADOConnection1);
{
  Все. Строка подключения получена и находится в нужном месте.
  Теперь можно сохранить ее например в обычном текстовом файле
  и использовать при следующем запуске программы.
}
end;

end.
Баламут вне форума Ответить с цитированием
Старый 28.05.2009, 09:53   #10
Dark_Spirit
Форумчанин
 
Аватар для Dark_Spirit
 
Регистрация: 05.02.2009
Сообщений: 324
По умолчанию

Цитата:
Я так понял, вы создаете отдельно файл, в котором прописываете постоянно путь. А как это реализовать?
правильно, вот только в файле прописываю не путь а имя базы (Initial Catalog=<base_name>) и сетевое имя компа и сервера (Data Source=<comp_name>\<server_name>)
вот полный пример файла:
Код:
[ConnectionString]
Provider=SQLOLEDB.1
Integrated Security=SSPI
Persist Security Info=False
Initial Catalog=db_reeltor
Data Source=comp-l\sqlexpress
имя файла: config.ini
пример использования в программе:
Код:
program reeltr;

uses
  Forms,
  inifiles,
  sysutils,
  dialogs,
  reeltor in 'reeltor.pas' {Form1},
  datmod in 'datmod.pas' {DM1: TDataModule},
  dbf in 'dbf.pas',
  Unit2 in 'Unit2.pas' {Form2},
  Unit3 in 'Unit3.pas' {Form3};

{$R *.res}
 var ini_file:Tinifile;
     path:string;
     s1,s2,s3,s4,s5:string;

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  path:=extractfilepath(application.ExeName);
  s1:='Provider=';
  s2:='Integrated Security=';
  s3:='Persist Security Info=';
  s4:='Initial Catalog=';
  s5:='Data Source=';
  try
   try
    ini_file:=Tinifile.Create(path+'config.ini');
    s1:=s1+ini_file.ReadString('ConnectionString',copy(s1,1,length(s1)-1),'');
    s2:=s2+ini_file.ReadString('ConnectionString',copy(s2,1,length(s2)-1),'');
    s3:=s3+ini_file.ReadString('ConnectionString',copy(s3,1,length(s3)-1),'');
    s4:=s4+ini_file.ReadString('ConnectionString',copy(s4,1,length(s4)-1),'');
    s5:=s5+ini_file.ReadString('ConnectionString',copy(s5,1,length(s5)-1),'');
   finally
   ini_file.Free;
  end;
  except
   showmessage('Не найден файл с настройками программы.'+#13+'Обратитесь к разработчику.');
   abort;
  end;
  Application.CreateForm(TDM1, DM1);
  try
   if dm1.ADOConnection1.Connected=true
    then dm1.ADOConnection1.Connected:=false;
   dm1.ADOConnection1.ConnectionString:=s1+';'+s2+';'+s3+';'+s4+';'+s5;
   dm1.ADOConnection1.Connected:=true;
   dm1.ADOConnection1.Open;
  except
  showmessage('Не удалось установить соединение с сервером!!!');
 end;
  Application.CreateForm(TForm3, Form3);
  Application.Run;
end.
Тяжело быть бестолковым.....
Dark_Spirit вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
эмуляция локальной сети Vasya Свободное общение 2 26.10.2007 19:27
Эмулятор локальной сети andrey4623 Софт 4 20.08.2007 19:58
Paradox в локальной сети Freedom БД в Delphi 8 28.11.2006 13:21