ADO.NET 通过updatetext 如何更新 ntext字段?困扰我两周了!

zhwb36 2014-07-28 02:53:51
现有数据库是基于SQL SERVER 2000创建的,其中一张表有个字段是ntext类型,现在需要把二进制文件更新到此字段,我按照MSDN的方法,代码如下:

int BUFFER_LENGTH = 10240;
string strConnection = "server=localhost;database=test;uid=sa;pwd=123456";
SqlConnection objConnection = new SqlConnection(strConnection);
objConnection.Open();

SqlCommand cmdGetPointer = new SqlCommand("SET NOCOUNT ON;UPDATE t_SaleActionEntry SET FContent_Tag = '' WHERE FEntryID=4;"
+ "SELECT @Pointer=TEXTPTR(FContent_Tag) FROM t_SaleActionEntry WHERE FEntryID=4", objConnection);
SqlParameter pointerOutParam = cmdGetPointer.Parameters.Add("@Pointer", SqlDbType.Binary, 16);
pointerOutParam.Direction = ParameterDirection.Output;
cmdGetPointer.ExecuteNonQuery();

SqlCommand cmdUpdateBinary = new SqlCommand("UPDATETEXT t_SaleActionEntry.FContent_Tag @Pointer @Offset @Delete @Bytes", objConnection);
SqlParameter pointerParam = cmdUpdateBinary.Parameters.Add("@Pointer", SqlDbType.Binary, 16);
SqlParameter offsetParam = cmdUpdateBinary.Parameters.Add("@Offset", SqlDbType.Int);
SqlParameter deleteParam = cmdUpdateBinary.Parameters.Add("@Delete", SqlDbType.Int);
deleteParam.Value = 0;

SqlParameter bytesParam = cmdUpdateBinary.Parameters.Add("@Bytes", SqlDbType.Binary, BUFFER_LENGTH);

FileStream files = new FileStream("c:\\test.bat", FileMode.Open);
BinaryReader br = new BinaryReader(files);

int offset = 0;
offsetParam.Value = offset;

byte[] buffer = br.ReadBytes(BUFFER_LENGTH);
while (buffer.Length > 0)
{
pointerParam.Value = pointerOutParam.Value;
bytesParam.Value = buffer;
cmdUpdateBinary.ExecuteNonQuery();
deleteParam.Value = 0;
offset += BUFFER_LENGTH;
offsetParam.Value = offset;
buffer = br.ReadBytes(BUFFER_LENGTH);
}

br.Close();
files.Close();


执行一下就是报:“不能将数据类型 varbinary(max) 转换为 ntext”错误

因为更新字段为ntext,而@Bytes是一个Binary类型,执行确实会报错。
但我的需求就是要把二进制流写入NTEXT字段,能不能实现呢?
...全文
90 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhwb36 2014-07-28
  • 打赏
  • 举报
回复
引用 1 楼 jimil 的回复:
可以,writetext
我现在用的updatetext,能不能详细介绍一下?
jimil 2014-07-28
  • 打赏
  • 举报
回复
可以,writetext

110,525

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