解决SQL Server的TEXT、IMAGE类型字段的长度限制
2010-11-02 23:30
435 查看
http://dev.firnow.com/course/7_databases/sql/sqlServer/2008126/97658.html
SQL Server缺省安装时,TEXT、NTEXT、 IMAGE类型字段是有长度限制,如果写入的数据超过限制就会抛出异常,缺省的长度限制是65536,需要修改数据库的全局配置参数:
exec sp_configure 'max text repl size (B)', '655360' --调整长度限制为655360,增加了10倍
reconfigure --使配置生效
string objData;
.......(略去objData数据的准备工作)
// 构建安全数组
const long lWeiShu = 1;// 安全数组维数
BYTE *pByte;
SAFEARRAY FAR* psa;
SAFEARRAYBOUND rgsabound[lWeiShu];
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = objData.length();
psa = SafeArrayCreate(VT_UI1, lWeiShu, rgsabound);
if(SafeArrayAccessData(psa,(void **)&pByte) == NOERROR)
{
// 将对象数据拷贝进安全数组
memcpy(pByte,&objData[0],objData.length());
}
SafeArrayUnaccessData(psa);
VARIANT varArray;
varArray.vt = VT_ARRAY | VT_UI1;
varArray.parray = psa;
// 将数据更新到数据库中.
FieldPtr fiePtr = objRCRecordset->Fields->GetItem(_variant_t("fieldname"));
fiePtr->AppendChunk(varArray);
VariantClear(&varArray);
///////////////////////////////////////////////////////////////
以上是在addnew情况下可以使用.
如果是存储过程的参数中有text, image等情况. 则上面的代码后面部分要改为
storeprocparamobj->Value = varArray;
/////////////////////////////////////////////////////////////
此外
可以用_variant_t对象代替直接使用 VARIANT结构, 前者可以自动在析构时释放数据.后者需要
自己调用 VariantClear清理.
以上代码适用于TEXT, IMAGE字段类型, 且经过实验.(ado, vc6, win2000, sqlserver2000)
文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/7_databases/sql/sqlServer/2008126/97658.html
SQL Server缺省安装时,TEXT、NTEXT、 IMAGE类型字段是有长度限制,如果写入的数据超过限制就会抛出异常,缺省的长度限制是65536,需要修改数据库的全局配置参数:
exec sp_configure 'max text repl size (B)', '655360' --调整长度限制为655360,增加了10倍
reconfigure --使配置生效
string objData;
.......(略去objData数据的准备工作)
// 构建安全数组
const long lWeiShu = 1;// 安全数组维数
BYTE *pByte;
SAFEARRAY FAR* psa;
SAFEARRAYBOUND rgsabound[lWeiShu];
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = objData.length();
psa = SafeArrayCreate(VT_UI1, lWeiShu, rgsabound);
if(SafeArrayAccessData(psa,(void **)&pByte) == NOERROR)
{
// 将对象数据拷贝进安全数组
memcpy(pByte,&objData[0],objData.length());
}
SafeArrayUnaccessData(psa);
VARIANT varArray;
varArray.vt = VT_ARRAY | VT_UI1;
varArray.parray = psa;
// 将数据更新到数据库中.
FieldPtr fiePtr = objRCRecordset->Fields->GetItem(_variant_t("fieldname"));
fiePtr->AppendChunk(varArray);
VariantClear(&varArray);
///////////////////////////////////////////////////////////////
以上是在addnew情况下可以使用.
如果是存储过程的参数中有text, image等情况. 则上面的代码后面部分要改为
storeprocparamobj->Value = varArray;
/////////////////////////////////////////////////////////////
此外
可以用_variant_t对象代替直接使用 VARIANT结构, 前者可以自动在析构时释放数据.后者需要
自己调用 VariantClear清理.
以上代码适用于TEXT, IMAGE字段类型, 且经过实验.(ado, vc6, win2000, sqlserver2000)
文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/7_databases/sql/sqlServer/2008126/97658.html
相关文章推荐
- 解决SQL Server的TEXT、IMAGE类型字段的长度限制
- 解决SQL Server的TEXT、IMAGE类型字段的长度限制
- 解决SQL Server的TEXT、IMAGE类型字段的长度限制
- sql sever 2005 replication 时对于 image,text类型的字段提示错误的解决方法
- 网上转来的,sql server设置同步后,text类型字段只能保存长度少于65536的字符串
- Oracle中varchar2类型字段长度限制使用问题
- 读取sql server表的字段名,字段类型,字段长度,字段属性描述的sql语句
- Android 限制EditText只能输入数字、限制输入类型、限制输入长度的小技巧
- PHP中查询SQL Server或Sybase时TEXT字段被截断的解决方法
- 转载:操作sql2000中的text,image字段类型.
- Sql Server字段类型的字符长度
- sql 列出SQL SERVER 所有表,字段名,主键,类型,长度,小数位数等信息
- SQL Server获取TEXT字段的内容长度
- 列出SQL SERVER 所有表,字段名,主键,类型,长度,小数位数等信息
- SQL Server 2008获取一个表的字段,类型,长度,是否主键,是否为空,注释等信息
- 列出SQL SERVER 所有表,字段名,主键,类型,长度,小数位数等信息
- 列出SQL SERVER 所有表,字段名,主键,类型,长度,小数位数等信息
- sql如何获得某个数据库里面的表的字段名,字段类型,字段长度(sql server)
- DELPHI中对SQL SERVER中image、text字段的读写综述