[英]opening MySQL query when the query selects columns of varchar datatype in delphi
我最近开始使用MySql,所以我可能会犯一个begginers错误。 任何帮助表示赞赏。
我在Delphi中连接数据库,使用数据类型为integer,decimal和varchar的列定义查询。
问题是当我在Delphi中选择一个查询,并在打开查询后进行调试时,如果从未选择它们,则varchar的列不会显示为i。
odbc连接器的驱动程序是最新的mysql-connector-odbc-5.1.10
如果在设计模式下为TQuery
定义了持久字段,则可能忘记添加varchar( TStringField
)字段或拼写错误的FieldName
。 还要确保TWideStringField
是varchar
而不是nvarchar
( TWideStringField
)。
另一种解决方案是从TQuery
删除所有持久字段。
示例查询:
SELECT anumber, adecimalnumber, avarchar FROM atable
示例Delphi代码(从内存中执行此操作,所以不要小心小错误)。
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;
获取varchar数据真的不难。
推测 :好像,你正在使用dbTables - > BDE - > ODBC - > MySQL数据访问路径。 BDE会跳过包含未知数据类型的字段。 BDE可能不支持Unicode字符类型。
可能的方法 :
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.