2009-01-22 8 views
1

자이 썬 프로그램에서 데이터베이스에 연결할 수 없습니다. 순수 Java 프로그램을 연결할 수 있으며 자이 썬의 db에 연결할 수 있지만 JDBC-ODBC 브리지 ("sun.jdbc.odbc.JdbcOdbcDriver") 만 사용해야합니다. 네이티브 JDBC 드라이버를 사용하면 "driver not found"예외로 프로그램이 실패합니다.자이 썬에서 데이터베이스에 연결하는 방법

코드 :

import sys 
from com.ziclix.python.sql import zxJDBC 

connection1 = zxJDBC.connect('jdbc:odbc:test_odbc', 'postgres', 'postgres', 'sun.jdbc.odbc.JdbcOdbcDriver') 
print "JDBC:ODBC connection set" 
connection2 = zxJDBC.connect('jdbc:postgresql://127.0.0.1/test?stringtype=unspecified', 'postgres', 'postgres', 'org.postgresql.Driver') 
print "JDBC native connection set" 

출력 :

C:\tools\pyscripts\scripts\db_examples>jython --version 
Jython 2.5b1 (trunk:5903:5905, Jan 9 2009, 16:01:29) 
[Java HotSpot(TM) Client VM (Sun Microsystems Inc.)] on java1.6.0_11 

C:\tools\pyscripts\scripts\db_examples>jython pg_test.py 
JDBC:ODBC connection set 
Traceback (most recent call last): 
    File "pg_test.py", line 6, in <module> 
    connection2 = zxJDBC.connect('jdbc:postgresql://127.0.0.1/test?stringtype=un 
specified', 'postgres', 'postgres', 'org.postgresql.Driver') 
zxJDBC.DatabaseError: driver [org.postgresql.Driver] not found 

내가 네이티브 자바 프로그램이 기본 드라이버를 사용하여이 데이터베이스에 연결할 수 있지만 내 CLASSPATH가 올바르게 설정되어 있는지 생각합니다. 모든 JDBC 드라이버가 cachedir \ packages에 .pkc 파일을 가지고 있음을 발견했습니다.

데이터베이스 연결을 설정하려면 어떻게해야합니까?

답변

0

자이 썬 2.5b3에서 사라졌다. 1.5 대신 1.6 가상 머신을 사용하도록 OS X Leopard Java를 구성하자마자 문제는 마술처럼 사라졌습니다.

2

하루 동안이 문제로 고생하고 나자 마침내 해결책을 찾았습니다. zxJDBC, Class.forName, DriverManager 등으로 신경 쓰지 마세요. 직접 드라이버를 직접 인스턴스화하면됩니다.

import os 
import sys 
from java.util import Properties 

# add the jar to your classpath, then import it 
sys.path.append('/tmp/postgresql-8.4-701.jdbc4.jar') 
import org.postgresql.Driver as Driver 

props = Properties() 
props.put('user', 'u') 
props.put('password', 'p') 

conn = Driver().connect('jdbc:postgresql://127.0.0.1', props) 
관련 문제