问题描述
现有数据库是基于SQLSERVER2000创建的,其中一张表有个字段是ntext类型,现在需要把二进制文件更新到此字段,我按照MSDN的方法,代码如下:intBUFFER_LENGTH=10240;stringstrConnection="server=localhost;database=test;uid=sa;pwd=123456";SqlConnectionobjConnection=newSqlConnection(strConnection);objConnection.Open();SqlCommandcmdGetPointer=newSqlCommand("SETNOCOUNTON;UPDATEt_SaleActionEntrySETFContent_Tag=''WHEREFEntryID=4;"+"SELECT@Pointer=TEXTPTR(FContent_Tag)FROMt_SaleActionEntryWHEREFEntryID=4",objConnection);SqlParameterpointerOutParam=cmdGetPointer.Parameters.Add("@Pointer",SqlDbType.Binary,16);pointerOutParam.Direction=ParameterDirection.Output;cmdGetPointer.ExecuteNonQuery();SqlCommandcmdUpdateBinary=newSqlCommand("UPDATETEXTt_SaleActionEntry.FContent_Tag@Pointer@Offset@Delete@Bytes",objConnection);SqlParameterpointerParam=cmdUpdateBinary.Parameters.Add("@Pointer",SqlDbType.Binary,16);SqlParameteroffsetParam=cmdUpdateBinary.Parameters.Add("@Offset",SqlDbType.Int);SqlParameterdeleteParam=cmdUpdateBinary.Parameters.Add("@Delete",SqlDbType.Int);deleteParam.Value=0;SqlParameterbytesParam=cmdUpdateBinary.Parameters.Add("@Bytes",SqlDbType.Binary,BUFFER_LENGTH);FileStreamfiles=newFileStream("c:\test.bat",FileMode.Open);BinaryReaderbr=newBinaryReader(files);intoffset=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字段,能不能实现呢?
解决方案
解决方案二:
可以,writetext
解决方案三:
引用1楼jimil的回复:
可以,writetext
我现在用的updatetext,能不能详细介绍一下?