我正在研究一个免费的解决方案,将delphi与mysql数据库连接,但不使用ODBC。是否有这样的组件?
感谢。
答案 0 :(得分:6)
答案 1 :(得分:2)
我多年来一直在寻找和使用许多工具,免费和付费。
第一次免费是弱或难,至少你需要太多的代码来完成简单的任务,可以在付费工具中的一个或两个功能中完成。
付费工具我使用过Devart MyDAC和microOLAP for MySQL,这是该领域评价最高的工具。 我使用mydac大约2年,但最近我转向MicroOLAP DAC for MySQL作为更好的替代方案有很多原因
我也尝试了新的FireDAC,我非常不鼓励使用它,太多的复杂性,难以处理的unicode,难以部署。
祝你好运。
答案 2 :(得分:0)
您可以使用dbExpress。您唯一需要的是来自5.1.X服务器的libmysql.dll。
答案 3 :(得分:0)
我多年来一直在使用MyDac,这是Delphi最好的DAC组件之一。
AFAIK它是唯一提供与MySql直接连接的本机组件(无ODBC,无OLEDB,无libmysql.dll)。
答案 4 :(得分:0)
这是我在Delphi XE4中使用的(也适用于以前的版本)。它在运行时创建组件。注意:如果要创建数据库,则需要使用默认的MySQL数据库“mysql”。确保你检查是否有权访问它,把try ..except..end;在你的代码中。是的,它需要将dbxmys.dll和libmysql.dll放在与* .exe相同的文件夹中。此视频可能会为您提供一些提示http://www.youtube.com/watch?v=6mRGAB4LsEE
unit MainUnit;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Rtti, System.Classes,
System.Variants, FMX.Types, FMX.Controls, FMX.Forms,
FMX.StdCtrls, Data.DBXMySQL, FMX.Edit, Data.DB, Data.SqlExpr, FMX.Dialogs, Windows,
Data.FMTBcd, FMX.Layouts, FMX.Memo, FMX.ListBox, FMX.ListView.Types,
FMX.ListView;
type
TForm3 = class(TForm)
Button1: TButton;
Label1: TLabel;
Edit1: TEdit;
Memo1: TMemo;
ListBox1: TListBox;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
MySQLConnection: TSQLConnection;
MySQLQuery: TSQLQuery;
Function ConnectToMySQLDatabase(szHostName, szUserName, szPassword, szDatabaseName: String): boolean;
end;
var
Form3: TForm3;
implementation
{$R *.fmx}
procedure TForm3.Button1Click(Sender: TObject);
begin
if ConnectToMySQLDatabase('localhost', 'root', 'passw_ord', 'table_name') = False then
Caption := 'Not Connected'
else
begin
Caption := 'Connected';
try
MySQLQuery.SQL.Clear;
{MySQLQuery.SQL.Add('insert into table_name(vardas_pavarde, asmens_kodas, kodas, pazym_nr, registravimo_data, '+
'data_nuo_kada_taikomas, isregistravimo_data, negalioja_nuo, paskelbimas_negaliojanciu, priezastis, pastabos) '+
'values ("Edijs Test", "3001000", "38", "PazPK122", "2013.05.03", "2013.06.01", NULL, NULL, NULL, "Tuščia", '+
'"ąčęėįšįųūž");');}
MySQLQuery.SQL.Add('select * from table_name where vardas_pavarde="edIJS tEst";');
MySQLQuery.Open;
Memo1.Lines.Add(VarToSTr(MySQLQuery['vardas_pavarde']));
Memo1.Lines.Add(VarToSTr(MySQLQuery['asmens_kodas']));
Memo1.Lines.Add(VarToSTr(MySQLQuery['pastabos']));
MySQLQuery.Close;
except
on E: Exception do
MessageBox(0, PWideChar(E.Message), 'Error', MB_ICONERROR);
end;
end;
end;
Function TForm3.ConnectToMySQLDatabase(szHostName, szUserName, szPassword, szDatabaseName: String): boolean;
begin
MySQLConnection := FindComponent('MySQLConnection') as TSQLConnection;
if not Assigned(MySQLConnection) then
MySQLConnection := TSQLConnection.Create(Self);
MySQLConnection.DriverName := 'MySQL';
MySQLConnection.GetDriverFunc := 'getSQLDriverMYSQL';
MySQLConnection.LibraryName := 'dbxmys.dll';
MySQLConnection.VendorLib := 'LIBMYSQL.dll';
MySQLConnection.Params.Values['HostName'] := szHostName;
MySQLConnection.Params.Values['Database'] := szDatabaseName;
MySQLConnection.Params.Values['User_Name'] := szUserName;
MySQLConnection.Params.Values['Password'] := szPassword;
MySQLConnection.Params.Values['ServerCharSet'] := 'utf8';
MySQLConnection.LoginPrompt := False;
try
MySQLConnection.Connected := True;
MySQLQuery := FindComponent('MySQLQuery') as TSQLQuery;
if not Assigned(MySQLQuery) then
MySQLQuery := TSQLQuery.Create(Self);
MySQLQuery.SQLConnection := MySQLConnection;
Result := True;
except
on E: Exception do
begina
MessageBox(0, PWideChar(E.Message), 'Error', MB_ICONERROR);
Result := False;
end;
end;
end;
end.
答案 5 :(得分:0)
在Delphi 7中使用DB Express和MySQL 5.x. 看到这个链接
http://www.justsoftwaresolutions.co.uk/delphi/dbexpress_and_mysql_5.html