Firebird データベースに接続してデータを取得する Java アプリケーションを作成しています。プログラムが完成し、私のコンピューターで問題なく動作します。問題は、アプリケーションを実行する必要があるコンピューターで、データベースがローカル ネットワーク内の別のコンピューターにあり、それを実行するために jaybird の接続文字列にどのパスを入力すればよいかわからないことです。少し説明させてください:
アプリケーションをコンピューター X で実行する必要がありますが、実際のデータベースはコンピューターのドライブではなく、ローカル ネットワークのコンピューターにあります。このようなもの (これは例であり、実際に動作させるために必要なサイトではなく、自宅で再現されています):
したがって、データベースのパスは次のようになります。
データベースがドライブ (たとえば、 C:\Users\john\Desktop ) にある場合、Jaybird を使用したデータベースへの接続は次のようになります。
static final String FB_DB_URL = "jdbc:firebirdsql://localhost:3050/C:\\Users\\john\\Desktop\\TEST1.FDB";
FB_connection = DriverManager.getConnection( FB_DB_URL , FB_USER , FB_PASS);
実際、それが私のコンピューターで動作させる方法でした。しかし、この場合、パスがどうあるべきかわかりません。私は次のようなものを試しました:
static final String FB_DB_URL = "jdbc:firebirdsql://192.168.0.101:3050/\\\\DESKTOP-1UFA09I\\Documents\\TEST1.FDB";
「192.168.0.101」は、データベースがあるコンピューターの ipv4 アドレスです。しかし、これにより、アプリケーションがデータベースを見つけることができなかったという例外が発生しました。これが解決策を見つけるのに最も近いと思いますが、運がありませんでした。追加情報:
両方のコンピューターはファイアウォールをオフにしており、互いに ping を送信できたので、実際には接続されています。
Firebird 2.5 と jaybird 2.2.1 を使用しています。
私も運が悪いので、次のことを試しました:
static final String FB_DB_URL = "jdbc:firebirdsql://192.168.0.101:3050/C:\\users\\john2\\Documents\\TEST1.FDB";
フォルダーは共有されています (少なくとも、私はそう思います)。これは、Windows 経由でフォルダーにアクセスでき、データベース ファイルがすべてのユーザーに読み取り/書き込みアクセス許可を与えるためです。
Firebird が両方の PC で実行されていることは確かです。
この問題の助けをいただければ幸いです。私が言ったように、アプリケーションは私のコンピューターのデータベースでうまく動作するので、問題はパスにあると確信しています。また、DB が保存されているコンピューターの IP を必要としない解決策を教えていただければ、それは素晴らしいことですが、とにかくその情報を取得できると思います。
編集
文書化の目的で、問題の解決策は次のとおりです。
データベースへのパスを作成する正しい方法は次のとおりです。
"jdbc:firebirdsql://192.168.0.101:3050/C:\\folder1\\folder2\\TEST1.FDB";
例外が発生したのは、明らかに、jaybird がusers
サーバー内のフォルダーにいくつかのアクセス許可の問題を抱えているためです。私の DB はdocuments
フォルダーにあるため、jaybird がアクセスしようとしたときに問題が発生していました。解決策は、DBを別のフォルダーに移動することですC://