首先,我是Java DB編程新手,所以也許我的方法是錯誤的。所以請記住這一點。現在的問題:如何檢查現有的數據庫是否匹配程序的格式
我的程序讓用戶打開一個現有的Java Derby數據庫。當它打開時,我想檢查數據庫是否包含正確的表,並且每個表都有正確的列 - 不僅僅是名稱,還有類型。到目前爲止,我試圖創建每個表,如果它拋出一個異常,那麼我知道表存在。現在我需要檢查列類型。最佳做法是什麼?硬編碼檢查每個列類型在catch塊中的回答爲here?
首先,我是Java DB編程新手,所以也許我的方法是錯誤的。所以請記住這一點。現在的問題:如何檢查現有的數據庫是否匹配程序的格式
我的程序讓用戶打開一個現有的Java Derby數據庫。當它打開時,我想檢查數據庫是否包含正確的表,並且每個表都有正確的列 - 不僅僅是名稱,還有類型。到目前爲止,我試圖創建每個表,如果它拋出一個異常,那麼我知道表存在。現在我需要檢查列類型。最佳做法是什麼?硬編碼檢查每個列類型在catch塊中的回答爲here?
如果你想弄清楚哪些表存在於數據庫中,並且每個表都有哪些列等,有(至少)兩個簡單的方法:
對問題的SQL查詢德比系統目錄,例如
select s.schemaname || '' || t.tablename
從sys.systables噸,sys.sysschemas小號
其中t.schemaid = s.schemaid 和t.tabletype = 'T' 爲了通過s.schemaname,t.tablename;
使用API由java.sql.DatabaseMetaData
提供,其方法如getSchemas()
,getTables()
,和getColumns()