1. 程式人生 > >java 連線 firebird

java 連線 firebird

到這裡下載最新版的jaybird(fb的jdbc Driver)
http://www.firebirdsql.org/index.php?op=files&id=jaybird
它是4型別jdbc驅動,根本不需要odbc中轉,是效率最好的型別(具體見jdbc驅動型別說明)。而且它實現大部分jdbc2.0介面。

解壓後看看docs/faq.html,裡面有大多你想要的答案。

為扮裝高手幫助“懶人”,我就繼續羅嗦下去(多時候我討厭重複和教條,那像上年紀的老太婆,不過這次我鼓起勇氣和精神繼續寫吧)。。。

將jaybird-X.X.XJDK_X.X.zip(注意,它是zip非jar)解壓到任意目錄,將其中的jaybird-full-X.X.X.jar(對,它才是完整的驅動包!)拷貝到你的CLASS_PATH目錄中,然後在你的java程式碼裡連線你的資料庫吧

URL格式如下:
標準格式 jdbc:firebirdsql:[//host[:port]/]<database>
舊格式 jdbc:firebirdsql:[host[/port]:]<database>
jdbc例子:
Class.forName("org.firebirdsql.jdbc.FBDriver");
Connection conn = DriverManager.getConnection("jdbc:firebirdsql:localhost/3050:/firebird/test.gdb", "sysdba", "masterkey");

tomcat釋出方式:
#1 單應用使用firebird,將驅動拷貝到應用的WEB-INF/lib/裡;
#2 多應用使用firebird(全域性),將驅動拷貝到{$tomcat_install_dir}/common/lib/裡;
至此你可以在程式裡採用jdbc方式訪問你的資料庫了。但,多數時候,這樣有點土,你當然可以用jndi方式,如何定義jndi和使用它,請g-tomcat吧。我這裡給個結果:
<Resource name="jdbc/mydb" auth="Container"
 type="javax.sql.DataSource"
 driverClassName="org.firebirdsql.jdbc.FBDriver"
 url="jdbc:firebirdsql:localhost/3050:mydb" username="sysdba"
 password="masterkey" maxActive="20" maxIdle="10" maxWait="10000" />
spring裡
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
 <property name="jndiName" value
="java:comp/env/jdbc/mydb" />
</bean>

如果你一時衝動想切換到嵌入方式(既然用了webServer,還用嵌入方式fb,我也只能說是一時衝動了~~),那也是簡單的,
#1 把URL換成這個格式:
jdbc:firebirdsql:embedded:<database>
#2 把jaybird21.dll拷貝到windows/system32或在jvm啟動時加入-Djava.library.path=<jaybird21.dll所在目錄>引數
#3 確保你的PATH環境變數裡有你的fb嵌入式目錄,因為jaybird21.dll其實是fbembed.dll的代理


最後說說字元編碼:
假設你的資料庫編碼被定義成UTF-8,那麼你在windows下要小心中文亂碼問題,在linux下也可能會出現(多時候linux用utf-8編碼),這裡我就不羅嗦什麼大道理了。
server在windows下,你假設你啟動jvm按正常方式啟動(沒定義file.encoding引數),那麼你的資料庫URL應該是
jdbc:firebirdsql:[//host[:port]/]<database>?lc_ctype=gbk
但,由於fb目前對gbk支援不好,在你企圖錄入偏僻字時還是會出錯,為了避免這個問題,我一般連jvm的編碼也定義成utf-8(這樣lc_ctype可以不加,也可以lc_ctype=utf-8。當然這樣做你需要注意數

據錄入時中文編碼轉換,因為windows使用者的中文是gbk編碼的,需要轉到utf-8,這對java來說很容易,反之亦然,不清楚的g吧,這個問題超出本次討論,當然這裡也可能牽涉一個web常規中文亂碼問題

,請g),這就沒這個問題了,不過來了一個不大的問題,這樣的軟體不符合國標~~。