MySQL字符集全都设置成了UTF8编码了。
在Delphi中,使用TADOQuery向MySQL数据库插入记录。
代码如下,
1.采用Parameters设置参数时,中文插入数据库中后就乱码了。
with qry1 do
begin
SQL.Clear;
SQL.Add('insert into t_lssgfp (col1,col2,col3) values (:vcol1,:vcol2,:vcol3)');
Parameters.ParamByName('vcol1').Value:='001';
Parameters.ParamByName('vcol2').Value:='001';
Parameters.ParamByName('vcol3').Value:='中文乱码';
ExecSQL;
end;
2.但是如果不采用Parameters,而直接写成下面这样,就不会乱码。
with qry1 do
begin
SQL.Clear;
SQL.Add('insert into t_lssgfp (col1,col2,col3) values ("001","001","中文乱码")');
ExecSQL;
end;难道是TADOQuery有问题?请问如何解决?
在Delphi中,使用TADOQuery向MySQL数据库插入记录。
代码如下,
1.采用Parameters设置参数时,中文插入数据库中后就乱码了。
with qry1 do
begin
SQL.Clear;
SQL.Add('insert into t_lssgfp (col1,col2,col3) values (:vcol1,:vcol2,:vcol3)');
Parameters.ParamByName('vcol1').Value:='001';
Parameters.ParamByName('vcol2').Value:='001';
Parameters.ParamByName('vcol3').Value:='中文乱码';
ExecSQL;
end;
2.但是如果不采用Parameters,而直接写成下面这样,就不会乱码。
with qry1 do
begin
SQL.Clear;
SQL.Add('insert into t_lssgfp (col1,col2,col3) values ("001","001","中文乱码")');
ExecSQL;
end;难道是TADOQuery有问题?请问如何解决?
解决方案 »
- DELPHI TStringList.SaveToFile('.\cba.txt'); 生成的文本多了一个回车?
- 前无古人,后无来者,不得不看的东东
- 如何在dbgrid表格中监测光标键的事件
- ADOConnection+ADODataset连接EXCEL文件,执行ADODataset.Next出现"数值字段溢出"错误。
- 查询后字段值求和如何实现!谢谢!
- Raize控件组中的RzCheckTree的check属性用法,马上结!在线等待!
- longword与字符串之间的转换怎样实现????多些!!!
- 我找到了好东东---‘自动五笔拼音转换模块’,快进来看!!!!!
- 怎样用Delphi实现动态域名解析,我想针对ADSL、拨号上网的用户开发一个软件
- 如何可以按ESC键来回到上一个控件,就象可以用回车代替TAB来跳到下一个控件上一样?
- 苹果进攻安卓阵营:专利大棒失效?
- 急,请教如何把文本型的回车换行符转换成xml的换行符
begin
SQL.Clear;
SQL.Add('insert into t_lssgfp (col1,col2,col3) values (:vcol1,:vcol2,:vcol3)');
Parameters.Clear;
Parameters.AddParameter;
Parameters[0].Name:='vcol1';
Parameters[0].DataType:=ftString;
Parameters[0].Direction:=pdInput;
Parameters[0].Value:='001';
Parameters.AddParameter;
Parameters[1].Name:='vcol2';
Parameters[1].DataType:=ftString;
Parameters[1].Direction:=pdInput;
Parameters[1].Value:='002';
Parameters.AddParameter;
Parameters[2].Name:='vcol3';
Parameters[2].DataType:=ftString;
Parameters[2].Direction:=pdInput;
Parameters[2].Value:='中文乱码';
ExecSQL;
end;这样试试.
难道是borland ADO控件的BUG?
看我的贴子,在ADOQUERY的DataBeforeOpen(DataSet: TDataSet);中重新设置参数的size
Parameters[2].Value := UTF8Encode('中文乱码');
ADOQuery1.Parameters.ParamByName('v3').Value := ws;设置dataType为ftWideString,搞定