首页 > 解决方案 > 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";

作品。谁能指出我的错误是什么?

标签: c#oracle

解决方案


您不能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 块中


推荐阅读