使用sybase asecommand运行executenonquery()时出错

6ovsh4lw  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(387)

使用sybase提供程序sybase.adonet4.aseclient在c#ado.net中运行writetext sql命令时出错。我试过很多不同的方法,例如使用parameterindex、命名参数等等。有人能帮我吗?我在下面展示示例代码。

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);
drnojrws

drnojrws1#

我在向动态sql传递aseparameter时遇到了太多麻烦。不需要使用命名参数。使用动态sql,我必须执行以下操作:
声明textpointer变量
获取指向要更新的列的指针
使用writetext命令更新列

相关问题