3일째 이것만 보고 있는데, 참 안되네요 ^^;;
제목과 Embedded Firebird와 Jaybird를 이용해서 Data를 조회하는 코드를 작성하고 있습니다.
Embedded로 시도하기 전에 서버로 먼저 테스트를 했습니다.
Firebird의 일반 패키지를 깔고, 테이블을 생성했고, 아래와 같은 코드로 조회를 했더니 정상동작 합니다.
public static void main(String[] args) throws Exception {
Connection conn = null;
Statement stmt = null;
ResultSet rset = null;
final String jdbcURL = "jdbc:firebirdsql:localhost/3050:C:/Shared/Database/TEST.FDB";
//final String jdbcURL = "jdbc:firebirdsql:embedded:C:\\Shared\\Database\\TEST.FDB";
final String qry = "SELECT * FROM TEST";
try{
Class.forName("org.firebirdsql.jdbc.FBDriver");
conn = DriverManager.getConnection(jdbcURL, "test", "test");
stmt = conn.createStatement();
rset = stmt.executeQuery(qry);
if(rset != null){
while(rset.next()) {
System.out.println("ID : "+rset.getString("ID"));
System.out.println("NAME : "+rset.getString("NAME"));
System.out.println("AGE : "+rset.getString("AGE"));
System.out.println("================");
}
}
}catch(Exception e){
e.printStackTrace();
}finally{
if(rset != null)try{ rset.close();}catch(Exception ig){}
if(stmt != null)try{ stmt.close();}catch(Exception ig){}
if(conn != null)try{ conn.close();}catch(Exception ig){}
}
}
그래서, Embedded로 동작하기 위해서 소스 가운데 부분에 주석처리 된 부분을 활성화 시키고
(final String jdbcURL = "jdbc:firebirdsql:embedded:C:\\Shared\\Database\\TEST.FDB"; 로 변경)
fbclient.dll, ib_util.dll, icu*.dll, firebird.conf, firebird.msg 파일을 적절한 폴더에 옮겨야 되는데,
Root Directory에 옮기라고 되어 있더라구요.
저는 이클립스 3.6 Helios를 쓰고 있고, 폴더 경로가 C:\workspace\TestJayBird 입니다.
해당 폴더 안에, src와 bin 폴더가 있습니다.
Root Directory가 Workspace 폴더를 말하는 것인지, src 폴더인지, bin 폴더인지 잘 모르겠습니다.
3곳에 다 넣고 테스트를 해봐도, conn = DriverManager.getConnection(jdbcURL, "test", "test"); 에서
하기와 같은 오류가 발생합니다.
java.lang.RuntimeException: Failed to initilize Jaybird native library. This is most likley due to a failure to load the firebird client library.
at org.firebirdsql.gds.impl.jni.JniGDSImpl.attemptToLoadAClientLibraryFromList(JniGDSImpl.java:100)
at org.firebirdsql.gds.impl.jni.EmbeddedGDSImpl.<init>(EmbeddedGDSImpl.java:31)
at org.firebirdsql.gds.impl.jni.EmbeddedGDSImpl.<init>(EmbeddedGDSImpl.java:21)
at org.firebirdsql.gds.impl.jni.EmbeddedGDSFactoryPlugin.getGDS(EmbeddedGDSFactoryPlugin.java:40)
at org.firebirdsql.gds.impl.GDSFactory.getGDSForType(GDSFactory.java:219)
제가 생각하기에는 설정 문제라고 생각이 되는데, 아무리 이거저거 변경을 해봐도 동작을 안하네요..
조언 좀 부탁 드리겠습니다. ㅠ.ㅠ
|