我有一個DataTable對象並且可以訪問它的Columns集合。 對於這個集合中的每個項目,我需要確定列的類型並將其作爲以下字符串之一返回:'string''number''boolean''date''datetime''timeofday'。確定DataColumn是否僅爲日期
所以我這樣做如下:
foreach (DataColumn column in table.Columns) {
string colType = DermineColumnType(column);
}
. . . .
string DeterminColumnType(DataColumn column) {
Type sysType = column.DataType
if (sysType == typeof(Boolen)
return "boolean";
else if (sysType == typeof(Decimal) || sysType == typeof(Double) || sysType == typeof(Int32) ...)
return "number";
. . . . . .
else
return "string";
}
問題是與「日期」,「日期時間」和「一個timeofday的價值觀 - 我無法找到的DataColumn類的任何信息,讓我確定此列是否在數據庫表中定義爲「date」,「time」或「datetime」。 對於所有這些情況,DataColumn類的DataType屬性始終返回System.DateTime類型。 有沒有什麼辦法只基於DataColumn和/或DataTable對象獲取這些信息,而不執行額外的SQL語句?
展示你是如何獲取數據。你可能需要調用['.GetSchemaTable()'](http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.getschematable.aspx),但我們需要看看你是如何得到這個結果集肯定並告訴你如何得到模式。 –
它類似於以下內容: 'DataSet dataSet = new DataSet(); OleDbConnection conn = new OleDbConnection(); conn.ConnectionString = connectionString; conn.Open(); OleDbCommand command = new OleDbCommand(sql,conn); OleDbDataAdapter dbAdapter = new OleDbDataAdapter(command); dbAdapter.Fill(dataSet);' – DevGuy
And:是的,我們知道使用GetSchemaTable()或Connection.GetSchema()獲取每列的信息的可能性。我只是想知道是否有任何方法可以從DataColumn對象中獲取這些信息,而不需要額外的SQL請求(所有這些方法都會生成結果)。 不幸的是,這似乎是不可能的。我必須說這很奇怪。 – DevGuy