C# SQL Server数据类型兼容性

C# SQL Server数据类型兼容性,c#,sql-server,compatibility,sqldatatypes,C#,Sql Server,Compatibility,Sqldatatypes,有没有办法检查某些字符串是否与某些MS SQL类型兼容? 在将字符串插入数据库中的表之前,我将对其进行验证 编辑:我正在寻找一种方法来检查某些字符串是否与varchar、char、bit等兼容。如果我正确地解释了这一点,您将输入作为字符串存储在SQL Server数据库中,并且列的类型将不同,如int、float和money。您想知道字符串是否会成功转换为适当的类型 一种方法是使用为参数设置适当的SQL数据类型,将字符串作为参数传递给SqlCommand。当您使用无法转换的数据执行命令时,您将获

有没有办法检查某些字符串是否与某些MS SQL类型兼容? 在将字符串插入数据库中的表之前,我将对其进行验证


编辑:我正在寻找一种方法来检查某些字符串是否与varchar、char、bit等兼容。

如果我正确地解释了这一点,您将输入作为字符串存储在SQL Server数据库中,并且列的类型将不同,如
int
float
money
。您想知道字符串是否会成功转换为适当的类型

一种方法是使用为参数设置适当的SQL数据类型,将字符串作为参数传递给
SqlCommand
。当您使用无法转换的数据执行命令时,您将获得
FormatExceptions

更明确地说,您可以尝试使用适当的SQL数据类型解析字符串。如果转换失败,它还将抛出
FormatException

即使您解析字符串,我仍然建议使用带有
SqlCommand
的参数化SQL查询,或者更好的是,使用强类型ORM层式实体框架。EF会自动将SQL类型映射到.Net类型,因此,如果您试图将不兼容的值分配给实体的某个属性,则会自动进行数据类型验证

用于分析SQL数据类型的代码:

try 
{
    // throws FormatExcpetion
    System.Data.SqlTypes.SqlInt16 i = System.Data.SqlTypes.SqlInt16.Parse("test"); 
}
catch (FormatException)
{
    // handle it
}

try 
{
    // i will be set to 10
    System.Data.SqlTypes.SqlInt16 i = System.Data.SqlTypes.SqlInt16.Parse("10"); 
}
catch (FormatException)
{
    // handle it
}

如果我正确地解释了这一点,您将输入作为字符串存储在SQL Server数据库中,列的类型将不同,如
int
float
money
。您想知道字符串是否会成功转换为适当的类型

一种方法是使用为参数设置适当的SQL数据类型,将字符串作为参数传递给
SqlCommand
。当您使用无法转换的数据执行命令时,您将获得
FormatExceptions

更明确地说,您可以尝试使用适当的SQL数据类型解析字符串。如果转换失败,它还将抛出
FormatException

即使您解析字符串,我仍然建议使用带有
SqlCommand
的参数化SQL查询,或者更好的是,使用强类型ORM层式实体框架。EF会自动将SQL类型映射到.Net类型,因此,如果您试图将不兼容的值分配给实体的某个属性,则会自动进行数据类型验证

用于分析SQL数据类型的代码:

try 
{
    // throws FormatExcpetion
    System.Data.SqlTypes.SqlInt16 i = System.Data.SqlTypes.SqlInt16.Parse("test"); 
}
catch (FormatException)
{
    // handle it
}

try 
{
    // i will be set to 10
    System.Data.SqlTypes.SqlInt16 i = System.Data.SqlTypes.SqlInt16.Parse("10"); 
}
catch (FormatException)
{
    // handle it
}

你能详细说明你要解决的具体问题吗?你是说如果
string
等同于
char
varchar
nvarchar
text
,等等?您计划对字符串进行什么样的验证?您谈论ADO.NET、EF或为什么标记为C#?您能否详细说明您试图解决的具体问题?您的意思是如果
string
等同于
char
varchar
nvarchar
text
,等等?您计划对字符串进行什么样的验证?您谈论的是ADO.NET、EF或为什么标记为C#?