在C#中检查SQL列的类型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C#中检查SQL列的类型相关的知识,希望对你有一定的参考价值。
我在这里搜索并发现了一些与此问题有关的线索,但他们没有帮助我。我需要检查某个数据表中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 ........
}
以上是关于在C#中检查SQL列的类型的主要内容,如果未能解决你的问题,请参考以下文章
spark关于join后有重复列的问题(org.apache.spark.sql.AnalysisException: Reference '*' is ambiguous)(代码片段
检查列数据类型并仅对 Spark SQL 中的整数和小数执行 SQL