因為自己懶得安裝暴肥的 sql server 在本機上 , 偏偏 finereport 預設沒支援 localdb
只好研究看看有無連線 localdb 的方法 , 即使現在都 2023 了微軟的 jdbc 還是沒支援 localdb 真是無言
關於 localdb 請參考這篇 及 這篇
取得 localdb 資訊
首先入指令 SqlLocalDb info
1 | SqlLocalDb info |
接著輸入指令 SqlLocalDb info MSSQLLocalDb
1 | SqlLocalDb info MSSQLLocalDb |
所以可以得到以下 jdbc 連線字串
1 | jdbc:jtds:sqlserver://./YourDatabaseName;instance=LOCALDB#6F749DQQ;namedPipe=true |
jTDS jdbc 下載及設定
jTDS 1.3.2 載點
下載後解壓然後找到 jtds-1.3.2.jar
接著也解壓 META-INF\services\java.sql.Driver
找到這個文件用 notepad 開啟
把裡面的 Driver 名稱抄下來 net.sourceforge.jtds.jdbc.Driver
接著要把 jtds-1.3.2-dist\x64\SSO\ntlmauth.dll
這個丟到 finereport java home 裡面 , 位置在此 C:\FineReport_11.0\jre\bin
可以看到他的 java 是用 redhat 的 openjdk
1 | Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 |
這步驟沒做的話會噴這樣
1 | java.sql.SQLException: I/O Error: SSO Failed: Native SSPI library not loaded. Check the java.library.path system property. |
這個 dll 丟完以後記得重新啟動 finereport , 不然會沒 load 進去
finereport 驅動設定
參考 finereport 的 驅動管理
這裡要先修改 FineDB
裡面的設定 , 可以直接下載他提供的模板 finedb字段修改.cpt
然後填入 SystemConfig.driverUpload
true
即可
另外他這個模板的 FineDB
大小寫要注意下 , 我自己的環境是都小寫 , 記得要修改跟他一致
這個步驟做完後就可以在 驅動器
看到 自訂
這個選項 , 不然本來只有 預設
然後進入到管理後台 http://localhost:8075/webroot/decision
資料連結
=> 資料連結管理
=> 驅動管理
=> 新建驅動
=> localdb
=> 上傳檔案
=> jtds-1.3.2.jar
=> 驅動那欄填入 net.sourceforge.jtds.jdbc.Driver
新建資料連結
=> 其他
=> 其他 JDBC
資料連結名稱
=> localdb
驅動
=> 自訂
=> net.sourceforge.jtds.jdbc.Driver (localdb)
資料連結URL
=> jdbc:jtds:sqlserver://./YourDatabaseName;instance=LOCALDB#6F749DQQ;namedPipe=true
最後測試連線 , 然後神奇的事發生啦 , 連線成功! 到此就整個搞定