mysql - dbExpress 如何显示查询结果?

标签 mysql delphi

var
  Connection: TSQLConnection;
  SqlSet:TSQLDataSet;
begin
  Connection := TSQLConnection.Create(nil);
  SqlSet := TSQLDataSet.Create(nil);
  SqlSet.SQLConnection:=Connection;
  Connection.DriverName := 'MySQL';
  Connection.GetDriverFunc := 'getSQLDriverMYSQL';
  Connection.LibraryName := 'dbxmys.dll';
  Connection.VendorLib := 'libmysql.dll';
  Connection.LoginPrompt:=False;


  Connection.Params.Values['Database']:=('shadowxx1');
  Connection.Params.Values['User_Name']:=('shadowxx1');
  Connection.Params.Values['Password']:=('shadowxx1');
  Connection.Params.Values['HostName']:=('shadowxx1');
  Connection.Open;
  Connection.Connected:=True;

  SqlSet.CommandType:=ctQuery;
  SqlSet.CommandText:= 'SELECT VERSION()';
  SqlSet.ExecSQL;


  Connection.Close;
  Connection.Free;
  SqlSet.Free;
end;

代码有效,但是,如何显示查询结果或将其提取到网格??? 我根本找不到这个信息,在 ADO 中是​​这样的

DataSrc := TDataSource.Create(Self);
DataSrc.DataSet := ADOQuery;
DataSrc.Enabled := true;
DBGrid1.DataSource := DataSrc;

如果有人可以 - 举一些例子

像这样行不通 enter image description here

最佳答案

你用错了方法。在拥有它的任何 TDataSet 后代中,ExecSQL 用于执行不返回结果集的查询,例如 INSERT、UPDATE、DELETE 或 CREATE TABLE。参见,例如,TSQLQuery.ExecSQL (强调我的)

Executes a query that does not return a set of records.

Call ExecSQL to execute an SQL command that does not return a set of records. This command is a query other than a SELECT query, such as an INSERT, UPDATE, DELETE, or CREATE TABLE query.

使用 TSQLQuery.Open 从 SELECT 返回行。这样的东西应该可以工作(未经测试——我不使用 MySQL 或 DBExpress):

var
  Qry: TSQLQuery;
  VersionString: String;


  // Set up your connection as above, and open it

  Qry := TSQLQuery.Create(nil);
  Qry.SQLConnection := Connection;

  Qry.SQL.Text := 'SELECT VERSION() as DBVersion';
  Qry.Open;

  if not Qry.IsEmpty then
    VersionString := Qry.FieldByName('DBVersion').AsString
  else
    VersionString := 'No results found';
  Qry.Close;

有关详细信息(包括分步教程),请参阅 Using DBExpress Components在德尔福 docwiki。 (我链接的那个是针对当前的 Delphi 版本的,但是 DBExpress 的基本步骤自引入以来是相同的。)

如果你想要一个在 Delphi 中使用 DBExpress 的基本视频教程,你可以试试 DBExpress Data Access Components in Delphi - Delphi 101 .我没看过,但它是由 Delphi 的制造商 Embarcadero 发布的。

关于mysql - dbExpress 如何显示查询结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21444177/

相关文章:

php - 如何获取不存在连接的记录?

mysql - 使用多个表连接或多个选择编写 MySQL 查询

php - 按多个字段搜索。有时按一个字段,有时按多个字段

delphi - 在WinXP和Win7下执行delphi代码的差异。为什么?

delphi - TNetHTTPClient 和 Delphi 10.3 的连接超时

html - HTML 字符实体和 Delphi 之间的数字等价性?

windows - Delphi:如何向其他应用程序发送命令?

mysql - MySQL 中有条件的几个 COUNT

Delphi 编译器警告将有符号传递给无符号

mysql - 优化非常慢的Mysql查询