字符串太长如何处理?请帮忙看看

teleinfor 2008-10-28 03:09:20
error C2026: string too big, trailing characters truncated
数据库创建table的一句SQL语句太长,出入CString时候提示太长了。。。晕倒,这个怎么办?我总不能分多次,一次创建几个column啊。。。


CString strCreate ;
strCreate="create table [W_Table] (\
[Time] varchar(30),\
[Lat] varchar(20),\
[Lon] varchar(20),\
[MeasurementID] tinyint,\
[Io] real,\
[RelativeTime_1] real,\
[RelativeTime_2] real,\
[RelativeTime_3] real,\
[RelativeTime_4] real,\
[RelativeTime_5] real,\
[RelativeTime_6] real,\
[RelativeTime_7] real,\
[RelativeTime_8] real,\
[RelativeTime_9] real,\
[RelativeTime_10] real,\
[PSCH_EcIo_1] real,\
[PSCH_EcIo_2] real,\
[PSCH_EcIo_3] real,\
[PSCH_EcIo_4] real,\
[PSCH_EcIo_5] real,\
[PSCH_EcIo_6] real,\
[PSCH_EcIo_7] real,\
[PSCH_EcIo_8] real,\
[PSCH_EcIo_9] real,\
[PSCH_EcIo_10] real,\
[SC_Group_1] tinyint,\
[SC_Group_2] tinyint,\
[SC_Group_3] tinyint,\
[SC_Group_4] tinyint,\
[SC_Group_5] tinyint,\
[SC_Group_6] tinyint,\
[SC_Group_7] tinyint,\
[SC_Group_8] tinyint,\
[SC_Group_9] tinyint,\
[SC_Group_10] tinyint,\
[SSCH_EcIo_1] real,\
[SSCH_EcIo_2] real,\
[SSCH_EcIo_3] real,\
[SSCH_EcIo_4] real,\
[SSCH_EcIo_5] real,\
[SSCH_EcIo_6] real,\
[SSCH_EcIo_7] real,\
[SSCH_EcIo_8] real,\
[SSCH_EcIo_9] real,\
[SSCH_EcIo_10] real,\
[SC_1] int,\
[SC_2] int,\
[SC_3] int,\
[SC_4] int,\
[SC_5] int,\
[SC_6] int,\
[SC_7] int,\
[SC_8] int,\
[SC_9] int,\
[SC_10] int,\
[SC_Peak_EcIo_1] real,\
[SC_Peak_EcIo_2] real,\
[SC_Peak_EcIo_3] real,\
[SC_Peak_EcIo_4] real,\
[SC_Peak_EcIo_5] real,\
[SC_Peak_EcIo_6] real,\
[SC_Peak_EcIo_7] real,\
[SC_Peak_EcIo_8] real,\
[SC_Peak_EcIo_9] real,\
[SC_Peak_EcIo_10] real,\
[SC_Agg_EcIo_1] real,\
[SC_Agg_EcIo_2] real,\
[SC_Agg_EcIo_3] real,\
[SC_Agg_EcIo_4] real,\
[SC_Agg_EcIo_5] real,\
[SC_Agg_EcIo_6] int,\
[SC_Agg_EcIo_7] real,\
[SC_Agg_EcIo_8] int,\
[SC_Agg_EcIo_9] real,\
[SC_Agg_EcIo_10] int,\
[SC_Delay_Spread_1] real,\
[SC_Delay_Spread_2] real,\
[SC_Delay_Spread_3] real,\
[SC_Delay_Spread_4] real,\
[SC_Delay_Spread_5] real,\
[SC_Delay_Spread_6] real,\
[SC_Delay_Spread_7] real,\
[SC_Delay_Spread_8] real,\
[SC_Delay_Spread_9] real,\
[SC_Delay_Spread_10] real,\
[PSCH_Ec_1] real,\
[PSCH_Ec_2] real,\
[PSCH_Ec_3] real,\
[PSCH_Ec_4] real,\
[PSCH_Ec_5] real,\
[PSCH_Ec_6] real,\
[PSCH_Ec_7] real,\
[PSCH_Ec_8] real,\
[PSCH_Ec_9] real,\
[PSCH_Ec_10] real,\
[SSCH_Ec_1] real,\
[SSCH_Ec_2] real,\
[SSCH_Ec_3] real,\
[SSCH_Ec_4] real,\
[SSCH_Ec_5] real,\
[SSCH_Ec_6] real,\
[SSCH_Ec_7] real,\
[SSCH_Ec_8] real,\
[SSCH_Ec_9] real,\
[SSCH_Ec_10] real,\
[SC_Peak_Ec_1] real,\
[SC_Peak_Ec_2] real,\
[SC_Peak_Ec_3] real,\
[SC_Peak_Ec_4] real,\
[SC_Peak_Ec_5] real,\
[SC_Peak_Ec_6] real,\
[SC_Peak_Ec_7] real,\
[SC_Peak_Ec_8] real,\
[SC_Peak_Ec_9] real,\
[SC_Peak_Ec_10] real,\
[SC_Agg_Ec_1] real,\
[SC_Agg_Ec_2] real,\
[SC_Agg_Ec_3] real,\
[SC_Agg_Ec_4] real,\
[SC_Agg_Ec_5] real,\
[SC_Agg_Ec_6] real,\
[SC_Agg_Ec_7] real,\
[SC_Agg_Ec_8] real,\
[SC_Agg_Ec_9] real,\
[SC_Agg_Ec_10] real,\
[PSCH_EbIo_1] real,\
[PSCH_EbIo_2] real,\
[PSCH_EbIo_3] real,\
[PSCH_EbIo_4] real,\
[PSCH_EbIo_5] real,\
[PSCH_EbIo_6] real,\
[PSCH_EbIo_7] real,\
[PSCH_EbIo_8] real,\
[PSCH_EbIo_9] real,\
[PSCH_EbIo_10] real,\
[SSCH_EbIo_1] real,\
[SSCH_EbIo_2] real,\
[SSCH_EbIo_3] real,\
[SSCH_EbIo_4] real,\
[SSCH_EbIo_5] real,\
[SSCH_EbIo_6] real,\
[SSCH_EbIo_7] real,\
[SSCH_EbIo_8] real,\
[SSCH_EbIo_9] real,\
[SSCH_EbIo_10] real,\
[SC_Peak_EbIo_1] real,\
[SC_Peak_EbIo_2] real,\
[SC_Peak_EbIo_3] real,\
[SC_Peak_EbIo_4] real,\
[SC_Peak_EbIo_5] real,\
[SC_Peak_EbIo_6] real,\
[SC_Peak_EbIo_7] real,\
[SC_Peak_EbIo_8] real,\
[SC_Peak_EbIo_9] real,\
[SC_Peak_EbIo_10] real,\
[SC_Agg_EbIo_1] real,\
[SC_Agg_EbIo_2] real,\
[SC_Agg_EbIo_3] real,\
[SC_Agg_EbIo_4] real,\
[SC_Agg_EbIo_5] real,\
[SC_Agg_EbIo_6] real,\
[SC_Agg_EbIo_7] real,\
[SC_Agg_EbIo_8] real,\
[SC_Agg_EbIo_9] real,\
[SC_Agg_EbIo_10] real\
)";
...全文
1806 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
菜牛 2008-10-29
  • 打赏
  • 举报
