繁体   English   中英

当查询在delphi中选择varchar数据类型列时打开MySQL查询

[英]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 还要确保TWideStringFieldvarchar而不是nvarcharTWideStringField )。

另一种解决方案是从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字符类型。

可能的方法

  • 尝试在ODBC连接参数中为连接设置ANSI字符集;
  • 使用dbGo / ADO数据访问组件;
  • 使用dbExpress组件与MySQL dbExpress驱动程序;
  • 使用3d party数据访问组件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM