麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > 綜合 > 正文

GetSchemaTable

2024-07-21 02:52:37
字體:
來源:轉載
供稿:網友

當我們使用SqlDataReader的GetSchemaTable方法是,利用下列代碼打印表的結構

DataTable tb=reader.GetSchemaTable ();          foreach (DataRow dtrow in tb.Rows ){      foreach(DataColumn dtcol in tb.Columns ){       Console.Write ("/t"+ dtcol.ColumnName+"="+dtrow[dtcol] );      }      Console.Write ("/n");     } 

注意,該方法返回的并不是我們操作的數據表,而是一個描述列的元數據的一個結構表,類似下面的:

  列名稱列序號 列長度列類型(...) 
 第一列    
 第二列    

就是說返回的 table對象的 ROws屬性 是我們操作表的所有列的集合,而COLUMNS屬性是所有列特征的集合

這些列特征,稱為列的元數據,有下列一些字段

對于 GetSchemaTable 方法,將按以下順序返回關于每個列的元數據:

DataReader 列說明
ColumnName列的名稱;它可能不唯一。如果無法確定該名稱,則返回空值。此名稱始終反映最近對當前視圖或命令文本中的列進行的重命名。
ColumnOrdinal列的序號。它對于行的書簽列(如果有的話)為零。其他列從一開始編號。該列不能包含空值。
ColumnSize列中值的最大可能長度。對于采用固定長度數據類型的列,它是該數據類型的大小。
NumericPRecision如果 ProviderType 是數值數據類型,則它是列的最大精度。精度取決于列的定義。如果 ProviderType 不是數值數據類型,則它為空值。
NumericScale如果 ProviderType 是 DBTYPE_DECIMAL 或 DBTYPE_NUMERIC,則為小數點右側的位數。否則,它為空值。
IsUniquetrue:基表(BaseTableName 返回的表)中的任何兩行在該列中都不能有相同的值。如果此列本身為一個鍵,或如果有一個僅應用于該列的 UNIQUE 類型約束,那么 IsUnique 一定為 truefalse:在基表中該列可以包含重復值。該列的默認值為 false
IsKeytrue:此列是行集合中合起來可唯一地標識該行的一組列中的一列。IsKey 設置為 true 的一組列必須唯一地標識行集合中的一個行。不要求此列集是最小列集。這組列可以從基表主鍵、唯一約束或唯一索引生成。false:唯一地標識該行時不需要此列。
BaseServerNameSqlDataReader 使用的 Microsoft SQL Server 實例的名稱。
BaseCatalogName包含列的數據存儲區中的目錄的名稱。如果不能確定基目錄名稱,則為 NULL。該列的默認值為空值。
BaseColumnName數據存儲區中列的名稱。如果使用別名,它可能不同于在 ColumnName 列中返回的列名稱。如果無法確定基列名稱,或者如果行集合列從數據存儲區中的列導出但不等于該列,則為空值。該列的默認值為空值。
BaseSchemaName包含列的數據存儲區中的架構的名稱。如果無法確定基架構名稱,則為空值。該列的默認值為空值。
BaseTableName包含列的數據存儲區中的表或視圖的名稱。如果無法確定基表名稱,則為空值。該列的默認值為空值。
DataType映射到列的 .Net Framework 類型。
AllowDBNull如果使用者可以將此列設置為空值,或者如果提供者不能確定使用者是否可以將此列設置為空值,則設置該值。否則,不設置該值。即使列無法設置為空值,它仍可能包含空值。
ProviderType列的數據類型的指示符。如果不同行的列數據類型不同,則它必須為 Object。該列不能包含空值。
IsAliased如果列名稱為別名,則為 true;否則為 false
IsExpression如果此列為表達式,則為 true;否則為 false
IsIdentity如果此列為標識列,則為 true;否則為 false
IsAutoIncrementtrue:該列以固定的增量向新行賦值。false:該列不以固定的增量向新行賦值。該列的默認值為 false
IsRowVersion如果列包含無法寫入的不變的行標識符,并且除了標識行外沒有其他有意義的值,則設置該值。
IsHidden如果列是隱藏的,則為 true;否則為 false
IsLong如果列包含二進制長對象 (BLOB)(它包含非常長的數據),則設置該值。非常長的數據的定義針對于提供程序。
IsReadOnly如果不能修改該列,則為 true;否則為 false

注意   若要確保元數據列返回正確的信息,必須調用 behavior 參數設置為 KeyInfo 的  

 

==============例子==========================================

public   DataTable   GetTable(IDataReader   _reader)     {     DataTable   dataTable1   =   _reader.GetSchemaTable();     DataTable   dataTable2   =   new   DataTable();     string[]   arrayList   =   new   string[dataTable1.Rows.Count];     for   (int   i   =   0;   i   <   dataTable1.Rows.Count;   i++)     {     DataColumn   dataColumn   =   new   DataColumn();     if   (!dataTable2.Columns.Contains(dataTable1.Rows[i]["ColumnName"].ToString()))     {     dataColumn.ColumnName   =   dataTable1.Rows[i]["ColumnName"].ToString();     dataColumn.Unique   =   Convert.ToBoolean(dataTable1.Rows[i]["IsUnique"]);     dataColumn.AllowDBNull   =   Convert.ToBoolean(dataTable1.Rows[i]["AllowDBNull"]);     dataColumn.ReadOnly   =   Convert.ToBoolean(dataTable1.Rows[i]["IsReadOnly"]);     dataColumn.DataType   =   (Type)dataTable1.Rows[i]["DataType"];     arrayList[i]   =dataColumn.ColumnName;     dataTable2.Columns.Add(dataColumn);     }     }     dataTable2.BeginLoadData();     while   (_reader.Read())     {     DataRow   dataRow   =   dataTable2.NewRow();     for   (int   j   =   0;   j   <   arrayList.Length   ;   j++)     {     dataRow[arrayList[j]]   =   _reader[arrayList[j]];     }     dataTable2.Rows.Add(dataRow);     }     _reader.Close();     dataTable2.EndLoadData();     return   dataTable2;     }   


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲第一色婷婷 | 蜜桃视频观看麻豆 | www国产成人免费观看视频,深夜成人网 | 久草在线新视觉 | 欧美一级不卡视频 | 国产精品福利一区 | 91在线视频导航 | 国产精品一区在线免费观看 | 成人男女视频 | 欧美日韩高清一区 | 嫩草www| gogo全球大胆高清人露出91 | 国产亚洲精品久久久久5区 男人天堂免费 | 99re66热这里只有精品8 | 亚洲天堂中文字幕在线观看 | 国产黄色一区二区 | 91精品久久香蕉国产线看观看 | 操碰97| 欧美性黄 | 亚洲人片在线观看 | 视频一区二区中文字幕 | 操皮视频| 麻豆自拍偷拍视频 | 欧洲色阁中文字幕 | 在线成人看片 | 娇喘视频在线观看 | xx53xx| 99精品视频在线免费观看 | 亚洲精品 欧美 | 九九精品在线播放 | 国产精品一区二区三区99 | 欧美成年私人网站 | 毛片视频网址 | 免费黄色大片网站 | 九九黄色影院 | 视频一区二区不卡 | chinese xxxx hd pron8 tube | 午夜精品老牛av一区二区三区 | 深夜毛片免费看 | 欧美成人免费一级 | 午夜在线视频一区二区三区 |