DataModule2.MeterQuery.Edit;
Str:=LedParaGet;
ShowMessage(IntToStr(Length(str)));//这里是48
DataModule2.MeterQuery.FieldByName('LedPara').AsString:=str;
DataModule2.MeterQuery.Post;
ShowMessage(IntToStr(Length(DataModule2.MeterQuery.FieldByName('LedPara').AsString)));//这里变2为什么会这样呢如果我把str:='aaaaaaaaaaaaaaaaaaa';那么一切正常。
一个数据库中表设计,字段定义的长度,如char(50).
其次是ADOQuery或ADOdataset中,添加了fields列表,一般双击ADOQuery控件,就会弹出显示fields列表的界面,点中一行,在属性栏中修改其size超过48即可。
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
把 Application.CreateForm(TDataModule2, DataModule2);放到其它窗口创建后试试。
应该是post后数据集滚动了
另外TO8楼的,放post前后没变化
F8 03 F9 03 EF 03 F8 03 F8 03 F9 03 F8 03 F8 03 F8 03 F8 03 EF 03 EF 03 EF 03 B5 00 60 00 F9 03 F8 03 F8 03 EF 03 F8 03 EF 03 F8 03 00 00 00 post后
DataModule2.MeterQuery.FieldByName('LedPara').AsString读出的字节
F8 03 F9 03 EF 03 F8 03 F8 03 F9 03 F8 03 F8 03 F8 03 F8 03 EF 03 EF 03 EF 03 B5
从00 60后丢失了
是不是数据库中的string直接是以#0作为结束符,而delphi中的string保存了长度,所以不以#0结束呢
show variables like "c%"
来查看相关设置
具体分为3种字符集
1. 客户端字符集
2. 连接字符集
3. 数据库字符集
如果这些设置不一样,在提交到数据库中时,系统会自动进行类型转换,这种转换可能会造成数据异常