2013-01-11 59 views
1

可能重複:
How To Convert The DataTable Column type?如何改變類型的數據表列

我們怎樣才能改變數據表列的類型,如果表中已經有了價值?得到填補數據表後的

+1

我想你可以與一些做一個更多方式這個「SQL」代碼。 –

+0

添加一個新列,使用舊值更新(如果需要,使用某種轉換),然後刪除數據庫中或數據集中的舊列 – wxyz

+0

datatable? –

回答

10

更改數據類型是不可能的,但工作之一比比皆是,這是克隆的數據表和變革型

第一種方式

//clone datatable  
DataTable dtCloned = dt.Clone(); 
//change data type of column 
dtCloned.Columns[0].DataType = typeof(Int32); 
//import row to cloned datatable 
foreach (DataRow row in dt.Rows) 
{ 
    dtCloned.ImportRow(row); 
} 

第二種方式

和其他方式做它是這樣的,填充架構f IRST - 比變化列數據類型,比填確定年代

adapter.FillSchema(table, SchemaType.Source); 
table.Columns[0].DataType = typeof (Int32); 
adapter.Fill(table); 

第三條道路

做到這一點是

System.Data.DataTable dt = new System.Data.DataTable(); 
dt.Columns.Add("Col1", typeof(int)); 
dt.Rows.Add(1); 

System.Data.DataTable dt2 = new System.Data.DataTable(); 
dt2.Columns.Add("Col1", typeof(string)); 
dt2.Load(dt.CreateDataReader(), System.Data.LoadOption.OverwriteChanges); 
+0

值得一提的是,當我從數據庫獲取數據時,在填充DataTable之前,我已經設置了adapter.FillSchema,第二種方式適用於我的數據庫。類似於使用(OleDbDataAdapter dataAdapter = new OleDbDataAdapter(query,Con))的 dataAdapter.FillSchema(DataTable,SchemaType.Source); DataTable.Columns [9] .DataType = typeof(string); dataAdapter.Fill(DataTable); } –