我有一个项目,通过SMO从DataTable创建一个表到SQL表。
列的数据类型当前不会从System.Type转换为SMO.DataType。 我可以通过Case声明做到这一点,但我希望有一个更清洁的解决方案。也许是涉及TypeDescriptor.GetConverter(targetDataType)的东西。
这在System.types和SQL.DataTypes之间有效,但我无法将其转换为SMO.DataTypes。
有任何建议或提示吗?
TIA
答案 0 :(得分:0)
我最终使用Case语句来处理转换。工作正常。
答案 1 :(得分:-1)
public static SqlDbType MappingToSQLType(String CLRTypeName)
{
string[] t = CLRTypeName.Split('.');
for (int i = 0; i <= 31; i++)// there is 31 sqldatatypes
{
if (t[1].Equals("Int64") &&
((SqlDbType)i).ToString().ToLower().Equals("bigint"))
return ((SqlDbType)i);
else if (t[1].Equals("Int32") &&
((SqlDbType)i).ToString().ToLower().Equals("int"))
return ((SqlDbType)i);
else if (t[1].Equals("Int16") &&
((SqlDbType)i).ToString().ToLower().Equals("smallint"))
return ((SqlDbType)i);
else if (t[1].Equals("Boolean") &&
((SqlDbType)i).ToString().ToLower().Equals("bit"))
return ((SqlDbType)i);
else if (t[1].Equals("Double") &&
((SqlDbType)i).ToString().ToLower().Equals("float"))
return ((SqlDbType)i);
else if (t[1].Equals("Single") &&
((SqlDbType)i).ToString().ToLower().Equals("real"))
return ((SqlDbType)i);
else if (((SqlDbType)i).ToString().ToLower().Equals(t[1].ToLower()))
return ((SqlDbType)i);
}
return SqlDbType.NVarChar;
}