c# - OracleCommand SQL 参数不起作用
问题描述
我的代码看起来像这样:
String Tablei= "PHGR_PHYS_GRAPH";
OracleCommand cmd_row = new OracleCommand();
OracleDataReader dr1;
cmd_row.CommandText = "SELECT PHGR_ID FROM " +":tableconf";
cmd_row.Connection = conn;
cmd_row.Parameters.Add(new OracleParameter("tableconf", Tablei));
dr1 = cmd_row.ExecuteReader();
我得到错误 ORA-00903 无效的表名。
但是,当我像这样更改查询时(不带参数):
cmd_row.CommandText = "SELECT PHGR_ID FROM PHGR_PHYS_GRAPH";
作品。谁能指出我的错误是什么?
解决方案
您不能OracleParameter
用于此目的。您只能将其用于参数值。例如:
OracleCommand cmd_row = new OracleCommand();
cmd_row.CommandText = "SELECT PHGR_ID FROM PHGR_PHYS_GRAPH WHERE phgr_id=:phgr_id";
cmd_row.Connection = conn;
cmd_row.Parameters.Add(new OracleParameter("phgr_id", "some_value"));
如果你想有一个变量表名,你应该使用String.Format()
或更简洁的$
String Tablei= "PHGR_PHYS_GRAPH";
OracleCommand cmd_row = new OracleCommand();
cmd_row.CommandText = $"SELECT PHGR_ID FROM {Tablei} WHERE phgr_id=:phgr_id";
cmd_row.Connection = conn;
cmd_row.Parameters.Add(new OracleParameter("phgr_id", "some_value"));
顺便说一句:我强烈建议将您的代码包装在 using 块中
推荐阅读
- javascript - mysql where子句和js
- python - 如何通过识别数据框中的公共列来添加数据框的所有数据?
- php - PHP file_get_contents():文件名不能为空在开发机器上工作 - PHP 7.2.24 vs 7.4?
- python - Amazon Lex 插槽验证:避免重新验证相同的插槽
- sql - 如何在 PostgreSQL 中按大写字母顺序排序?
- javascript - 在javascript中获取数据目录中的文件列表
- javascript - 错误 [ERR_HTTP_HEADERS_SENT]:在将标头发送到客户端后无法设置标头。如何发送数据以循环方式渲染
- python - 无法在 Python 2.7.10 中打开 URL。我的 Openssl 版本是 0.98
- django - 如何将图像添加到 Django 中的每个产品变体?
- azure - 如何在 ADF 的某些列中使用不带引号的逗号摄取逗号分隔的 csv