Ich habe den folgenden Code in meinem JAVA-Programm, mit dem ich Daten aus einer Datei in meine Postgres-Datenbank kopieren kann:
%Vor%Dieser Code funktioniert einwandfrei, aber ich möchte einen Verbindungspool verwenden, um meine Verbindungen zu verwalten, da ich diesen Code für zahlreiche Dateien ausführen lasse. Also habe ich C3P0 benutzt.
%Vor%Wenn ich jedoch eine Verbindung vom obigen Verbindungspool herbekomme und versuche, sie mit dem CopyManager zu verwenden, wie im folgenden Beispiel, funktioniert der Code nicht
%Vor%Ich vermute, das Problem ist mit der Verbindung, aber ich kann nicht herausfinden, was es anders ist. Ich habe versucht, den Fehler mit SQLException und IOException abzufangen, aber es fängt auch nicht. Ist jemand diesem begegnet?
---- AKTUALISIERT ----
Danke an a_horse_with_no_name die Anleitung dazu. Der folgende Code funktionierte für mich
%Vor%Der Pool gibt Ihnen nicht die "native" Verbindung, er gibt immer ein Proxy-Objekt aus:
Aus dem Handbuch:
C3P0 umschließt diese Objekte hinter einem Proxies, sodass C3P0-zurückgegebene Connections oder Statements nicht in die herstellerspezifischen Implementierungsklassen umgewandelt werden können
Sie können den CopyManager wahrscheinlich nicht mit C3P0 verwenden. Ich bin mir nicht sicher, aber vielleicht können Sie die hier beschriebenen Problemumgehungen verwenden: Ссылка
Wenn das nicht funktioniert, können Sie einen anderen Verbindungspool verwenden (zB das neue Tomcat 7 JDBC-Pool ), mit dem Sie auf die zugrunde liegende native Verbindung zugreifen können.
Tags und Links java postgresql jdbc c3p0