在.NET/SQL 中参数化表名?

2024-02-10

正如主题所示,我希望能够使用 .NET(实际上使用哪种语言)和 SQL Server 将表名作为参数传递。

我知道如何为价值观做到这一点,例如command.Parameters.AddWithValue("whatever", whatever) using @whatever在查询中表示参数。问题是我现在的情况是希望能够对查询的其他部分(例如列名和表名)执行此操作。

这不是一种理想的情况,但这是我必须使用的情况,它不太容易发生 SQL 注入,因为只有使用代码的人才能设置这些表名称,而最终用户不能。然而它很混乱。

那么,我所问的可能吗?

编辑:为了清楚地说明 SQL 注入的要点,表名仅通过源代码传入,具体取决于情况。这是由开发者指定的。无论如何,开发人员都可以访问数据库层,所以我问的原因并不是为了安全,而是为了使代码更干净。


您不能直接参数化表名称。您可以通过以下方式间接完成sp_ExecuteSQL,但您也可以用 C# 构建(参数化)TSQL(连接表名但不连接其他值)并将其作为命令发送下来。您获得相同的安全模型(即您需要显式 SELECT 等,并假设它未签名等)。

另外 - 请务必将表名称列入白名单。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在.NET/SQL 中参数化表名? 的相关文章

  • SQL 更新 - 更新选定的行

    我正在使用 SQL Server 2008 我有一个名为MYTABLE有两列 ID STATUS 我想编写一个存储过程来返回其记录STATUS是 0 但是这个存储过程必须更新STATUS返回行数为 1 如何在单个查询中执行此选择和更新操作
  • 从列表中选择项目以求和

    我有一个包含数值的项目列表 我需要使用这些项目求和 我需要你的帮助来构建这样的算法 下面是一个用 C 编写的示例 描述了我的问题 int sum 21 List
  • 是否可以引用同一个表中的不同列?

    如果博客有一个 类别 表 如下所示 CREATE TABLE categories id INTEGER PRIMARY KEY AUTO INCREMENT parent id INTEGER NOT NULL name VARCHAR
  • 函数的变量存储在哪里?在堆栈或堆上?

    当程序调用函数时 为该函数中的变量分配哪种类型的数据结构内存 堆还是栈 为什么 在我看来 它应该存储在堆栈上 因为它们不一定是引用类型 但在我读到答案的地方 据说它们存储在堆上 并在函数返回值后释放 它比这更复杂一点 事实上使用堆栈和堆实际
  • 空 catch 与 try-catch 语句中的“catch Exception”相同吗?

    try catch Exception 我可以写吗 try catch 这在 C NET 3 5 中可以吗 代码看起来更好 但我不知道是否相同 他们是not一样的 catch Exception 将仅捕获托管异常 catch 也会捕获非 C
  • 如何将位写入文件?

    如何使用 c net 将位 而不是字节 写入文件 我很坚持它 Edit 我正在寻找一种不同的方法 将每 8 位写为一个字节 一次可以写入的最小数据量是一个字节 如果您需要写入单独的位值 例如 二进制格式需要 1 位标志 3 位整数和 4 位
  • ConcurrentBag 中可能存在内存泄漏吗?

    我一直在研究新的并发集合 特别是 ConcurrentBag 引起了我的注意 由于 ConcurrentBag 在每个单独的线程上内部保存一个本地集 使用它来跟踪项目 这意味着当线程本身超出范围时 ConcurrentBag 仍将在内存中引
  • SQL 按 IN 子句中的元素排序

    我有一个ITEM表 我想返回按 IN 子句中通知的相同顺序排序的结果 这些 ID 由用户告知 今天我有这个 SELECT FROM ITEM WHERE ITEM ID IN 45 2 671 6 ORDER BY CASE ITEM ID
  • 类库的 app.config 中的绑定重定向有什么作用吗?

    我经常使用的 VS 解决方案包括单个可执行项目 控制台应用程序 网络应用程序 和许多类库项目这些都被可执行文件引用 使用 NuGet 并安装包时 经常会出现app config为每个项目创建的文件 通常只包含合并引用程序集版本的绑定重定向列
  • 尝试从 Linux 通过 ODBC 连接到 SQL Server 2014 时出现错误代码 0x2746 (10054)

    Ubuntu 22 04 1 LTS pyodbc 4 0 35 OpenSSL 3 0 2 15 Mar 2022 Library OpenSSL 3 0 2 15 Mar 2022 遵循的步骤安装适用于 SQL Server Linux
  • Windows 每秒进行一次线程切换的频率是多少? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions Windows 通常 每秒进行一次线
  • 如何将逗号分隔的列值与另一个表作为行连接

    我试图通过首先转换我正在成功执行的 SupplierId 列中的逗号分隔值来连接两个表 然而 当我尝试通过外键 DCLink 加入另一个带有供应商名称的表 Vendors 时 问题就出现了 这就是我的意思 原始表的 select 语句 SE
  • Oracle SQL 分析查询 - 类似递归电子表格的运行总计

    我有以下数据 由A值 排序依据MM 月 The B列计算为GREATEST current value of A previous value of B 0 以类似电子表格的方式 我怎样才能计算B使用 SQL 查询 我尝试使用分析函数 但未
  • 在 MySQL 中将值设置为 NULL

    我想要一个值被设置为NULL如果我提交的表单中的文本框中没有输入任何内容 我怎样才能做到这一点 我试过插入 NULL 但这只是添加了这个词NULL进入现场 我不确定我应该为此提供什么代码 我只是编写一个 UPDATE 查询 不要放NULL更
  • 在 SQL Server 中选择 XML 元素

    我有一些 XML 需要使用 SQL Server 2008 进行解析 我想我已经接近得到我想要的了 但是我没有正确的语法 我相信 我有以下内容 DECLARE doc XML SET doc
  • 在查询中创建临时变量

    我希望能够在查询中创建一个临时变量 而不是存储过程或函数 它不需要声明和设置 这样我在调用它时就不需要传递查询参数 正在努力朝这个方向努力 Select field1 tempvariable 2 2 newlycreatedfield t
  • 如何为二进制格式化程序创建 SerializationBinder,以处理类型从一个程序集和命名空间到另一个程序集和命名空间的移动

    上下文如下 我想通过将代码移动到不同的项目来重构代码 其中一些代码包含可序列化的 DTO 用于 跨多个端点发送和接收数据 如果我移动代码 序列化就会中断 因此它不是 向后兼容我的应用程序的旧版本 这个问题的一个解决方案是 Serializa
  • 如果字符串包含数字,则仅返回字符串中的数字

    例如 字符串是abc123CD需要找到一种只读方法numbers在字符串中i e select a postgres function abc123CD Result 123 My try select substring abc123CD
  • 批量插入,asp.net

    我需要获取与会员相对应的 ID 号列表 在任何给定时间处理的数量可能在 10 到 10 000 之间 我可以毫无问题地收集数据 解析数据并将其加载到 DataTable 或任何内容 C 中 但我想在数据库中执行一些操作 将所有这些数据插入表
  • 使用 ActiveRecord 和 Yii2 记录实际的 SQL 查询?

    我正在这样做 students Student find gt all return this gt render process array students gt students 然后在视图中 foreach students as

