2010-05-27 14 views
10

मैं यहां एक पूर्ण शुरुआत कर रहा हूं। किसीडेल्फी 7: एडीओ, मूल कोडिंग उदाहरण की आवश्यकता है

  • करने के लिए कुछ डेल्फी कोड पोस्ट कृपया एक डेटाबेस
  • एक साधारण तालिका
  • बंद डेटाबेस

तो, बाद में

  • एक डेटाबेस को खोलने बनाने जोड़ने
  • प्रत्येक तालिका को पढ़ें
  • किसी तालिका के
  • के प्रत्येक क्षेत्र को पढ़ तो जानकारी नहीं होने के लिए एक साधारण खोज

क्षमा प्रदर्शन करते हैं। मैंने Google किया, लेकिन एक उपयोगी ट्यूटोरियल नहीं मिला ...

इसके अलावा, यह उपयोगी होगा अगर अंतर्निहित डेटाबेस MySQL (5.1.36) (मुझे यह भी पता नहीं है कि इससे कोई फर्क पड़ता है)

उत्तर

26

@mawg, मैं तुम्हें ilustrate करने के लिए एक साधारण प्रोग्राम लिखा कैसे एडीओ और डेल्फी के साथ काम करते हैं। यह एक कंसोल अनुप्रयोग है, लेकिन मूल बातें बताता है।

इस कोड को निष्पादित करने से पहले आपको इस location से ओडीबीसी कनेक्टर को डाउनलोड और इंस्टॉल करना होगा।

आप इस कोड को अपनी आवश्यकताओं में सुधार और अनुकूलित कर सकते हैं।

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. 
+0

मैं एक एकल लाइन बदल गया है, AdoConnection.ConnectionString को: = स्वरूप (StrConnection [ 'स्थानीय होस्ट', डेटाबेस, 'मूल', '']); और यह काम किया !! कम से कम, यह InsertReg() तक चला और गलत प्रकार के तर्कों के बारे में शिकायत की। लेकिन यह कभी भी बुरा मत मानो, यह वही है जो मैंने आशा की थी !!!! मैं आपको बहुत धन्यवाद नहीं कर सकते!!! – Mawg

+0

क्या इस 'स्ट्रोकनेक्शन =' ड्राइवर = {MySQL ओडीबीसी 3.51 चालक} का उपयोग करने का कोई तरीका है; सर्वर =% s; डेटाबेस =% s; उपयोगकर्ता =% s; पासवर्ड =% s; विकल्प = 3; ';' कनेक्शन स्ट्रिंग लेकिन 'डेटाबेस' निर्दिष्ट नहीं है? .. मेरा मतलब है कि अगर मैं कनेक्शन जांचना चाहता हूं लेकिन अभी तक कोई डेटाबेस नहीं बनाया गया है। – PresleyDias

+0

@PresleyDias, आपको हमेशा कनेक्शन स्ट्रिंग में डेटाबेस निर्दिष्ट करने की आवश्यकता होती है, ताकि आप "mysql" db का उपयोग कर सकें जो हमेशा मौजूद है। – RRUZ

3

डेल्फी उदाहरणों के लिए सबसे अच्छे स्थानों में से एक www.delphi.about.com है। उनके पास ट्यूटोरियल और उदाहरण हैं। उनके मंच वास्तव में भी अच्छे हैं। डेव

+0

धन्यवाद (+1)। मैंने http://delphi.about.com/od/mysql/qt/mysqladoconn.htm को देखा लेकिन उलझन में आया कि ऐसा लगता है कि आपको कनेक्ट स्ट्रिंग में डेटाबेस नाम देना है, लेकिन ऐसा लगता है कि हमेशा एक डेटाबेस "mysql" कहा जाता है, इसलिए मैं उससे कनेक्ट करने का प्रयास करूंगा और फिर अपना डेटाबेस बनाउंगा। अब तक, कोई सफलता नहीं है, इसलिए एक ठोस कोड उदाहरण के लिए खोज। फिर भी धन्यवाद। यह एक अच्छी साइट है। – Mawg

-1

आप, आपके सिस्टम में MyODBC जरूरत है बेहतर इस्तेमाल ZEOS mysql डेटाबेस से कनेक्ट करने के

+0

क्या आपने प्रश्न पढ़ा? यह डेल्फी कोड के लिए पूछता है ... – Mawg

संबंधित मुद्दे