2009-11-12 21 views
5

iは(行[ "DATA_TYPE"] ==「INT場合、私は////getschema( "Columns")+戻り値のデータ型。

foreach (DataRow row in Columns.Rows) 
       if (row["TABLE_NAME"].ToString() == tableName) 
       { 
        if (fName == row["COLUMN_NAME"].ToString()) 
        { 
         //return Datatype 
         var x = row["DATA_TYPE"]; 
        } 
       } 

列 "DATA_TYPE" の文字列値を読み取ることによってdatattypeを返すために必要このコード

using (SqlConnection conn = new SqlConnection(ConnectionString)) 
        { 
         conn.Open(); 
         DataTable Databases = conn.GetSchema("Databases"); 
         DataTable Tables = conn.GetSchema("Tables"); 
         DataTable Columns = conn.GetSchema("Columns"); 
         conn.close(); 
        } 

を有します")どのようにvar xをDataType(Int) で設定するか、行[" DATA_TYPE "]にある名前でデータ型を取得する方法を教えてください。

Dictionary<string, Type> sqlToNetTypes; 

、あなたはコラム「DATA_TYPE」と自分の.NET同等で見つけることができるすべての可能なタイプを移入:

+0

どうすればいいですか? – Asma

+0

'row [" DATA_TYPE "] ==" int "'の場合、.NETのx型をintにしますか? '' varchar(n) '" - > 'string'などの場合...右ですか? – manji

+0

こんにちは、 ありがとう...........はい私が必要なもの......どうか教えてくださいね!! – Asma

答えて

4

ソリューションは、.NETタイプに対応付ける辞書SQL型を作成することです

Type GetNETType(string sqlType) 
{ 
    if(sqlToNetTypes.ContainsKey(sqlType)) 
    { 
     return sqlToNetTypes[sqlType]; 
    }else 
    { 
     return typeof(object); //generic type 
    } 
} 

とこのようにそれを使用します:ヘルパーメソッドで、その後

sqlToNetTypes.Add("int", typeof(int)); 
sqlToNetTypes.Add("varchar", typeof(sting)); 
sqlToNetTypes.Add("datetime", typeof(DateTime)); 
sqlToNetTypes.Add("bit", typeof(bool)); 
sqlToNetTypes.Add("numeric", typeof(float));//or double or decimal as you like... 
... 

foreach (DataRow row in Columns.Rows) 
    if (row["TABLE_NAME"].ToString() == tableName) 
    { 
     if (fName == row["COLUMN_NAME"].ToString()) 
     { 
      //return Datatype 
      var x = GetNETType(row["DATA_TYPE"]); 
     } 
    } 
+0

お返事ありがとうございました – Asma

+0

うれしいことです。 – manji