C# bind变量中的内部join语句

C# bind变量中的内部join语句,c#,sql,bind-variables,C#,Sql,Bind Variables,我使用绑定变量从SQL表中获取数据 守则: string commandText = string.Format("SELECT {0} FROM {1} WHERE {2} ORDER BY {3}", fields, from, whereStr, orderBy); DbCommand command = GetSqlCommandWrapper(commandText); int index = 0; foreach (var item in whereParams) { com

我使用绑定变量从SQL表中获取数据

守则:

string commandText = string.Format("SELECT {0} FROM {1} WHERE {2} ORDER BY {3}", fields, from, whereStr, orderBy);
DbCommand command = GetSqlCommandWrapper(commandText);
int index = 0;
foreach (var item in whereParams)
{
    command.Parameters.Add(new OracleParameter(item, whereParamsBy[index++]));
}
DataTable db = new DataTable();

DataSet dataSet = null;
dataSet = CurrentDatabase.ExecuteDataSet(command);
命令文本:

fields = "TableA.*";
from = "TableA INNER JOIN TableB ON TableA .id = TableB.id";
whereStr = "TableA .id > 10";
orderBy = "TableA .id, TableB .id";
在我必须从2个表(如查询)中获取数据之前,一切正常:

select * from a inner join b on a.id = b.id where....
有人能告诉我怎么做吗?
提前感谢

总体方法不是很好,但就得到你想要的东西而言,这应该可以做到

fields = "*";
from = "TableA AS a INNER JOIN TableB AS B ON a.id = b.id";
whereStr = "a.id > 10";
orderBy = "a.id, b.id";
将您的输入参数设置为该值,或者在您给我们的代码之前粘贴它,它将生成命令
SELECT*FROM TableA作为内部联接TableB作为B ON a.id=B.id,其中a.id>10 ORDER BY a.id,B.id


请注意,
orderBy=“a.id;DROP TABLE TableA;”
是一个可怕的前景

你能展示你的
commandText
尝试,其中包括内部连接命令吗?为什么失败,如何失败?您可以在
from
字符串中包含联接,或者将
string.Format
参数向右移动,以便{2}成为联接子句的占位符。但在国际海事组织(IMO)看来,整个方法都值得怀疑。您可以使用现有的框架来生成动态sql吗?我将其包含在from字符串中,但得到一个错误。你能举例说明命令文本应该如何显示吗?让你的
from
包含
a.id=b.id上的内部连接b,完成。您自己生成查询文本,因此您的工作是确保结果最终有意义。在构造SQL时,始终在事后评估结果(即,打印或检查
commandText
);当语法出现错误时,这通常是显而易见的。请注意,当您开始执行联接时,您希望将表名添加到
字段
,否则类似
id
的内容不明确。我收到了以下错误:ORA-01036:变量名或变量号无效