创建表时应该使用什么SqlDbType?

时间:2015-05-26 11:42:39

标签: c# sql .net sql-server

我不知道这是否真的需要......但我喜欢写为尽可能强大的代码,所以:

创建表格时应使用哪些SqlDbTypeSqlDbType.NChar?或者Unicode表名会有问题吗?或者也许是Var类型中的一种,因为长度未知?我习惯在数据库行的上下文中考虑这些类型,而不是表,所以我不确定这里应该使用什么。

修改

例如,一行如下:

sqlCommand.Parameters.Add(new SqlParameter(parameterName,SqlDbType.NChar){ Value = value });

表示CREATE TABLE命令。

2 个答案:

答案 0 :(得分:2)

无法参数化您的表名或列名或任何其他数据库对象。您只能 参数化您的值。

你可以仍然使用字符串连接在我看来,将你的表名作为输入是太冒险了。在将表格放入SQL之前,您应该对表名执行非常严格的验证,或者使用一组列出白名单的有效表名,以避免SQL Injection次攻击。

除此之外,parameterized statements仅适用于DML Statements而非DDL statements

答案 1 :(得分:1)

SQL Server中的所有对象名称都是sysname数据类型。不知道SqlDbType是否包含sysname,但它在功能上与nvarchar(128)相同,所以你可以使用它。