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

标签 c# sql .net sql-server

我不知道这是否真的需要......但我想要编写尽可能健壮的代码,所以:

创建表时应使用什么SqlDbTypeSqlDbType.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/

相关文章:

c# - Xamarin 5.0 创建启动画面

c# - 我的页面不会显示我的多 View View

sql - 通过SQL更改Magento中的订单状态

c# - BDD SpecFlow 场景

c# - 尽管 UI 存在于 STAThread 中,为什么 Control.(Begin)Invoke 是必要的?

c# - 使用 Table-Per-Hierarchy 继承模型访问相关实体的影子属性

c# - 发出 IL 代码以加载十进制值

mysql - 在 MySQL 表上正确使用连接

sql - 如何将 PostgreSQL 行扩展为多行以更新 "custom fields"?

c# - 通过套接字发送自定义 WCF 请求