CString类型不能保存数目超过250个的字符串 isn't it? 本来用CString做参数类型,执行SQL语句,没想到CString 不能保存多于250的字符串,我的SQL有300长,不知道改用什么类型来做?AdoCommand.Excute(strText)? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用char数组,sprintf同样可以格式化 不可能吧。你是不是在debug时用watch看的?那里显示不下的!!CString的容量很大的,是G级的。你把那个Cstring写到文件看看!! 1 CString 应该可以装下你的SQL。在内存调试窗口看看CString中m_pchData里的内容。2 大不了用数组。 肯定不是CString的大小问题,他的容量够你用了。 记得以前有人讨论过CString的最大容量,绝对远大于250。 完全可以。如果有问题,你可以输出看看是不是你的SQL语句有问题。 CString没这个长度限制是不是数据库不支持这么长? CString具休能放多少字符我倒是不知,但以前试过用一个CString来存入一个几MB的文件,没问题 我知道!!其实只是调试的时候显示不出来而已,我也遇到过同样的问题,最后发现还是自己的SQL语句写错了 可以的,我以前做过一个程序,用CString装一个文件里的东西,我记得文件有好几K呢,都没有问题!楼主检查一下别的地方吧! 多谢各位GGMM的积极参与,先谢过了!watch有可能显示不足(或不显示),我见到了,不过调用GetLength(),得到260,应该是真实的长度吧,CString strSQL="Insert T_student (id ,name ,sex ,age ,info ,class ) values('10001001','刘京生','01',20,'info>250','20001001')";int iLength=strSQL.GetLength();这个变量长度应该大于300,可是随后调用GetLength()得到260,info后面的部分被截除了,我还使用Fromat,_T(),+=等,结果都是这样的,各位可以试一试,看看结果,帮帮忙吧^_^ 不可能, 用过CStrng接受服务端的数据,1K都有了。TRACE()是有长度限制的,只能是512个。 请注意strSQL语句中的'info>250',意思是info字段的内容大于250个字符,所以整个变量的内容就大于250,至于结束符,整个strSQL的内容大家都看到了,有吗?结束符是什么符号啊?另,没用到TRACE(),大家可以把上面的两行代码运行一下,告诉我结果,看看我的机器是不是有问题(赛扬2.4,win2000svr,512M内存,DELL原装) 把 info 字段的值也贴上来看看! 其实info字段的值是我瞎编的,是一段中文,大家可以随便写值的,比如:新的交换式网络已使网络管理员能有效地将工作组、数据中心及桌面的性能最大限度地提高。但不幸的是,这种新方法使得网络监控和管理与共享式网络相比变得更困难、更复杂。在交换式的环境中-特别是当平均每端口的价格继续下降时出现的交换式桌面环境-对远程监控数据的全面采集更加复杂,这是因为局域网网段的数量大幅度增加,这必然导致网管工作量的提高。随着网段数量的增加及网络中各种系统的多样性,优化性能价格比的最佳途径是在网络的不同地方提供不同层次的RMON,以此将监控和管理工作分布开。有230多个字符,大家也可以用英文 CString strSQL="一个大于300的字符串";int iLength=strSQL.GetLength();就两句,大家试一试,贴出你的结果watch里显示的strSQL内容和iLength值。 CString aa; aa = "新的交换式网络已使网络管理员能有效地将工作组、数据中心及桌面的性能最大限度地提高。但不幸的是,这种新方法使得网络监控和管理与共享式网络相比变得更困难、更复杂。在交换式的环境中-特别是当平均每端口的价格继续下降时出现的交换式桌面环境-对远程监控数据的全面采集更加复杂,这是因为局域网网段的数量大幅度增加,这必然导致网管工作量的提高。随着网段数量的增加及网络中各种系统的多样性,优化性能价格比的最佳途径是在网络的不同地方提供不同层次的RMON,以此将监控和管理工作分布开" ; int length = aa.GetLength();length = 462 在watch窗口中可以看到CString的地址,然后拷贝到Memery窗口中,可以看到完整的内容。 估计是字段的原因,access中用备注存放大数据量 可能是你的SQL语句有问题,比如单引号不匹配等等 按照你的描述,把你的info及其长度单独打印一下看看吧,不要找sql语句的毛病了。肯定是info的里面有结束符, WATCH 和TRACE里面看到的是有长度限制的.(好象不超过255)sql的执行语句,不能超过8K多.超过这个长度,违背了sql的变量定义规则.CString应该只和你的内存大小有关吧,我想一般来说是不用考虑的.你可以把这个字段写到一个文件里,看看就明白了. 有一次,测试注册表的SZ,CString 可以大于2048 不是CString 容量不够,而是用它做参数传递不行(偶尔)。我也遇到过这种现象。用char 指针传递,然后组合起来就可以了 2G,随便用吧。。你可以MessageBox();出来。 我的SQL文都是1K左右的,用CString,完全没任何问题。搂主再检查下自己的程序吧! 同意jazy()的看法,你的CString 遇0截止了 我以前写过一个sql语句,结果用户的数据库的一个值带引号,整的我搞了好几天才找到.我估计是你的sql语句不全面 我也遇到过我解决了,CString str1 ,str2,strsql;str1.format("");str2.format("");strsql = str1+str2; MFC程序中使用XP风格后待机再启动死机 请问开发串口通信程序用VC还是C#方便? 利用RTC实现待机转入休眠。。。。 200分:求 WTL 下使用CTreePropertySheet的例子或改编或思路?帮顶给分。 [???]Access数据库字段的类型分别对应VC的什么类型啊 VC交友...散分 【请教】 关于ISAPI的问题:如何直接"正常"的退出一个线程啊?【请教】 我哪里错了?????? 大虾请留步!!! 窗体界面背景消失 通过oledb用ADO连接Mysql时,向mysql库插入中文时出错 绘制的曲线图如何保存?(单文档中)
CString的容量很大的,是G级的。你把那个Cstring写到文件看看!!
2 大不了用数组。
其实只是调试的时候显示不出来而已,我也遇到过同样的问题,最后发现还是自己的SQL语句写错了
这个变量长度应该大于300,可是随后调用GetLength()得到260,info后面的部分被截除了,
我还使用Fromat,_T(),+=等,结果都是这样的,各位可以试一试,看看结果,帮帮忙吧^_^
有230多个字符,大家也可以用英文
int iLength=strSQL.GetLength();
就两句,大家试一试,贴出你的结果watch里显示的strSQL内容和iLength值。
aa = "新的交换式网络已使网络管理员能有效地将工作组、数据中心及桌面的性能最大限度地提高。但不幸的是,这种新方法使得网络监控和管理与共享式网络相比变得更困难、更复杂。在交换式的环境中-特别是当平均每端口的价格继续下降时出现的交换式桌面环境-对远程监控数据的全面采集更加复杂,这是因为局域网网段的数量大幅度增加,这必然导致网管工作量的提高。随着网段数量的增加及网络中各种系统的多样性,优化性能价格比的最佳途径是在网络的不同地方提供不同层次的RMON,以此将监控和管理工作分布开" ;
int length = aa.GetLength();length = 462
sql的执行语句,不能超过8K多.超过这个长度,违背了sql的变量定义规则.
CString应该只和你的内存大小有关吧,我想一般来说是不用考虑的.
你可以把这个字段写到一个文件里,看看就明白了.
我估计是你的sql语句不全面
我解决了,
CString str1 ,str2,strsql;
str1.format("");
str2.format("");
strsql = str1+str2;