写入数据库时,字符串长度的限制问题。

PheonixFly 2003-09-08 03:33:31
Hello, erveyone.

我使用Oracle数据库,声明了一个CRecorderset对象m_setText,该类中有一个绑定某列(VarValue)的成员变量m_VarValue,该成员变量是

CString类型;在向数据库中添加新数据时,使用如下代码:

m_setText.AddNew();
m_setText.m_VarValue = strInput;
if(m_setText.CanUpdate())
m_setText.Update();


其中,strInput从外部文本中读取。但是,我发现,当strInput的长度大于255时,数据库写入就会报错,而事实上VarValue列的设定长度是

4000,当使用Oracle操作界面写入同样内容(>255)的字符串时,能够成功写入,那么,这个问题有什么比较合理的解释呢?又没有解

决的方法呢?

我知道,在Access数据库中,文本的最大长度是255,但是,我用的是Oracle,最大文本长度可以达到4000。盼望某位大虾给出解决方法。
...全文
670 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
shanjicn 2003-09-08
  • 打赏
  • 举报
回复
m_VarValue是不是限制长度了
PheonixFly 2003-09-08
  • 打赏
  • 举报
回复
TO: linbuilder(林)

我跟踪了多次了,已经正确赋值。只要字符串的长度低于255,就能够成功写入。一旦大于255,就会出现错误Error: CString buffer (column 1) address has changed!
stonexl 2003-09-08
  • 打赏
  • 举报
回复
在影射类的DoFieldExchange(CFieldExchange* pFX)中加上字段长度
RFX_Text(pFX, _T("[WordText]"), m_WordText, 4000); //4000即是字段长度
oo 2003-09-08
  • 打赏
  • 举报
回复
在数据交换的那个宏里加上你需要的长度,缺省是255。
newly_ignorant 2003-09-08
  • 打赏
  • 举报
回复
m_VarValue什么数据类型
linbuilder 2003-09-08
  • 打赏
  • 举报
回复
你跟踪一次,看strInput中的串是否已正确赋值!

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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