blogspot.com-GA4

星期二, 1月 20, 2009

ResultSetMetaData 動態抓取SQL中的欄位


rs = dbcon.executeQuery(sql);
// 取得 ResultSetMetaData 物件
ResultSetMetaData rsmd = rs.getMetaData();
// 用 for 回圈將資料集中的欄位依排列列出
for(int i = 1; i <= rsmd.getColumnCount(); i++) {
   out.println(rsmd.getColumnName(i));
}

for(int i = 1; rs.next(); i++) {
   // 用 for 回圈將資料集中對應的欄位名抓出對應的欄位值
   for(int j = 1; j <= rsmd.getColumnCount(); j++){
      out.println(rs.getString(rsmd.getColumnName(j)));
   }
}

SQL語法 in (xxxx) 會過濾掉 null 條件資料

今天發現在過濾
v_ST.GRAD_YEAR not in(' 0' ,'01','06','\\\\','sd')

用這個條件抓出來的筆數是 2290 筆
後來發現
這個條件過濾後,會將 v_ST.GRAD_YEAR is null 的資料過濾
但是 v_ST.GRAD_YEAR = '' 會抓到

v_ST.GRAD_YEAR not in(' 0' ,'01','06','\\\\','sd') OR v_ST.GRAD_YEAR is null)

如果你要查詢 null 以及其他條件時
仍然可以這樣子下

v_ST.GRAD_YEAR in(null,'')

星期三, 1月 07, 2009

[JODConverter]word轉pdf心得分享 (轉)

來源:javaworld

官方網站:
http://www.artofsolving.com/opensource/jodconverter

下載地點:
http://www.artofsolving.com/opensource/jodconverter
http://zh.openoffice.org/new/zh_tw/downloads.html

目前版本: JODConverter v2.2.1, OpenOffice v3.0.0

使用需求: JDK1.4以上, 安裝OpenOffice v2.0.3以上

基本簡介:

JODConverter主要的功能是用來做各種檔案的轉換. 目前測試過, Word,Excel,PowerPoint轉PDF都是沒問題的.

因為JODConverter是透過OpenOffice來做轉換, 所以使用前需要先安裝OpenOffice, 並且將OpenOffice的Service啟動, 才可以使用.


使用教學:
Step1: 安裝OpenOffice
Step2: 啟動OpenOffice Service

1 cd C:\Program Files\OpenOffice.org 3\program
2 soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard


Step3:將JODConverter的Jar檔放進專案中的Library, 請檢查你的專案是否包含以下的Jar檔:

jodconverter-2.2.1.jar
jurt-2.3.0.jar
xstream-1.2.2.jar
ridl-2.3.0.jar
commons-io-1.3.1.jar
juh-2.3.0.jar
slf4j-api-1.4.3.jar
unoil-2.3.0.jar
slf4j-jdk14-1.4.3.jar


Step4: 準備一個word檔放在c:/document.doc
Step5: 執行以下程式

import java.io.File;
import com.artofsolving.jodconverter.DocumentConverter;
import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;

public class JodDemo {
public static void main(String[] args) throws Exception {
File inputFile = new File("c:/document.doc");
File outputFile = new File("c:/document.pdf");
// connect to an OpenOffice.org instance running on port 8100
OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
connection.connect();
// convert
DocumentConverter converter = new OpenOfficeDocumentConverter(
connection);
converter.convert(inputFile, outputFile);
// close the connection
connection.disconnect();
}
}


程式說明:
程式的部份相當簡潔, 特別要注意的地方是第12行連線的port必須與你啟動OpenOffice的Port相同,
另外JODConverter預設是用副檔名作文件種類的判斷, 所以副檔名必須要正確才行.
如果副檔名比較特別的話, 就必須在convert()的時候強制指定Document Type.

心得:
JODConverter使用起來相當方便, 官網也提供War檔讓JODConverter變成Web Service提供給不同的語言來呼叫.
特別要注意的是, OpenOffice Service並不是ThreadSafe的, 多個Web AP在使用的時候必須要注意.

參考資料:
http://www.artofsolving.com/opensource/jodconverter

星期二, 1月 06, 2009

在FireFox中如欲遇到相同名稱的 input 類別時可以用 getElementsByName 處理

在FireFox中如欲遇到相同名稱的 input 類別時可以用 getElementsByName 處理
ex:
if (document.getElementsByName("pay_kind")[0].checked == false &&
document.getElementsByName("pay_kind")[1].checked == false &&
document.getElementsByName("pay_kind")[2].checked == false){
.....運算式
}