【问题标题】:SQL Server data type compatibiltySQL Server 数据类型兼容性
【发布时间】:2011-10-26 16:14:18
【问题描述】:

有什么方法可以检查某些字符串是否与某些 MS SQL 类型兼容? 我将在将字符串插入数据库表之前对其进行验证。

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

【问题讨论】:

  • 您能详细说明您要解决的具体问题吗?
  • 你的意思是如果string 等于charvarcharnvarchartext 等?您打算对字符串进行哪种验证?
  • 您谈论 ADO.NET、EF 或为什么您标记为 C#?

标签: c# sql-server compatibility sqldatatypes


【解决方案1】:

如果我的解释正确,您输入的字符串是您想要存储在 SQL Server 数据库中的字符串,并且列将是不同的类型,例如 intfloatmoney。您想知道字符串是否会成功转换为适当的类型。

一种方法是使用parameterized query 将字符串作为参数简单地传递给SqlCommand,为您的参数设置适当的SQL 数据类型。当你使用不会转换的数据执行命令时,你会得到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
}

【讨论】:

    猜你喜欢
    • 2019-11-16
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多