我不知道这是否真的需要......但我想要编写尽可能健壮的代码,所以:
创建表时应使用什么SqlDbType
? SqlDbType.NChar
?或者 Unicode 表名会有问题吗?或者可能是 Var
类型之一,因为长度未知?我习惯于在数据库行而不是表的上下文中考虑这些类型,所以我不确定这里应该使用什么。
编辑
例如,一行:
sqlCommand.Parameters.Add(new SqlParameter(parameterName,SqlDbType.NChar){ Value = value });
用于CREATE TABLE
命令。
最佳答案
您不能参数化您的表名或列名或任何其他数据库对象。您只能参数化您的值。
您仍然使用字符串连接但是在我看来将表名作为输入太冒险了。您应该在将表名放入 SQL 之前对其执行非常严格的验证,或者将一组有效表名列入白名单,以避免 SQL Injection攻击。
除此之外,parameterized statements仅适用于DML Statements不是DDL statements .
关于c# - 创建表时应该使用什么SqlDbType?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30457554/