Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
 Ошибка при подключении к БД Interbase через Java (Interclient)  [new]
Dr66
Member

Откуда:
Сообщений: 14
Добрый день.

Пытаюсь подключиться к БД Interbase через Java (Interclient).

К БД, в названии которых нет русских символов, подключается нормально, но если встречается БД, у которой в названии файла русские буквы, то вылетает ошибка:

java.sql.SQLException: [interclient][interbase]I/O error for file CreateFile (open)"D:/test/Артем.ibs"
[interclient][interbase]Error while trying to open file
null
	at interbase.interclient.Connection.remote_ATTACH_DATABASE(Unknown Source)
	at interbase.interclient.Connection.connect(Unknown Source)
	at interbase.interclient.Connection.<init>(Unknown Source)
	at interbase.interclient.Driver.connect(Unknown Source)
	at java.sql.DriverManager.getConnection(DriverManager.java:664)
	at java.sql.DriverManager.getConnection(DriverManager.java:208)
	at Main.loadData(Main.java:47)
	at Main.main(Main.java:20)


Чем это лечиться?
20 сен 17, 10:46    [20808171]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при подключении к БД Interbase через Java (Interclient)  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 22950
Dr66
Чем это лечиться?

Использованием путей без русских букв.
20 сен 17, 10:49    [20808185]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при подключении к БД Interbase через Java (Interclient)  [new]
Dr66
Member

Откуда:
Сообщений: 14
Много баз в разных папках уже создано с русскими названиями.
Нужно программно решить этот вопрос. Вручную большой пласт работы.
21 сен 17, 05:58    [20810759]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при подключении к БД Interbase через Java (Interclient)  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 22950
Dr66
Много баз в разных папках уже создано с русскими названиями.

То есть они как-то работали до сих пор?
21 сен 17, 09:06    [20810927]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при подключении к БД Interbase через Java (Interclient)  [new]
fraks
Member

Откуда: Новосибирск
Сообщений: 1141
IBExpert к FB2.5 где база с русскими буквами - коннектится нормально.

Алиасы в Interbase есть? Может через них попробовать скрыть кириллицу.
21 сен 17, 09:33    [20810990]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при подключении к БД Interbase через Java (Interclient)  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 26549
Dr66,

уточнил бы, какой InterBase и какой InterClient. С какой-то версии InterClient содран с JayBird от Firebird, и если он работает не через gds32.dll/ibclient64.dll, то могут быть проблемы с тем, как он передает имя файла БД на сервер.
21 сен 17, 10:23    [20811127]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при подключении к БД Interbase через Java (Interclient)  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 43631

Dr66
Много баз в разных папках уже создано с русскими названиями.
Нужно программно решить этот вопрос.

Получай короткий (8.3) путь к базе через GetShortPathName() и используй его. Короткий путь
не содержит русских букв. Другого пути... есть, но придётся поменять прокладку.

Posted via ActualForum NNTP Server 1.5

21 сен 17, 12:14    [20811748]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при подключении к БД Interbase через Java (Interclient)  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 26549
Dr66,

кстати, беру вот InterBase 2017, самую последнюю. В ИБЕ создаю D:/test/Артем.ibs. Создается прекрасно
(кстати, почему это расширение .ibs???).
Коннект проходит норм. Так что причина, видимо, именно в InterClient.
автор
То есть они как-то работали до сих пор?

видимо, раньше на Java ничего не писали.
fraks
Алиасы в Interbase есть?

нет. есть рероутинг по портам/инстансам, алиасов в понимании ФБ нет
http://docwiki.embarcadero.com/InterBase/2017/en/Automatic_Rerouting_of_Databases
21 сен 17, 16:18    [20812984]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при подключении к БД Interbase через Java (Interclient)  [new]
Dr66
Member

Откуда:
Сообщений: 14
По поводу версии интерклиента:
InterClientVersion=12.0.0
InterClient (InterBase JDBC driver) for JRE 1.6.

По поводу версий БД ничего сказать немогу... не знаю как посмотреть версию БД interbase файла.

Вот что я делаю:

1. Ищу все файлы нужного мне расширения и получаю абсолютный путь к файлу

public class FindFiles {


    private ArrayList<String> filesIbs = new ArrayList<>();


    public void start(String path) {

        filesIbs.clear();
        // просматриваем папку и подпапки
        findFile(path);

    }


    private void findFile (String path)
    {
            File folder = new File(path);

            // если выбранный элемент не читаем пропускаем все действия
            if (folder.canRead()) {

                // записываем все файлы и папки в массив
                File[] filesAndDirectory = folder.listFiles();
                // проходимся по массиву в поисках новых папок

                for (File i : filesAndDirectory) {
                    if (i.isFile()) {
                        if (i.getAbsolutePath().endsWith(".ibs") && !i.getAbsolutePath().contains("$"))
                            filesIbs.add(i.getAbsolutePath());
                    }
                    // если элемент i является папкой, то запускаем рекурсию
                    else
                        findFile(i.getAbsolutePath());
                }
            }
    }

    public ArrayList<String> getFilesIbs() {
        return filesIbs;
    }


}




2. Потом подключаюсь к каждому найденному файлу где path абсолютный путь

Connection connection = DriverManager.getConnection("jdbc:interbase://localhost/" + path,"SYSDBA", "masterkey");
Statement statement= connection.createStatement();


Dimitry Sibiryakov, как получить короткий путь?
22 сен 17, 13:36    [20815705]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при подключении к БД Interbase через Java (Interclient)  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 22950
Dr66
как получить короткий путь?

Настроить альясы.
22 сен 17, 13:51    [20815773]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при подключении к БД Interbase через Java (Interclient)  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 43631

Dr66
как получить короткий путь?

Какое слово из "через GetShortPathName()" ты не заметил?

Posted via ActualForum NNTP Server 1.5

22 сен 17, 14:04    [20815835]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при подключении к БД Interbase через Java (Interclient)  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 5570
Dr66
Dimitry Sibiryakov, как получить короткий путь?


Можно так:

http://dolf.trieschnigg.nl/eightpointthree/eightpointthree.html
22 сен 17, 14:34    [20816025]     Ответить | Цитировать Сообщить модератору
Все форумы / Firebird, InterBase Ответить