随机推荐

  • 打瞌睡模式处理

    我正在开发一个应用程序 它使用 AlarmManager 在后台生成一些服务 时机对于我们的应用程序非常重要 并且功能不能等待下一个维护窗口的发生 要求用户将应用程序列入白名单不是问题 但不能解决暂停警报的问题 此外 电池消耗也不是一个大问
  • 有没有办法将 Facebook Presto 0.131 与 Cassandra 3.0.0 一起使用?

    使用 Presto 0 131 查询 Cassandra 3 0 0 集群时 我得到 所有尝试查询的主机均失败 snip InvalidQueryException 未配置的表 schema keyspaces 我认为这是由于 Cassan
  • 在 sqlalchemy 中使用 postgresql JSON 类型的列表

    我正在使用金字塔与 sqlalchemy pyramid tm 和 postgresql 来测试这一点 DBSession scoped session sessionmaker extension ZopeTransactionExten
  • XSLT 3.0 流式传输(撒克逊)

    我有一个很大的 XML 文件 6 GB 其中包含这种树
  • 如何在 MAC OSX 中拆分 sql?

    有没有适用于Mac的应用程序可以分割sql文件甚至脚本 我有一个大文件 必须将其上传到不支持超过 8 MB 的文件的主机 我没有 SSH 访问权限 你可以使用这个 http www ozerov de bigdump http www oz
  • 更改查询字符串中的单个变量值[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我得到了一
  • 预加载多个音频文件

    我的网页上有一个音频控件 我希望用它来根据页面的状态播放多个非常短的音频文件 我不想在播放文件时加载它们 如何在页面加载时加载所有这些文件 这是我正在做的事情的粗略想法 http jsfiddle net L0c9ccx9 20 http
  • 如何从 JSP 运行 shell?

    我的问题是不言自明的 我想使用按钮从 JSP 运行一个 shell 即调用一个过程 程序是 CREATE OR REPLACE PROCEDURE DEMO PRC dist IN variable mrno IN variable yr
  • 使用增强赋值将字符串添加到列表

    gt gt gt b gt gt gt c 1234 gt gt gt b c gt gt gt b 1 2 3 4 gt gt gt 这里发生了什么 这应该行不通 对吧 或者我错过了一些明显的东西 gt gt gt b gt gt gt
  • MongoDB 更新嵌套数组中的字段

    MongoDB 更新嵌套数组中的字段 如何将 播放 设置为 播放照片 photos array 我只知道它的 id id ObjectId 4f41a5c7c32810e404000000 albums id ObjectId 4f545d
  • 如何在 Docker 上发布 UDP 端口?

    如何将 UDP 端口从 Docker 容器转发到主机 使用 p 标志并添加 udp端口号的后缀 p 53160 53160 udp 完整命令 sudo docker run p 53160 53160 p 53160 53160 udp p
  • Spring Boot 始终使用相同的配置文件

    我正在使用 spring boot 1 5 2 并使用配置文件 但我发现了一个非常奇怪的事情 my spring boot resources folder like this application yml 中的配置 spring pro
  • 如何在 AFNetworking 2.0 中设置请求超时和缓存策略?

    我正在遵循给定的示例代码 AFHTTPRequestOperationManager manager AFHTTPRequestOperationManager manager manager GET http example com re
  • Azure Functions - 监视器 - 我可以恢复旧视图吗?

    在 Azure Functions 中 Azure 门户中的监视器视图已更改为显示 配置应用程序洞察 如何恢复旧的简单视图 第二次更新 2 x 运行时不会将日志 由 ILogger 提供 发送到使用的表Azure WebJobs Dashb
  • 如何从文件中删除 xml 元素?

    在 XML 文件中 例如
  • 使用 javascript 验证 MVC3 中的表单

    我只需要一个验证示例 剩下的我会做 假设我有一个文本类型的输入 p p
  • 如何在Eclipse中制作只读编辑器(Eclipse插件开发)

    我想知道如何制作一个真正只读的 Eclipse 编辑器 我的编辑器扩展了文本编辑器 所以当我重新实现方法时是可编辑的总是回来false 这是最简单的方法 可以防止用户在编辑器中打开的文档中键入或删除任何内容 但您仍然可以更改文档的内容 例如
  • 将名称添加到 Spree Devise 注册中

    我正在尝试添加姓名和出生日期来设计 Spree 注册 我已经安装了宝石 gem spree auth devise github spree spree auth devise branch 3 0 stable 创建了迁移 class A
  • Xamarin.Forms:如何设置“GestureRecognizers”样式

    这可能是一个愚蠢的问题 但我只是想知道 因为我是 Xamarin forms 的新手 我们可以在 Style 中设置 GestureRecognizers 吗 例如 我想为标签创建一个样式 如下所示 但它显示编译时错误 无法解析标
  • 在.NET/SQL 中参数化表名?

    正如主题所示 我希望能够使用 NET 实际上使用哪种语言 和 SQL Server 将表名作为参数传递 我知道如何为价值观做到这一点 例如command Parameters AddWithValue whatever whatever u