我在这里搜索并发现了一些与此问题有关的线索,但他们没有帮助我。我需要检查某个数据表中SQL列的类型并进行比较。所以假设我有一个名为“CustomerName”的列,这是SQL中的varchar。然后我想将它与字符串或其他“varchar”进行比较,并检查它是否匹配。例如,当我的列的类型为numeric且字符串的值为“varchar”时,它应该失败。我认为字符串的情况是个坏主意(例如,当我有varchar(50)并将其与“varchar”进行比较时)。有没有办法做到这一点?
SqlDataReader read = command.ExecuteReader();
while (read.Read())
{
for (int i = 0; i < read.FieldCount; i++)
{
Type dataType = read.GetFieldType(i);
if (dataType == typeof(int))
{
// Do for integers (INT, SMALLINT, BIGINT)
}
else if (dataType == typeof(double))
{
// Do for doubles (DOUBLE, DECIMAL)
}
else if (dataType == typeof(string))
{
// Do for Strings (VARCHAR, NVARCHAR)
}
else if (dataType == typeof(DateTime))
{
// Do for DateTime (DATETIME)
}
else if (dataType == typeof(byte[]))
{
// Do for Binary (BINARY, VARBINARY, NVARBINARY, IMAGE)
}
}
}
你可以尝试这样:
System.Type myType = reader.GetFieldType(value);
switch (myType.GetTypeCode(myType))
{
case TypeCode.String:
break;
// and so on ........
}