Wince5.0(C#)中 StringBulider/string 类的最大长度是多少?

http_it 2009-10-16 10:10:29


private string GetReport()
{
DataSet ds= new DataSet();
StringBuilder sb = new StringBuilder();
ds=ExcuteCmd(string sql);//查询数据库的数据
for (int i = 0; i < ds.Tables[0].Rows.Count;i++)
{
string name=ds.Tables[0].Rows[i]["NAME"].ToString().Trim();
string age=ds.Tables[0].Rows[i]["AGE"].ToString().Trim();
string score=ds.Tables[0].Rows[i]["SCORE"].ToString().Trim();

sb.Append(name+" "+age+" "+score+ "\r\n");

}
Debug.WriteLine(sb.ToString());
return sb.ToString();
}


在以上方法中 ds.Tables[0].Rows.Count=451. 可是实际中 sb.ToString()只获取到了从第1行 到57行(不是第57整行字符串,只获取到该行部分字符串)的数据。从58行以后都没有了。 用 string 类在循环中用 += 来拼接也一样。
我上网查了,在FrameWork2.0 中 StringBuilder/string 类的最大长度是 以 GB单位计算的,至少在 4GB 以上。可是不知道现在是怎么回事。我手动跟踪调试过。 for 循环一直循环了451 次后,获取到字符串还是和上述一样。
...全文
422 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
A0hp90 2009-10-26
  • 打赏
  • 举报
回复
系统没有限制,最大2G-32位系统、4G-64位系统,你看到的是调试界面吧?VS2005自带的调试界面只能看到一段内容,你用fwrite写到文件中,内容还是那多
我现在也遇到这个问题,调试时发现少很多内容,导致Find老是返回-1,搞不懂~~~~~~~(不是UNICODE问题~~~~~~~)
世外涛缘 2009-10-16
  • 打赏
  • 举报
回复
我在WM上试过在String和StringBuilder里放过1M左右的数据,没出什么问题。
再大数据就不没试过了。

既然是58行出的问题,那就debug跟踪一下看看呗。
lwslws 2009-10-16
  • 打赏
  • 举报
回复
汗,看错了
lwslws 2009-10-16
  • 打赏
  • 举报
回复
但是可以执行的sql是有长度的吧
ProgrammerNO1 2009-10-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 http_it 的回复:]
引用 3 楼 programmerno1 的回复:
如果跟了,没有错误,可能其他接口调用的问题


就以上函数 GetReport() 你觉得会是哪有错呢?
[/Quote]
俺不是神人,,单就这个函数,看不出啥问题,呵呵
feishanm 2009-10-16
  • 打赏
  • 举报
回复
代码看不出什么问题来。
猜测CF中对string长度做了限制吧
http_it 2009-10-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 programmerno1 的回复:]
如果跟了,没有错误,可能其他接口调用的问题
[/Quote]

就以上函数 GetReport() 你觉得会是哪有错呢?
ProgrammerNO1 2009-10-16
  • 打赏
  • 举报
回复
如果跟了,没有错误,可能其他接口调用的问题
http_it 2009-10-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jiangyongtao 的回复:]
理论上:内存有多大,给应用程序分配的栈空间有多大,String和StringBuilder就可以多大。
楼主检查下代码逻辑哪出了问题
[/Quote]

逻辑也是啊。就那个for 循环 不超过十行的代码。怎么看都是正常啊。实在是想不到了。ds 就是读出的数据集。这个也应该很正常的。
世外涛缘 2009-10-16
  • 打赏
  • 举报
回复
理论上:内存有多大,给应用程序分配的栈空间有多大,String和StringBuilder就可以多大。
楼主检查下代码逻辑哪出了问题
ch1oE 2009-10-16
  • 打赏
  • 举报
回复
对.NET在WM上的应用么研究。
你可以尝试一下在32上,这段code是不是好的。
然后再试试在模拟器或者设备上,是不是好的。

如果结果有差别,那就是WM的一些限制,如果没有,那就是代码有问题。
直接在32上查好了。速度还快的。
xiaoyuzi 2009-10-16
  • 打赏
  • 举报
回复
不能啊。stringbuilder最大可存字符个数是Int32.Maxvalue,也就是2147483647个字符阿。不会系统内存不够了吧
ProgrammerNO1 2009-10-16
  • 打赏
  • 举报
回复
58行?跟定义buffer大小有关,
假如定义大小1K,实际值却超过了这个范围,会有这种执行不到的情况,但是有该有内存操作异常的情形呀,呵
http_it 2009-10-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 jiangyongtao 的回复:]
我在WM上试过在String和StringBuilder里放过1M左右的数据,没出什么问题。
再大数据就不没试过了。

既然是58行出的问题,那就debug跟踪一下看看呗。
[/Quote]

嗯,谢谢!我再 试试看。这问题真有点奇怪了!

7,655

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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