在delphi中,当查询选择varchar数据类型的列时打开MySQL查询
我最近开始使用MySql,所以我可能犯了一个错误。感谢您的帮助 我在Delphi中连接数据库,定义一个数据类型为integer、decimal和varchar的列的查询 问题是,当我在Delphi中选择一个查询,并在打开查询后进行调试时,如果没有选择varchar列,则这些列不会显示为我 odbc连接器的驱动程序是最新的mysql-connector-odbc-5.1.10示例查询:在delphi中,当查询选择varchar数据类型的列时打开MySQL查询,mysql,delphi,delphi-2009,Mysql,Delphi,Delphi 2009,我最近开始使用MySql,所以我可能犯了一个错误。感谢您的帮助 我在Delphi中连接数据库,定义一个数据类型为integer、decimal和varchar的列的查询 问题是,当我在Delphi中选择一个查询,并在打开查询后进行调试时,如果没有选择varchar列,则这些列不会显示为我 odbc连接器的驱动程序是最新的mysql-connector-odbc-5.1.10示例查询: SELECT anumber, adecimalnumber, avarchar FROM atable 示例
SELECT anumber, adecimalnumber, avarchar FROM atable
示例Delphi代码(从内存中执行此操作,所以不要介意小错误)
程序测试;
变量
提问:TADOQuery;
数量:整数;
抽象的:真实的;
绷带:弦;
开始
AQuery:=TAdoQuery.Create;
尝试
连接:=SomeODBCConnection;
query.SQL.Text:=“从atable中选择一个数字、一个数字、一个数字”;
开水室;
ANumber:=AQuery.FieldByName('ANumber').AsInteger;
ADecimal:=AQuery.FieldByName('anumber').AsFloat;
AString:=AQuery.FieldByName('anumber').AsString 推测:似乎您正在使用dbTables->BDE->ODBC->MySQL数据访问路径。BDE跳过数据类型未知的字段。BDE可能不支持Unicode字符类型
可能的解决方案:
- 尝试在ODBC连接参数中为连接设置ANSI字符集李>
- 使用dbGo/ADO数据访问组件李>
- 使用dbExpress组件和MySQL dbExpress驱动程序李>
- 使用3d party数据访问组件
如果在设计模式下为TQuery
定义了持久字段,可能是忘记添加varchar(TStringField
)字段,或拼写错误的字段名
。还要确保该字段是varchar
而不是nvarchar
(TWideStringField
)
另一个解决方案是从TQuery
显示mysql查询和表模式中删除所有持久字段please@dzibul,请出示您的检索代码,以便我们能给您一个合理的答案。我使用的方法与我完全相同。问题是,当我尝试访问varchar类型的字段时,会出现异常。我尝试使用字段[i]代替fieldbyname,但varchar类型的字段不存在。我认为司机可能是问题所在,但我使用的是最新的:(
procedure Test;
var
AQuery: TADOQuery;
ANumber: integer;
ADecimal: Real;
AString: string;
begin
AQuery:= TAdoQuery.Create;
try
AQuery.Connection:= SomeODBCConnection;
AQuery.SQL.Text:= 'SELECT anumber, adecimalnumber, avarchar FROM atable';
AQuery.Open;
ANumber:= AQuery.FieldByName('anumber').AsInteger;
ADecimal:= AQuery.FieldByName('anumber').AsFloat;
AString:= AQuery.FieldByName('anumber').AsString; << Gets the varchar.
//Use AQuery.Next + test for AQuery.EOF to walk through rows.
finally
AQuery.Free;
end;
end;