[英]Convert method to parametrized query?
我想提出一种通用方法来为我的应用程序获取序列(OLEDB asp.net DB2)
var seqName="Table1";
string query="SELECT NEXTVAL FOR SchemaName."+seqName+" as seqid FROM sysibm.sysdummy1";
using (OleDbCommand myCommand=new OleDbCommand(query,myConnection))
{
myConnection.Open();
result = Convert.ToInt32(myCommand.ExecuteScalar());
}
使用它反而行不通
var seqName="mySeq1";
string query="SELECT NEXTVAL FOR SchemaName.? as seqid FROM sysibm.sysdummy1";
using (OleDbCommand myCommand=new OleDbCommand(query,myConnection))
{
myCommand.Parameters.Add(new OleDbParameter("TabName",seqName));
myConnection.Open();
result = Convert.ToInt32(myCommand.ExecuteScalar());
}
它抛出
SQL0104: Token ? was not valid. Valid tokens: <IDENTIFIER>. Cause . . . . . : A syntax error was detected at token ?. Token ? is
不是有效的令牌。 有效令牌的部分列表为。 该列表假定该语句在令牌之前是正确的。 该错误可能早于该语句,但是该语句的语法到目前为止一直有效。 恢复。 。 。 :执行以下一项或多项操作,然后重试该请求:-验证令牌区域中的SQL语句? 更正该语句。 错误可能是缺少逗号或引号,可能是拼写错误的单词,或者可能与子句的顺序有关。 -如果错误令牌为,请更正该SQL语句,因为它没有以有效的子句结尾。
您不能在查询中使用参数指定表名,而只能使用参数指定实际值。
您需要在查询中更改表名,这表明您应该在表名中包含数据,而实际上该数据应该在表中。 您可能会考虑重新设计数据库,以便将这些数据保存在单个表中,而不是使用结构相同的多个表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.