Je suis un débutant complet ici. Quelqu'un peut-il s'il vous plaît poster du code Delphi à p>
Puis, plus tard p>
Désolé d'être si désemparé. J'ai fait google, mais j'ai trouvé un tutoriel utile ... P>
En outre, il serait utile que la base de données sous-jacente était MySQL (5.1.36) (je ne sais même pas si cela fait une différence) P>
3 Réponses :
L'un des meilleurs endroits pour les exemples Delphes est www.delphi.about.com. Ils ont des tas de tutoriels et d'exemples. Leurs forums sont vraiment bons aussi bien. Dave p>
Merci (+1). J'ai regardé delphi.about.com/od/mysql/qt/mysqladoconn. htm mais confus qu'il semble que vous devez donner un nom de base de données dans la chaîne de connexion, mais il semble qu'il y ait toujours une base de données appelée "mysql", donc je vais essayer de vous connecter à cela, puis de créer mon base de données. Jusqu'à présent, pas de succès, d'où la recherche d'un exemple de code concret. Merci encore, cependant. C'est un bon site.
Vous avez besoin de MyODBC dans votre système, mieux utiliser ZEOS pour connecter la base de données MySQL P>
@mawg, j'ai écrit un programme simple pour que vous ayez ilustrer comment travailler avec Ado et Delphi. Ceci est une application de console, mais explique les bases.
Avant d'exécuter ce code, vous devez télécharger et installer le connecteur ODBC à partir de cette emplacement . P>
Vous pouvez améliorer et adapter ce code à vos besoins. P>
program ProjectMysqlADO;
{$APPTYPE CONSOLE}
uses
ActiveX,
DB,
ADODB,
SysUtils;
const
//the connection string
StrConnection='Driver={MySQL ODBC 3.51 Driver};Server=%s;Database=%s;User=%s; Password=%s;Option=3;';
var
AdoConnection : TADOConnection;
procedure SetupConnection(DataBase:String);//Open a connection
begin
Writeln('Connecting to MySQL');
AdoConnection:=TADOConnection.Create(nil);
AdoConnection.LoginPrompt:=False;//dont ask for the login parameters
AdoConnection.ConnectionString:=Format(StrConnection,['your_server',DataBase,'your_user','your_password']);
AdoConnection.Connected:=True; //open the connection
Writeln('Connected');
end;
procedure CloseConnection;//Close an open connection
begin
Writeln('Closing connection to MySQL');
if AdoConnection.Connected then
AdoConnection.Close;
AdoConnection.Free;
Writeln('Connection closed');
end;
procedure CreateDatabase(Database:string);
begin
Writeln('Creating Database '+database);
AdoConnection.Execute('CREATE DATABASE IF NOT EXISTS '+Database,cmdText);
Writeln('Database '+database+' created');
end;
procedure CreateTables;
begin
Writeln('Creating Tables');
AdoConnection.Execute(
'CREATE TABLE IF NOT EXISTS customers ('+
'id INT,'+
'name VARCHAR(100),'+
'country VARCHAR(25) )',cmdText);
Writeln('Tables Created');
end;
procedure DeleteData;
begin
Writeln('Deleting dummy data');
AdoConnection.Execute('DELETE FROM customers');
Writeln('Data deleted');
end;
procedure InsertData;
Procedure InsertReg(id:integer;name,country:string);
var
ADOCommand : TADOCommand;
begin
ADOCommand:=TADOCommand.Create(nil);
try
ADOCommand.Connection:=AdoConnection;
ADOCommand.Parameters.Clear;
ADOCommand.CommandText:='INSERT INTO customers (id,name,country) VALUES (:id,:name,:country)';
ADOCommand.ParamCheck:=False;
ADOCommand.Parameters.ParamByName('id').Value := id;
ADOCommand.Parameters.ParamByName('name').Value := name;
ADOCommand.Parameters.ParamByName('country').Value := country;
ADOCommand.Execute;
finally
ADOCommand.Free;
end;
end;
begin
Writeln('Inserting Data');
InsertReg(1,'Lilian Kelly','UK');
InsertReg(2,'John and Sons','USA');
InsertReg(3,'William Suo','USA');
InsertReg(4,'MARCOTEC','UK');
Writeln('Data Inserted');
end;
procedure ReadData;
var
AdoQuery : TADOQuery;
begin
AdoQuery:=TADOQuery.Create(nil);
try
AdoQuery.Connection:=AdoConnection;
AdoQuery.SQL.Add('SELECT * FROM customers');
AdoQuery.Open;
while not AdoQuery.eof do
begin
Writeln(format('%s %s %s',[AdoQuery.FieldByname('id').AsString,AdoQuery.FieldByname('name').AsString,AdoQuery.FieldByname('country').AsString]));
AdoQuery.Next;
end;
finally
AdoQuery.Free;
end;
end;
begin
CoInitialize(nil); // call CoInitialize()
try
Writeln('Init');
try
SetupConnection('mysql'); //first will connect to the mysql database , this database always exist
CreateDatabase('Mydb'); //now we create the database
CloseConnection; //close the original connection
SetupConnection('Mydb'); //open the connection pointing to the Mydb database
CreateTables; //create a sample table
DeleteData; //Delete the dummy data before insert
InsertData; //insert a dummy data
ReadData; //read the inserted data
CloseConnection; //close the connection
except
on E : Exception do
Writeln(E.Classname, ': ', E.Message);
end;
Readln;
finally
CoUnInitialize; // free memory
end;
end.
J'ai changé une seule ligne, à adoconnection.ConnectionsRing: = Format (Strconnection ['localh Ost', base de données, 'root'', ']); Et ça a fonctionné !! Au moins, il a couru jusqu'à insertreg () et s'est plaint d'arguments du mauvais type. Mais peu importe ça, c'est exactement ce que j'avais espéré !!!! Je ne vous remercierai jamais assez!!!
Y a-t-il un moyen d'utiliser ce strconnection = 'pilote = {MySQL ODBC 3.51 pilote}; serveur =% s; base de données =% s; utilisateur =% s; Mot de passe =% s; option = 3; '; code> chaîne de connexion mais ne spécifie pas la base de données code>? .. Je veux dire si je veux vérifier si la connexion mais il n'y a pas encore créé de bases de données.
@Presleydias, vous avez toujours besoin de spécifier une base de données dans la chaîne de connexion afin que vous puissiez utiliser le DB "mysql" qui existe toujours.