我有这个代码
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();
}我需要通过读取"DATA_TYPE“列中的字符串值来返回数据类型
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"];
}
}/if(row“DATA_TYPE”== "int")如何通过DataType (Int)设置var x,或者如何通过行“DATA_TYPE”中的名称获取数据类型??!!
发布于 2009-11-12 17:54:20
一种解决方案是创建一个将sql类型映射到.net类型的字典:
Dictionary<string, Type> sqlToNetTypes;并使用您可以在"DATA_TYPE“列中找到的所有可能的类型以及它们的.NET等效项填充它:
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...
...然后在helper方法中:
Type GetNETType(string sqlType)
{
if(sqlToNetTypes.ContainsKey(sqlType))
{
return sqlToNetTypes[sqlType];
}else
{
return typeof(object); //generic type
}
}并像这样使用它:
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"]);
}
}https://stackoverflow.com/questions/1720707
复制相似问题