日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

朝花夕拾:代码生成器的基础——获取数据源的架构信息

發布時間:2025/3/16 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 朝花夕拾:代码生成器的基础——获取数据源的架构信息 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  最近在做一個代碼生成工具,在制作的過程中,掌握了獲取數據源的架構信息,獲取數據源的架構信息是代碼生成工具的基礎。

  獲取數據源的架構信息,網上有不同的方法,但我覺得都太復雜了,其實在.Net上,要獲取數據源的架構信息是件非常容易的事情,只要使用Connection對象的GetSchema方法就可以了。下面以SqlConnection為例,使用的是Northwind數據庫。


DataTable table = connection.GetSchema();

以無參的形式調用GetSchema方法,此時將返回一個 DataTable,包含支持的架構集合列表和其它信息。

使用這些信息,可以通過GetSchema方法獲取特定的集合。如Users獲取數據庫的所有用戶,Procedures獲取數據庫的所有存儲過程等等。

以Tables為例,當傳入參數"Tables"(忽略大小寫的)調用GetSchema方法時


DataTable table = connection.GetSchema("Tables");

得到的數據列信息為

可以看到,TABLE_TYPE有兩種類型,BASE TABLE和VIEW,它把視圖也當成是表(不過再想想,視圖也確實屬于表的一種)。

那么如何讓它只返回表而包括視圖呢?這時就要使用到GetSchema的第三個參數了。

第三個參數的用法有點特別,現在我需要返回的是TABLE_TYPE的值為BASE TABLE的集合。因為TABLE_TYPE是第4列(從1開始),那么就需要創建一個大小至少為4的string數組,然后把第4位的值賦值為"BASE TABLE"。

Code
string[] res = new string[4];
res[
3] = "base table";
DataTable table
= connection.GetSchema("Tables", res);

從得到的結果中可以看到,這次把視圖過濾掉了。

下面是這個程序的完整代碼:

Program
class Program
{
static void Main(string[] args)
{
SqlConnection connection
= new SqlConnection();
connection.ConnectionString
= @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\SQL Server 2000 Sample Databases\NORTHWND.MDF;Integrated Security=True;Connect Timeout=30;User Instance=True";
connection.Open();
string[] res = new string[4];
res[
3] = "base table";
DataTable table
= connection.GetSchema("Tables", res);
foreach (DataRow row in table.Rows)
{
foreach (DataColumn col in table.Columns)
{
Console.Write(col.ColumnName
+ ":" + row[col] + "-");
}
Console.WriteLine();
Console.WriteLine();
}
Console.WriteLine();
Console.WriteLine();
Console.WriteLine();
Console.WriteLine();
foreach (DataColumn col in table.Columns)
{
foreach (DataRow row in table.Rows)
{
Console.WriteLine(col.ColumnName
+ ":" + row[col]);
}
Console.WriteLine();
Console.WriteLine();
}
Console.WriteLine();
Console.WriteLine();
foreach (DataColumn col in table.Columns)
{
Console.WriteLine(col.ColumnName);
}
connection.Close();
}
}

轉載于:https://www.cnblogs.com/reallypride/archive/2008/10/13/1310416.html

總結

以上是生活随笔為你收集整理的朝花夕拾:代码生成器的基础——获取数据源的架构信息的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。