Reputation: 25
My code looks likes this:
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();
and i get error ORA-00903 invalid table name.
However when i change the query like this(without parameter):
cmd_row.CommandText = "SELECT PHGR_ID FROM PHGR_PHYS_GRAPH";
works. Can anyone point me out what is my mistake?
Upvotes: 1
Views: 1079
Reputation: 1086
You can't use OracleParameter
for this purpose. You can use this for parameter values only. For example:
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"));
If you want to have a variable table name you should use String.Format()
or the more concise $
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"));
BTW: I strongly recommend to wrap your code in using blocks
Upvotes: 2