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.