ms sql 資料

  • 40858
  • 0
  • .Net
  • 2011-01-13

摘要:ms sql 資料

之前寫過一隻"資料結構匯出程式",
當時對ADO.Net還不是很熟(雖然現在也不是很熟,不過至少是比以前熟了點),
所以在取得資料結構是另外使用adodb的元件去取得!
在拼拼湊湊下總算是將程式拼出來了!
基本功能達到後,就一直丟著沒去管他,
後來有些朋友提了一些新的功能,
結果將他挖出來後,發現...當時寫的程式還真是難看...
(雖然現在也沒好到哪去...)
而且因為使用了adodb的元件,所以在發佈的時候都還要另外帶著adodb.dll
所以,現在決定重新開發...

這兩天找了一下ADO.Net取得資料結構的方式,
發現如果是使用OleDbConnection 的話,
可以直接用OleDbConnection裡面的function去取的資料結構

' vb.net code
Dim schemaTable As DataTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, "TABLE"})

但是如果是用SQLConnection的話,就沒這功能,
不過在ADO.Net 2.0就有這功能

//C# code
System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection("Data Source=.;initial catalog=Master;Integrated security=true");
con.Open();
System.Data.DataTable tbl=con.GetSchema("Databases");

可是我現在是用2003開發的,
所以沒法用ADO.Net 2.0 的功能,
因此只好從MSSQL 的系統資料表中找資料!
大致上,要取得資料結構,可以從下面幾個語法開始!!

-- 取得資料庫資訊
select * from INFORMATION_SCHEMA.schemata
-- 取得資料表與檢視資訊
SELECT * FROM Information_Schema.Tables
-- 取得檢視資訊
select * from INFORMATION_SCHEMA.VIEWS
-- 取得資料表與檢視的欄位資訊
select * from INFORMATION_SCHEMA.COLUMNS
-- 取得預存程序資訊
select * from INFORMATION_SCHEMA.ROUTINES

參考資料:
OleDbConnection.GetOleDbSchemaTable Method
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdataoledboledbconnectionclassgetoledbschematabletopic.asp

Schema and metadata retrieval using ADO.NET
http://www.simple-talk.com/2005/08/02/using-adonet/

How to get database schema
http://www.netomatix.com/DumpDbSchema.aspx

Getting database schema using ADO.NET
http://searchvb.techtarget.com/vsnetTip/1,293823,sid8_gci885470_tax293036,00.html