2

DataTable オブジェクトがあり、その Columns コレクションにアクセスできます。このコレクションの各項目について、列の型を決定し、次のいずれかの文字列として返す必要があります: 'string' 'number' 'boolean' 'date' 'datetime' 'timeofday'.

だから私は次のようなことをします:

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";

}

問題は、'date'、'datetime'、および 'timeofday' の値にあります。DataColumn クラスに、この列がデータベース テーブルで単に "date"、"time"、または"日付時刻"。DataColumn クラスの DataType プロパティは、これらすべてのケースで常に System.DateTime 型を返します。追加の SQL ステートメントを実行せずに、DataColumn および/または DataTable オブジェクトのみに基づいてこの情報を取得する方法はありますか?

4

2 に答える 2

0

日付と時刻は、DataColumn の有効なデータ型ではありません。DateTime と TimeSpan は、日付/時刻に関連する唯一のデータ型です。

型だけでは Date か Time かを判断できないようです。DateTime オブジェクト内またはデータベースのデータを確認する必要があります。

詳細については、http: //msdn.microsoft.com/en-us/library/system.data.datacolumn.datatype.aspxを参照してください。

于 2013-10-02T05:01:05.987 に答える