Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.12.06;
Скачать: [xml.tar.bz2];

Вниз

путь к базе Firebird   Найти похожие ветки 

 
d@nger   (2009-10-16 09:12) [0]

Здравствуйте! Недавно начал изучать FireBird. Хочу сделать при первом запуске приложения, чтобы программа просила указать путь к базе firebird, но путь к БД Firebird указывается в следующем формате "server:D:\base\base.fdb", а opendialog выдает путь "\\server\base\base.fdb". как можно привести получаемый путь к формату Firebird. В ручную обрабатывать путь что то не очень хочется... :(


 
RWolf ©   (2009-10-16 09:30) [1]

в общем случае — никак; выяснить, какому локальному пути на сервере соответствует сетевой ресурс, нельзя. И вообще, расшаривать базы — это неправильно.


 
Медвежонок Пятачок ©   (2009-10-16 09:32) [2]

а opendialog выдает путь "\\server\base\base.fdb". как можно привести получаемый путь к формату Firebird. В ручную обрабатывать путь что то не очень хочется... :(

а в ручную и не получится получить строку коннекта из \\server\base\base.fdb

потому что она вообще может не иметь никакого отношения к правильной даже если подправить ее начало


 
Медвежонок Пятачок ©   (2009-10-16 09:34) [3]

это неправильно.

Это скорее бесполезно и ничего не дает.
Ни ембеддед ни нормальный сервер (на другом хосте) с таким файлом работать не будет


 
d@nger   (2009-10-16 09:55) [4]


> И вообще, расшаривать базы — это неправильно.

как не расшаривая получить доступ к БД?


 
RWolf ©   (2009-10-16 10:03) [5]


> как не расшаривая получить доступ к БД?

доступ уже есть, по факту наличия запущенного сервера Firebird.


 
Медвежонок Пятачок ©   (2009-10-16 10:21) [6]

с файлом данных работаешь не ты, а север.
ты работаешь с сервером и доступ к файлу тебе не нужен.

/*ты же все равно не умеешь с ним работать и не знаешь как он устроен*/


 
Рамиль ©   (2009-10-16 10:28) [7]

Ну если так хочется, то можно только через системные шары. Пользователь должен быть админом на машине с базами.
т. е. сторока должна иметь вид \\server\X$\Base\base.fdb


Delete(ConSt, 1, 2);
ConSt[Pos("\", ConSt)] := ":";
ConSt[Pos("$", ConSt)] := ":";


Только незачем это делать.


 
Медвежонок Пятачок ©   (2009-10-16 10:33) [8]

т. е. сторока должна иметь вид \\server\X$\Base\base.fdb

В этом случае протокол будет совсем другой (не тсп)
И не факт что он поддерживается сервером или клиентом


 
Медвежонок Пятачок ©   (2009-10-16 10:34) [9]

Пользователь должен быть админом на машине с базами.

зачем?


 
Медвежонок Пятачок ©   (2009-10-16 10:39) [10]

кроме всего прочего есть большое подозрение, что сервер пошлет вас лесом с такой строкой (указывающей на шару, пусть даже на его локальном диске)


 
Рамиль ©   (2009-10-16 10:41) [11]


> В этом случае протокол будет совсем другой (не тсп)

Так я же код привел, который делает строку нормальной.

> зачем?

Не будет доступа к ресурсам C$, D$ и т. д.


 
Медвежонок Пятачок ©   (2009-10-16 10:46) [12]

Не будет доступа к ресурсам C$, D$ и т. д.

А он вообще зачем?
Процесс клиента никак не использует этот путь. Просто тупо передает еe серверу и все.


 
Медвежонок Пятачок ©   (2009-10-16 10:49) [13]

Так я же код привел, который делает строку нормальной.

1. Две палки спереди - протокол уже не tcp
2. Подставление имени диска с баксом перед именем шары - это гадание на кофейной гуще. Файл может лежать глубоко в дереве папок а имя шары ни о чем не говорит. Оно и не обязано совпадать с именем физической папки.


 
Рамиль ©   (2009-10-16 10:51) [14]

Вах.
Ну как еще написать то?
ConSt := "\\server\C$\Base\base.fdb";
Delete(ConSt, 1, 2);
ConSt[Pos("\", ConSt)] := ":";
ConSt[Pos("$", ConSt)] := ":";
fbDB.DatabaseName := ConSt;

А доступ, что бы получить этот путь с помошью OpenDialog.


 
Медвежонок Пятачок ©   (2009-10-16 10:53) [15]

то есть априори считается, что юзер, не знающий где лежит файл данных, все же знает имена всех дисков.
ну или перебирает их все в надежде попасть


 
d@nger   (2009-10-16 11:37) [16]

Не расшаривая базу можно подключить через алиас. Я прописал в файле aliases.conf на сервере путь к БД... теперь как мне прописать в Делфи подключение к этому алиасу?
пробовал так

 IBDatabase1.Params.Clear;
 IBDatabase1.LoginPrompt:=False;
 IBDatabase1.DatabaseName:="server:myalias";
 IBDatabase1.Params.Add("user_name=SYSDBA);
 IBDatabase1.Params.Add("password=masterkey");
 IBDatabase1.Params.Add("lc_ctype=WIN1252");
 IBDatabase1.Connected:=True;

не получилось..


 
RWolf ©   (2009-10-16 11:41) [17]

всё правильно; я бы поискал ошибку в aliases.conf.


 
d@nger   (2009-10-16 11:47) [18]

вот текст файла aliases.conf


#
# List of known database aliases
# ------------------------------
#
# Examples:
myalias = d:\base\base.fdb

#
вроде все правильно


 
turbouser ©   (2009-10-16 12:05) [19]

server:myalias


 
RWolf ©   (2009-10-16 12:06) [20]


> пробовал так  
> не получилось..

скопипастил, запустил — работает.


 
d@nger   (2009-10-16 12:08) [21]

обнаружил еще один способ подключения к БД
если кликнуть 2 раза по компоненту IBDatabase, и в редакторе указать Connections: Remote, Server : Servername, Протокол TCP, и путь к БД относительно сервера, то при нажатии на кнопку TEST подключение есть..., НО я не нашел как эти параметры указать программным путем... как это сделать?


 
RWolf ©   (2009-10-16 12:09) [22]

это тот же способ.


 
RWolf ©   (2009-10-16 12:09) [23]

это тот же способ.


 
d@nger   (2009-10-16 12:09) [24]


> скопипастил, запустил — работает.

может быть нужно firebird перезапустить? у меня кстати версия 2.1.3


 
turbouser ©   (2009-10-16 12:09) [25]

Как именно

> d@nger   (16.10.09 11:37) [16]

> не получилось..

?


 
RWolf ©   (2009-10-16 12:10) [26]

не надо перезапускать; достаточно вписать строчку
myalias = d:\base\base.fdb
в aliases.conf, алиас доступен сразу же.


 
d@nger   (2009-10-16 12:14) [27]

вобщем все... я разобрался... мое решение при регистрации базы просто сделать поле
Имя сервера:
Путь к БД относительно сервера:

затем эти 2 значения соединить и вуаля... все будет работать... и даже папку с базой расшаривать не надо...

спасибо всем....



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

Форум: "Начинающим";
Текущий архив: 2009.12.06;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.005 c
2-1255948890
VGK
2009-10-19 14:41
2009.12.06
Нужна помощь: получить все четырехзначные натуральные числа...


15-1254751574
pasha_golub
2009-10-05 18:06
2009.12.06
Хочу пример работы с istream в C++


15-1255081017
Alkid
2009-10-09 13:36
2009.12.06
Плагины-переводчики


15-1255088311
g11
2009-10-09 15:38
2009.12.06
Сведения в exe-файлах


15-1255128109
Kerk
2009-10-10 02:41
2009.12.06
Анна Потсар учит как правильно графоманить в интернете





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский