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;
如果有人可以 - 举一些例子
像这样不行
答案 0 :(得分:3)
您使用的是错误的方法。在拥有它的任何TDataSet
后代中,ExecSQL
用于执行不返回结果集的查询,例如INSERT,UPDATE,DELETE或CREATE TABLE。例如,请参阅TSQLQuery.ExecSQL
(强调我的)
执行不返回一组记录的查询。
调用ExecSQL执行不返回一组记录的SQL命令。 此命令是SELECT查询以外的查询,,例如INSERT,UPDATE,DELETE或CREATE TABLE查询。
使用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;
有关更多信息(包括分步教程),请参阅Delphi docwiki上的Using DBExpress Components。 (我链接的是当前的Delphi版本,但是自引入以来,DBExpress的基本步骤是相同的。)
如果您想要在Delphi中使用DBExpress的基本视频教程,可以试试DBExpress Data Access Components in Delphi - Delphi 101。我没有看过它,但它是由德尔福的制造商Embarcadero发布的。