回复
编译器错误 C2026

字符串太大,已截断尾部字符


该字符串的长度超过了 2048 个单字节字符的限制。

在连接相邻字符串之前,字符串的长度不能超过 2048 个单字节字符。

大约为此长度的一半的 Unicode 字符串也会生成此错误。

如果某个字符串按如下定义,则会生成 C2026:

char sz[] =
"\
imagine a really, really \
long string here\
";
可以按如下所示对其进行分解:

char sz[] =
"\
imagine a really, really "
"long string here\
";
可能需要在自定义资源或外部文件中存储异常大的字符串(32K 或更大)。有关更多信息,请参见创建新的自定义资源或数据资源。

编程夜猫 2008-10-29
  • 打赏
  • 举报
回复
晕,这么长的创建表的SQL,
另外提个问题,楼主的表是否合理?
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 coyer 的回复:]
连字符串的基本定义方法都不知道,该怎么说你啊。

CString str = "ab"
"cd"
"ef";

直接用双引号,一行一行的放,行尾什么都不要放,就可以了,不要搞什么断行的“\”来拼凑。
[/Quote]
你说的可以,楼主用的方法也可以
应该是CString能接受这么长的字符串
而编译器接受不了
楼主的错误是怎么提示的?
shizhusz110 2008-10-28
  • 打赏
  • 举报
回复
直接多行想加!!
Chendy1985 2008-10-28
  • 打赏
  • 举报
回复
恩 读文件是个好办法
coyer 2008-10-28
  • 打赏
  • 举报
回复
连字符串的基本定义方法都不知道,该怎么说你啊。

CString str = "ab"
"cd"
"ef";

直接用双引号,一行一行的放,行尾什么都不要放,就可以了,不要搞什么断行的“\”来拼凑。
Zark 2008-10-28
  • 打赏
  • 举报
回复
头一次听说CString不够长的,不过不用改文件方法了,只要在中间某处改动如下:

[SC_Peak_EcIo_8] real,\
[SC_Peak_EcIo_9] real,\

改为
[SC_Peak_EcIo_8] real,"
" [SC_Peak_EcIo_9] real,\

这样就行了. 一处不够就多改几处即可.

用户 昵称 2008-10-28
  • 打赏
  • 举报
回复
你那一行语句分成几行不行吗?

CString a;

a = "111111\
3333333\
55555555";

a += "3333333\
55555555\
7777777777777";
teleinfor 2008-10-28
  • 打赏
  • 举报
回复
后来改用文件实现了,读取文件放进CString里面,OK了。

谢谢各位xd。可能是CString的初始化构造长度有限导致的吧。

char*不是需要自己new空间来实现,那还是有点麻烦的。还是文件方式,读取后
while(readstring)
{
strLine+="\r\n";
strSQL+=strLine;
}
一条晚起的虫 2008-10-28
  • 打赏
  • 举报
回复
如果是CString不够用,那用char*, 随便多长都可以
就怕是SQL语句过长,数据库不支持。
lz在数据库里试过了吗?
jinlingzwp 2008-10-28
  • 打赏
  • 举报
回复
mark too
pornographer 2008-10-28
  • 打赏
  • 举报
回复
mark

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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