最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c# 獲取數(shù)據(jù)庫中所有表名稱的方法

 更新時間:2010年02月08日 10:05:26   作者:  
在很多情況下我們需要將指定的數(shù)據(jù)庫中的所有表都列出來。在使用c#進(jìn)行軟件開發(fā)時,我們有哪些方法可是實現(xiàn)這個目的呢?本人對此進(jìn)行概要的總結(jié),有以下6中方式可以實現(xiàn)這個目的。
1、sqldmo
SQLDMO是操作SQLServer的理想的方式,如果您的數(shù)據(jù)庫是SQLServer就可以考慮使用這種方式。在C#中使用SQLDMO需要添加SQLDMO的引用,然后在當(dāng)前的文件中using SQLDMO;即可以使用SQLDMO。SQLDMO的對象模型大家可以在SQLServer的幫助中獲得。
復(fù)制代碼 代碼如下:

private void GetTabels_DMO(string strServerName,string strUser,string strPWD,string strDatabase)
{
SQLDMO.SQLServer Server = new SQLDMO.SQLServerClass();
//連接到服務(wù)器
Server.Connect(strServerName,strUser,strPWD);
//對所有的數(shù)據(jù)庫遍歷,獲得指定數(shù)據(jù)庫
for(int i=0;i<Server.Databases.Count;i++)
{
//判斷當(dāng)前數(shù)據(jù)庫是否是指定數(shù)據(jù)庫
if(Server.Databases.Item(i+1,"dbo").Name ==strDatabase)
{
//獲得指定數(shù)據(jù)庫
SQLDMO._Database db= Server.Databases.Item(i+1,"dbo");
//獲得指定數(shù)據(jù)庫中的所有表
for(int j=0;j<db.Tables.Count;j++)
{
MessageBox.Show(db.Tables.Item(j+1,"dbo").Name);
}
}
}
}

2、adox
adox是ado Extensions for DDL and Security,是微軟對ADO技術(shù)的擴(kuò)展,使用它我們可以操作數(shù)據(jù)庫的結(jié)構(gòu)。它是一個COM組件,估計以后在ADO.NET中會增加ADOX的一些功能。如果大家需要ADOX的一些資料,我可以提供。下面的一個例子就是使用ADOX來獲得當(dāng)前數(shù)據(jù)庫的所有表。
復(fù)制代碼 代碼如下:

private void GetTables_ADOX()
{
//ADO的數(shù)據(jù)庫連接
ADODB.ConnectionClass cn=new ADODB.ConnectionClass();
string ConnectionString="Provider=SQLOLEDB.1;Integrated Security=SSPI;Initial Catalog=Test;Data Source=HBXP";
cn.Open(ConnectionString,"sa","",0);
//操作ADOX的Catalog對象
CatalogClass cat=new CatalogClass();
cat.ActiveConnection=cn;
for(int i=0;i<cat.Tables.Count;i++)
{
MessageBox.Show(cat.Tables[i].Name);
}
}

注意:在上面的代碼中cat.ActiveConnection不能是ADO.Net中的Connection,而應(yīng)該是ADO的Connection。
3、ado.net中的oledbconnection
在c#中我們首先會考慮使用ado.net來解決問題,如果沒有方法才會考慮使用adox或者sqldmo來解決這個問題。雖然adox和sqldmo也能夠解決這個問題,但是他們畢竟是com組件,在.net中使用起來和在非.net平臺會有一些差異,不是很順手。下面的示例就顯示了在ado.net中的oledbconnection的方法getoledbschematable來獲得數(shù)據(jù)庫的架構(gòu)。大家可以在msdn中看到這個方法的說明:
public DataTable GetOleDbSchemaTable(
Guid schema,
object[] restrictions);
參數(shù)
schema
OleDbSchemaGuid 的值之一,它指定要返回的架構(gòu)表。
restrictions
限制值的 Object 數(shù)組。這些值按照限制列的順序來應(yīng)用。即,第一個限制值應(yīng)用于第一個限制列,第二個限制值應(yīng)用于第二個限制列,依此類推。
返回值
包含請求的架構(gòu)信息的 DataTable。
更多的信息大家可以查詢MSDN,下面將示例如何實現(xiàn)。
復(fù)制代碼 代碼如下:

private void GetTables_ADONET()
{
//處理OleDbConnection
string mailto:strConnectionString=@%22Integrated Security=SSPI;Data Source=HBXP;Initial Catalog=Test;Provider=SQLOLEDB.1";
OleDbConnection cn=new OleDbConnection(strConnectionString);
cn.Open();
//利用OleDbConnection的GetOleDbSchemaTable來獲得數(shù)據(jù)庫的結(jié)構(gòu)
DataTable dt = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object[] {null, null, null, "TABLE"});
foreach (DataRow dr in dt.Rows)
{
MessageBox.Show((String)dr["TABLE_NAME"]);
}
}

4、信息架構(gòu)視圖
信息架構(gòu)視圖是sql-92 標(biāo)準(zhǔn)中定義的架構(gòu)視圖,這些視圖獨立于系統(tǒng)表。信息架構(gòu)視圖的最大優(yōu)點是,即使我們對系統(tǒng)表進(jìn)行了重要的修改,應(yīng)用程序也可以正常地使用這些視圖進(jìn)行訪問。下面的示例使用信息架構(gòu)視圖來工作。
復(fù)制代碼 代碼如下:

private void GetTables_INFORMATION_SCHEMA()
{
//打開連接
string strConnectionString=System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];
sqlcn=new SqlConnection(strConnectionString);
sqlcn.Open();
//使用信息架構(gòu)視圖
SqlCommand sqlcmd=new SqlCommand("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'",sqlcn);
SqlDataReader dr=sqlcmd.ExecuteReader();
while(dr.Read())
{
MessageBox.Show(dr.GetString(0));
}
}

