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字段,能不能实现呢?
...全文
64 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zhwb36 2014-07-28
引用 1 楼 jimil 的回复:
可以,writetext
我现在用的updatetext,能不能详细介绍一下?
回复
jimil 2014-07-28
可以,writetext
回复
相关推荐
发帖
C#
创建于2007-09-28

10.6w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2014-07-28 02:53
社区公告

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