我不知道这是否真的需要......但我会喜欢写为尽可能强大的代码,所以:
创建表格时应使用哪些SqlDbType
? SqlDbType.NChar
?或者Unicode表名会有问题吗?或者也许是Var
类型中的一种,因为长度未知?我习惯在数据库行的上下文中考虑这些类型,而不是表,所以我不确定这里应该使用什么。
修改
例如,一行如下:
sqlCommand.Parameters.Add(new SqlParameter(parameterName,SqlDbType.NChar){ Value = value });
表示CREATE TABLE
命令。
答案 0 :(得分:2)
您无法参数化您的表名或列名或任何其他数据库对象。您只能 参数化您的值。
你可以仍然使用字符串连接但在我看来,将你的表名作为输入是太冒险了。在将表格放入SQL之前,您应该对表名执行非常严格的验证,或者使用一组列出白名单的有效表名,以避免SQL Injection次攻击。
除此之外,parameterized statements仅适用于DML Statements而非DDL statements。
答案 1 :(得分:1)
SQL Server中的所有对象名称都是sysname
数据类型。不知道SqlDbType是否包含sysname,但它在功能上与nvarchar(128)
相同,所以你可以使用它。