5、使用系統(tǒng)表
如果您的數(shù)據(jù)庫系統(tǒng)是sqlserver,就可以使用如下的方式來獲得當(dāng)前數(shù)據(jù)庫的所有表:
復(fù)制代碼 代碼如下:

private void GetTables_SystemTable()
{
//打開連接
string strConnectionString=System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];
sqlcn=new SqlConnection(strConnectionString);
sqlcn.Open();
//使用信息架構(gòu)視圖
SqlCommand sqlcmd=new SqlCommand("SELECT OBJECT_NAME (id) FROM sysobjects WHERE xtype = 'U' AND OBJECTPROPERTY (id, 'IsMSShipped') = 0",sqlcn);
SqlDataReader dr=sqlcmd.ExecuteReader();
while(dr.Read())
{
MessageBox.Show(dr.GetString(0));
}
}

6、使用sqlserver的存儲過程“sp_tables”
下面是“盛國軍”朋友提出的使用存儲過程的方法的補充代碼。
復(fù)制代碼 代碼如下:

public void GetTables_StoredProcedure()
{
//處理OleDbConnection
string mailto:strConnectionString=@%22Integrated Security=SSPI;Data Source=HBXP;Initial Catalog=Test;Provider=SQLOLEDB.1";
OleDbConnection cn=new OleDbConnection(strConnectionString);
cn.Open();
//執(zhí)行存儲過程
OleDbCommand cmd=new OleDbCommand("sp_tables",cn);
cmd.CommandType=CommandType.StoredProcedure;
OleDbDataReader dr=cmd.ExecuteReader();
while(dr.Read())
{
MessageBox.Show(dr["TABLE_NAME"].ToString());
}
}

相關(guān)文章

  • C#實現(xiàn)學(xué)生成績管理系統(tǒng)

    C#實現(xiàn)學(xué)生成績管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C#實現(xiàn)學(xué)生成績管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C#壓縮和解壓文件的兩種方法

    C#壓縮和解壓文件的兩種方法

    在C#中,我們可以使用內(nèi)置的System.IO命名空間下的幾個類來處理文件的壓縮和解壓縮,主要涉及到兩個常用的庫:System.IO.Compression和WinRAR,以下是使用這些類進(jìn)行文件壓縮和解壓縮的基本步驟,需要的朋友可以參考下
    2024-08-08
  • 一些C#常見面試題目以及答案總結(jié)

    一些C#常見面試題目以及答案總結(jié)

    這篇文章主要介紹了C#常見面試題目以及答案的相關(guān)資料,分別是C#編程語言中的委托、多線程、事件、異常處理、異步編程、LINQ、內(nèi)存管理、圖像處理、內(nèi)存管理、設(shè)計模式等概念和實現(xiàn)方法,需要的朋友可以參考下
    2025-03-03
  • C#中Lambda表達(dá)式的用法

    C#中Lambda表達(dá)式的用法

    這篇文章介紹了C#中Lambda表達(dá)式的用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • .NET中的async和await關(guān)鍵字使用及Task異步調(diào)用實例

    .NET中的async和await關(guān)鍵字使用及Task異步調(diào)用實例

    這篇文章主要介紹了.NET中的async和await關(guān)鍵字使用及Task異步調(diào)用實例,本文還包含了取消執(zhí)行和顯示進(jìn)度的例子,需要的朋友可以參考下
    2014-07-07
  • C# webservice接口編寫、發(fā)布與測試

    C# webservice接口編寫、發(fā)布與測試

    這篇文章主要介紹了C# webservice接口編寫、發(fā)布與測試,文章通過圖文結(jié)合的方式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或共組有一定的幫助,需要的朋友可以參考下
    2024-07-07
  • unity實現(xiàn)文字滾動效果

    unity實現(xiàn)文字滾動效果

    這篇文章主要為大家詳細(xì)介紹了unity實現(xiàn)文字滾動效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • C#使用RichTextBox實現(xiàn)替換文字及改變字體顏色功能示例

    C#使用RichTextBox實現(xiàn)替換文字及改變字體顏色功能示例

    這篇文章主要介紹了C#使用RichTextBox實現(xiàn)替換文字及改變字體顏色功能,結(jié)合實例形式洗了C#中RichTextBox組件文字替換及改變字體顏色相關(guān)操作技巧,需要的朋友可以參考下
    2019-02-02
  • C#獲取本機(jī)IP地址(ipv4)

    C#獲取本機(jī)IP地址(ipv4)

    本文主要介紹了C#獲取本機(jī)所有IP地址的方法、C#獲取本機(jī)IP地址(ipv4)的方法等。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • C# 字符串按 ASCII碼 排序的方法

    C# 字符串按 ASCII碼 排序的方法

    這篇文章主要介紹了C# 字符串按 ASCII碼 排序的方法,需要的朋友可以參考下
    2017-04-04

最新評論

新闻| 织金县| 高陵县| 哈密市| 舞钢市| 凤庆县| 芜湖市| 杭州市| 孝昌县| 左贡县| 嘉荫县| 华亭县| 中卫市| 玛多县| 平遥县| 儋州市| 芦山县| 惠安县| 永康市| 银川市| 高要市| 昌图县| 大名县| 兴化市| 曲靖市| 牡丹江市| 湖北省| 锦屏县| 杭锦旗| 措美县| 济宁市| 方城县| 平陆县| 通海县| 札达县| 贵定县| 宁陵县| 永善县| 迁西县| 红原县| 浦江县|