【发布时间】:2019-01-28 19:13:29
【问题描述】:
我使用绑定变量从 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....
谁能告诉我怎么做? 提前致谢
【问题讨论】:
-
您能否展示一下您的
commandText尝试,其中包含内连接命令? -
为什么以及如何失败?您将在
from字符串中包含连接或将String.Format参数向右移动,因此{2} 成为连接子句的占位符。但 IMO 的整个方法值得商榷。您可以使用现有的框架来生成动态 sql 吗? -
我将它包含在 from 字符串中,但出现错误。你能举例说明 commandText 应该如何显示吗?
-
让您的
from包含a inner join b on a.id = b.id,完成。您自己生成查询文本,因此您的工作是确保结果最终有意义。在构造 SQL 时,总是在事后评估结果(即打印或检查commandText);当语法错误时通常很明显。请注意,当您开始进行连接时,您希望将表名添加到fields,否则id之类的内容不明确。 -
我收到这个错误:ORA-01036: 变量名或变量号无效
标签: c# sql bind-variables