我用tclientdataset控件提交数据到sql server数据库,有时会出现汉字被截断的问题,22个汉字被截断成11个,是不是和系统的字符集有关,因为最近才重安装过XP系统,请指点.具体代码如下:
dm.cds_use0.Close;
dm.cds_use0.CommandText := 'insert into A(title) values(:title)';
dm.cds_use0.Params.ParamByName('title').Size := length(B.title);
dm.cds_use0.Params.ParamByName('title').DataType := ftWideString;
dm.cds_use0.Params.ParamByName('title').AsString:= B.title;
dm.cds_use0.Execute;
跟踪到delphi程序里面,发现起初的长度是符合实际情况,字长44,汉字也显示的完整,但到了后来,有某段代码中title的汉字都变成了?(问号).无法跟踪程序到底,估计有好几百步.
请教了
dm.cds_use0.Close;
dm.cds_use0.CommandText := 'insert into A(title) values(:title)';
dm.cds_use0.Params.ParamByName('title').Size := length(B.title);
dm.cds_use0.Params.ParamByName('title').DataType := ftWideString;
dm.cds_use0.Params.ParamByName('title').AsString:= B.title;
dm.cds_use0.Execute;
跟踪到delphi程序里面,发现起初的长度是符合实际情况,字长44,汉字也显示的完整,但到了后来,有某段代码中title的汉字都变成了?(问号).无法跟踪程序到底,估计有好几百步.
请教了
將 varchar 改為 nvarchar
1.直接提交当然可以,但是没有经过优化,提交很容易失败
2.beifangke提供的文章已经看过,我跟踪程序,找不到文章所说的TCustomADODataSet.PSSetCommandText涵数
也许delphi快要消亡了,所以关注的人少了,
你单独拿一条SQL语句去执行插入中文字就知道了.