当使用sybase AseCommand运行ExecuteNonQuery()时得到一个错误。

问题描述 投票:2回答:1

当我在C# ADO.NET中使用Sybase提供者Sybase.AdoNet4.AseClient运行writeetext sql命令时,我得到一个错误。 我已经尝试了很多不同的方法,例如使用参数索引、命名参数等。 谁能帮助我? 我在下面展示了示例代码。

AseConnection cn = new AseConnection(connection.ConnectionString);
cn.Open();

//..... there is other code here that calls a stored procedure and gets textpointer 
// reference, but I am leaving it out to keep it short and simple

AseCommand cmd2 = new AseCommand("writetext mytable.column1 @textPointer @bigText", cn);
cmd2.CommandType = CommandType.Text

cmd2.Parameters.Add(new AseParameter("@textPointer", AseDbType.VarBinary, 16));
cmd2.Parameters["textPointer"].value = textPointerOut.value

cmd2.Parameters.Add(new AseParameter("@bigText", AseDbType.Text));
cmd2.Parameters["bigText"].value = bigText;

cmd2.ExecuteNonQuery();

cmd2.ExecuteNoQuery()抛出一个异常,错误是 必须声明变量@textPointer

更新:如果我尝试下面的语法,我得到一个错误的消息说 '@bigText'附近的sntax错误

AseCommand cmd2 = new AseCommand("{writetext mytable.column1 @textPointer @bigText}", cn);
c# sql asp.net-web-api ado.net sybase
1个回答
0
投票

我在向动态SQL传递AseParameter时被卡住了。 不需要使用命名参数。 使用动态SQL,我不得不做以下工作。

  1. Declare textPointer变量
  2. 获取我要更新的列的指针。
  3. 使用 writetext 命令更新列的内容
© www.soinside.com 2019 - 2024. All rights reserved.