C# 是否将方法转换为参数化查询?

C# 是否将方法转换为参数化查询?,c#,asp.net,oledb,C#,Asp.net,Oledb,我想为我的应用程序(OLEDB asp.net DB2)创建一个获取序列的通用方法 用这个来代替是行不通的 var seqName="mySeq1"; string query="SELECT NEXTVAL FOR SchemaName.? as seqid FROM sysibm.sysdummy1"; using (OleDbCommand myCommand=new OleDbCommand(query,myConnection))

我想为我的应用程序(OLEDB asp.net DB2)创建一个获取序列的通用方法

用这个来代替是行不通的

   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:令牌?无效。有效令牌:。
原因……:在令牌?处检测到语法错误?。代币是
不是有效的令牌。部分名单 有效代币为。这 列表假定该语句是 更正到令牌。错误 可能在声明的前面,但是 该语句的语法似乎是 在这一点上是有效的。恢复。 . . : 执行以下一项或多项操作: 请执行以下操作,然后重试该请求: --验证令牌?区域中的SQL语句?。纠正错误 陈述这个错误可能是一个错误 缺少逗号或引号,请将其删除 可能是拼错的单词,或者 可能与 条款。-如果错误标记为 ,请更正SQL 语句,因为它不以 有效的条款


不能使用参数在查询中指定表名,只能使用参数指定实际值


您需要在查询中更改表名,这表明您在表名中有数据,而数据实际上应该在表中。您可能会考虑重新设计数据库,以便在一个表中拥有这些数据,而不是具有相同结构的多个表。

您好,对于键入,我正在获取序列而不是表。更正了我的帖子。@Popo:任何标识符都一样;你不能用参数来指定标识符,只能指定值。谢谢你,Guffa,我想你对标识符和值的理解很到位。我改变了选择序列的方法。
   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