我正在开发一个接受用户输入的应用程序,在某些情况下直接将输入提供给SQL Server存储过程(通过参数化SqlCommand),在其他情况下,在执行SP之前通过一系列转换运行该输入
我正在使用SqlCommandBuilder.DeriveParameters
从数据库中获取参数列表,然后将这些参数的值指定为字符串。
到目前为止,我还没有找到一种方法来验证在执行SP之前可以将字符串解析为适当的SqlDbType。我希望有像
这样的东西parameter.SqlDbType.TryParse(inputValue);
但是这样的方法似乎不存在,因为SqlDBType只是一个枚举。到目前为止,我唯一的选择是执行SP并捕获所引发的任何错误,但这似乎并没有告诉我哪个参数导致了问题,所以我的用户不会被逗乐。
我知道我可以在SqlDbType上使用switch语句并自己验证输入,但这似乎是一个坏主意。
我已经尝试搜索SO以解决此问题,但相关问题似乎都围绕将字符串解析为SqlDbType枚举成员,而不是实际类型。我找到的最接近的是this,但唯一的答案是关于检查System.Type与任何SqlDbType值兼容。