2012-03-15 20 views
5

正確に何が間違っているのか分かりませんが、誰かがそれを修正できますか?私はC#を使用してSQL Serverデータベースから取得した列の型を判断する必要があります。C#を使用してSQL Server列のデータ型を取得する

/* ... code .... */ 

System.Type type = rdr.GetFieldType(c); 

switch (Type.GetTypeCode(type)) 
{ 
    case TypeCode.DateTime: 
     break; 
    case TypeCode.String: 
     break; 
    default: break; 
} 

/* ... code .... */ 
+1

あなたは、コンテキストを使用していない理由があります:

SqlConnection cn = new SqlConnection("Sql Connection String"); SqlCommand cmd = new SqlCommand("SELECT * FROM [TableName]", cn); SqlDataReader rdr = cmd.ExecuteReader(); while (rdr.Read()) { for (int c = 0; c < rdr.VisibleFieldCount; c++) { System.Type type = rdr.GetFieldType(c); //So can I do this? (Pseudo-code) //switch(type) //{ //case string: //case int: //case DateTime: //etc. //} } } 
Mathieu

+0

はい。私はそれらが何であるか分からない。私が確認できるリンクがありますか? – ahmd0

+0

この関連する質問をチェックしてください:http://stackoverflow.com/questions/258840/how-should-i-get-started-learning-about-ado-net-entity-framework – Mathieu

答えて

10

あなたは次の操作を行うことができます

言って、私はこれを持っていますか?なぜLinqToSqlやEntity Frameworkを使用しないのですか?

+0

、おい。それは、2つのケースを除いて、機能します:ユニークIDENTIFIERデータ型とバイナリデータ型がある場合。 GuidとByte []でなければならないとき、どちらもObjectとして返されます。どのようにそれを処理するための任意のアイデア? – ahmd0

+0

値を解析する以外は、私はそれを回避する方法がわかりません... – xandercoded

+0

@ ahmd0: 'if(type == typeof(System.Guid))'などです。 – Guvante

関連する問題