从.net逐行更新db2中的表

时间:2009-06-19 13:55:59

标签: c# .net-2.0 odbc db2

我对在C#项目中逐行从db2数据库检索的表执行某些操作。 但是当我尝试使用以下语句逐行将游标更新到数据库时会生成异常:

selectCommand.CommandText = "DECLARE crsr1 CURSOR FOR select * from " + tableName+" ;" 

根据我对此的理解,.net语言不支持使用db2的游标语句。我使用IBM DB2 ODBC驱动程序连接到数据库。

是否有任何方法可以使用游标,或者如果有人可以判断我是否遗漏了这些内容。

我在网上做了很多搜索,但在这个问题上没有太多可用。

这是我对上述陈述的例外 -

"ERROR [42601] [IBM][CLI Driver][DB2/NT] SQL0104N  An unexpected token \"DECLARE CRSR1 CURSOR FOR select * from MYTA\" was found following \"BEGIN-OF-STATEMENT\".  
Expected tokens may include:  \"<space>\".  SQLSTATE=42601\r\n"

非常感谢任何帮助或建议。

2 个答案:

答案 0 :(得分:0)

我认为您可能希望将其放入proc中 - 您通常不会在存储过程之外执行'声明游标..'除非您在CLI中进行调试或其他事情}

答案 1 :(得分:0)

您应该将“SELECT”部分放在命令文本中,并使用DB2Command的ExecuteResultSet方法返回一个包装可滚动可更新游标的结果集。

selectCommand.CommandText = "select * from " + tableName+" ;"
using(var result = selectCommand.ExecuteResultSet(DB2ResultSetOptions.Updatable))
{
   while (result.Read())
   {
       //set value of 2nd column to 'Hello'
       result.SetString(1, "Hello");
   }
}