2012-05-04 8 views
2

我需要從結構上看點從SQL Server檢索信息我需要檢索SQL Server對象在Java中

例如:我需要列出所有的數據庫,所有的程序,從程序的所有參數,所有列名從表中,列表中的列類型。

如何做到這一點?

感謝

回答

3

有(至少)三種方式。

  1. 使用DatabaseMetaData類。這裏有很多,所以詳情請參閱Java文檔。我相信這是首選的方式,因爲它是所有數據庫引擎的標準。因此,如果切換到不同的數據庫引擎,它仍然可以工作,並且無論您正在使用此數據庫引擎還是其他數據庫引擎,您將瞭解如何使用它。

  2. 查詢「information_schema」。基本上這是一個包含數據庫結構信息的數據庫。它有列出所有表格,所有列等的表格。這是第二好的選擇。 information_schema在數據庫中或多或少是標準的。不幸的是,MS SQL Server的實現並不是最好的。

  3. 查詢「系統表」和/或「系統視圖」。 MS SQL Server中有一組表格,其中包含有關數據庫結構的信息。與information_schema類似,但它是特定於MS SQL Server的,因此包含不屬於標準SQL的組件的元數據,例如計算字段和標識列。它比MS的information_schema實現更完整和可靠。

對於真正通用的東西,喜歡什麼表是在數據庫或者是在一個給定的表,INFORMATION_SCHEMA和系統表同樣好的,有用哪些列。但是,如果您需要其他任何東西,MS的information_schema實施很快證明是不夠的。我在網上看到很多評論,鼓勵開發者使用系統表而不是information_schema。我不喜歡使用非標準的東西,因爲代碼本身和獲得的經驗都不是可移植的,但在這種情況下,我認爲它們是正確的:使用系統表。

但DatabaseMetaData更好,如果它給你你所需要的。

+0

這是完美的。 – Sweet