Welcome to Sign in | Help
in Search

Conectarea la o baza de date MySQL

Last post 05-16-2008, 1:41 PM by ignatandrei. 31 replies.
Page 2 of 3 (32 items)   < Previous 1 2 3 Next >
Sort Posts: Previous Next
  •  03-04-2008, 6:29 PM 4279 in reply to 4274

    Re: Conectarea la o baza de date MySQL

    Nush ce sa zic...as vrea sa fie ceva mai complex, dar nush daca mai am timp (avand in vedere ca am si porba scrisa, trebuie sa-mi pregatesc subiectele, mai am sesiunea de examene din vara si de facut proiectul unde totul este nou: sintaxa C#, MySQL). Ma gandesc ca as vrea sa stiu pt pe viitor. Cred ca ma opresc totusi la varianta cu conexiunea pe forma, ca mai am foarte multe de facut la proiect. Iti multumesc mult ca ai rabdare si ma poti ajuta.

       Uite cam asta a scris colega mea in programul principal:

    using System;

    using System.Collections.Generic;

    using System.Windows.Forms;

    using System.Data.SqlClient;

     

     

    namespace Licenta

    {

        static class Program

        {

            public static SqlConnection sqlConn;

            /// <summary>

            /// The main entry point for the application.

            /// </summary>

            [STAThread]

            static void Main()

            {

                string strParameters = "Data Source=UserName;Initial Catalog=DataBaseName;Integrated Security= true";

                sqlConn = new SqlConnection(strParameters);

                sqlConn.Open();

     

                Application.EnableVisualStyles();

                Application.SetCompatibleTextRenderingDefault(false);

                Application.Run(new Form6());

            }

        }

    }

    Mersi ink o data pt timpul acordat.

  •  03-04-2008, 6:43 PM 4281 in reply to 4279

    Re: Conectarea la o baza de date MySQL

    toia_solomon:

    Nush ce sa zic...as vrea sa fie ceva mai complex, dar nush daca mai am timp (avand in vedere ca am si porba scrisa, trebuie sa-mi pregatesc subiectele, mai am sesiunea de examene din vara si de facut proiectul unde totul este nou: sintaxa C#, MySQL). Ma gandesc ca as vrea sa stiu pt pe viitor. Cred ca ma opresc totusi la varianta cu conexiunea pe forma, ca mai am foarte multe de facut la proiect. Iti multumesc mult ca ai rabdare si ma poti ajuta.

       Uite cam asta a scris colega mea in programul principal:

    using System;

    using System.Collections.Generic;

    using System.Windows.Forms;

    using System.Data.SqlClient;

     

     

    namespace Licenta

    {

        static class Program

        {

            public static SqlConnection sqlConn;

            /// <summary>

            /// The main entry point for the application.

            /// </summary>

            [STAThread]

            static void Main()

            {

                string strParameters = "Data Source=UserName;Initial Catalog=DataBaseName;Integrated Security= true";

                sqlConn = new SqlConnection(strParameters);

                sqlConn.Open();

     

                Application.EnableVisualStyles();

                Application.SetCompatibleTextRenderingDefault(false);

                Application.Run(new Form6());

            }

        }

    }

    Mersi ink o data pt timpul acordat.


    Inlocuiesti
    using System.Data.SqlClient;
    cu using de MySQL
    si
    SqlConnection
    cu MySQLConnection

    In form6 faci acelasi lucru ...

    DAR  -este impotriva "Best Practices" care recomanda deschiderea de conexiune cit mai tirziu - si inchiderea de conexiune cit mai devreme


    Ignat Andrei
    http://serviciipeweb.ro/iafblog
  •  03-04-2008, 7:58 PM 4282 in reply to 4279

    Re: Conectarea la o baza de date MySQL

    Tu sti cel mai bine care sunt sansele sa te intrebe cand deschizi si inchizi conexiunea insa eu as urma sfatul lui Andrei si as incerca sa deshid conexiunea cat mai tarziu si sa o tin deschisa cat mai putin timp;

    Plus de asta mie imi place sa folosesc un bloc Try Catch cand o deschid:

    private void btn_Connect_Click(object sender, System.EventArgs e)
            {
    this.sqlConn.ConnectionString = this.connection_string;
                try
                {
                    this.sqlConn.Open();
                    if(this.sqlConn.State.Equals(System.Data.ConnectionState.Open))
                    {


                        // aici pui ce setari ai de facut (eu am facut un label vizibil care zice sa e conectat - probabil ca exista variante mai elegante)

                        this.lbl_Stare.Visible = true;
                        //this.btn_Disconnect.Enabled = true;
                        //this.btn_Connect.Enabled = false;
                        //this.btn_Generate.Enabled = false;
                        //this.btn_Ok.Enabled = true;
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString(),"conexiunea nu s-a putut realiza");
                    //this.btn_Ok.Enabled = false;
                }
    }

    acolo unde folosesc conexiunea procedez asa:

    if(this.sqlConn.State.Equals(System.Data.ConnectionState.Open))
                {
                //  codul care foloseste conexiunea
                }

    si o inchid cam asa:

    private void btn_Disconnect_Click(object sender, System.EventArgs e)
            {
                this.sqlConn.Close();
                if(this.sqlConn.State.Equals(System.Data.ConnectionState.Closed))
                {
                    this.lbl_Stare.Visible = false;
                    //this.btn_Disconnect.Enabled = false;
                    //this.btn_Connect.Enabled = true;
                    //this.btn_Generate.Enabled = true;
                }
            }

    PS: acesta e cod dintr-o aplicatie care se leaga la SqlServer, pt MySql sunt cateva modificari de facut dupa modelul aratat de Andrei

    Important: eu nu as coda in program continutul variabilei connection_string (probabil ca sti deja dar mai bine sa repet)

    Si o intrebare pt Andrei: Sti vre-o clasa eleganta si flexibila care sa permita conectarea la baze de date? - eu am o clasa facuta mai din topor (nu stau foarte bine la POO) dar care lucreaza satisfacator insa numai pe MS SQL Server (pt SQL Client)
  •  03-05-2008, 2:16 AM 4286 in reply to 4282

    Re: Conectarea la o baza de date MySQL - @Gherry

    @Gherry : in loc de try/catch foloseste using -  e mai compact si face acelasi lucru
    using(SQLConnection sc=new SQLConnection())
    {
    sc.ConnectionString = <conexiune>;
    sc.Open();
    using(SQLCommand sco =new SQLCommand())
    {
        sco.Commandtype =...
        sco.CommandText = ...
        <excutat sco>
       
    }
    }


    @Gherry : Exista nu stiu cite ORM-uri care incearca sa fie de toate pentru toate BD(NHibernate de exemplu, Linq mai nou)
    Gindeste-te ca sintaxa pentru selectarea paginii 3 dintr-o tabela cu 27 de rinduri difera substantial intre MySQL , DB2, SQL Server, Oracle,....
    Parerea mea ar fi : Daca acea clasa a ta functioneaza bine pe SQL Server si ai nevoie sa mearga pe oracle, ai 2 variante:
    1. Foloseste clase/interfete de baza ( DBCOmmand, IDbConnection) - pe care le instantiezi fie cu SQLCOnnection, fie cu OracleConnection
    2. Deriva o interfata din clasa ta , astfel incit implementarea Oracle, intr-o alta clasa , sa poata sa fie comuna.

    In amindoua cazurile, la runtime, in functie de o setare, instantiezi cu oracle sau sql server.
    Daca nu ai nevoie - nu fa nimic  YAGNI
    Ignat Andrei
    http://serviciipeweb.ro/iafblog
  •  03-08-2008, 12:44 AM 4318 in reply to 4286

    Re: Conectarea la o baza de date MySQL - @Gherry

    thx, pt sfatul cu "using", cat despre cealalta problema pe mine ma interesa doar partea care ma ajuta sa obtin connection string (ceva in genul la Data Link Properties) dar ai dreptate: YAGNI Smile

  •  03-12-2008, 12:41 PM 4349 in reply to 4281

    Re: Conectarea la o baza de date MySQL

    Tot nu am reusit sa ma conectez....am incercat in fel si chip...oricum fac, tot de acelasi lucru dau (pe care nu stiu cum sa-l rezolv). As putea sa creez conexiunea mare, ca sa zic asa, de la Tools -> Connect to Database -> .... dar nu este MySql-ul , pe care sa-l selectez. Apoi am renuntat la asta, incercand sa fac altfel: Deschid un nou proiect, apoi din meniu : Project -> Add Reference ->selectez MySql.Data (care tine de connectorul 5.0 pe care tocmai l-am instalat) .Am facut asta, si incep sa folosesc obiectul DataSet pe un form (pt a a duce nishte date), dar tot de New Connection dau, cel de care m-a ferit la prima varianta.  

          Am impresia ca nu este ceva greu, dar mie imi scapa.

          Daca se poate o mana de ajutor....

          Multumesc.

  •  03-12-2008, 1:03 PM 4350 in reply to 4349

    Re: Conectarea la o baza de date MySQL

    da-mi te rog adresa de unde ai luat libraria pt MySql ca sa o iau si eu si apoi o sa pot sa iti spun mai multe.
  •  03-12-2008, 4:48 PM 4355 in reply to 4350

    Re: Conectarea la o baza de date MySQL

    Am reusittttttt!!!!!!!!!! <:-P   Mai trebuia sa instalez MySQL Visual Studio Plugin 1.1 , de aici: http://dev.mysql.com/downloads/visual-studio-plugin/index.html care este compatibil cu Mysql connector 5.0 (care tb si el instalat) : http://dev.mysql.com/downloads/connector/net/5.0.html.

     

  •  03-12-2008, 8:40 PM 4357 in reply to 4355

    Re: Conectarea la o baza de date MySQL

    daca ai cumva un link de unde ai luat MySql Server ar fi util ca sa pot testa (sa pun direct cod de mysql in loc de sql server), daca nu ai o sa caut eu.

    intre timp cred ca merita sa citesti articolul:
    http://www.codeproject.com/KB/database/ConnectingToMySQL.aspx

    din care cea mai importanta parte ar fi:
                connBuilder.Add("Database", "shop");
    connBuilder.Add("Data Source", "localhost");
    connBuilder.Add("User Id", "root");
    connBuilder.Add("Password", "masterkey");
    pt ca asta ar trebui sa dea cateva idei despre connectionstring.

    anyway, o sa iti spun exact cum este dupa ce testez.


  •  03-12-2008, 10:58 PM 4359 in reply to 4355

    Re: Conectarea la o baza de date MySQL

    nu mai e nevoie de link pt ca am gasit si MySql Server;
    iata codul care l-am folosit eu pt conexiune:

    string connectionString;
    MySql.Data.MySqlClient.MySqlConnection mySqlConn = new MySql.Data.MySqlClient.MySqlConnection();

    connectionString = "Data Source=localhost;Database=eug_db;User ID=root;Password=parola;";
    this.mySqlConn.ConnectionString = this.connectionString;

    this.mySqlConn.Open();

    this.mySqlConn.Close();

    "eug_db" este numele bazei de test.

    eu am folosit parola si recomand sa faci la fel. mai devreme sau mai tarziu vei avea nevoie de ea asa ca mai bine obisnuieste-te sa o folosesti de la inceput.


  •  03-13-2008, 12:05 AM 4360 in reply to 4359

    Re: Conectarea la o baza de date MySQL

    Acesta este codul pe care l-am scris eu intr-un form in care vreau sa aduc toate inregistrarile din tabela judete :

    try

    {

    //create a new mysqlconnection

    MySqlConnection mySqlConn = new MySqlConnection("datasource=localhost;username=root;database=farmacie");

    //create a mysql DataAdapter

    MySqlDataAdapter judeteAdapter = new MySqlDataAdapter("Select * from localitati", mySqlConn);

    //create a dataset

    DataSet judeteDataSet = new DataSet();

    //now fill and bind the DataGrid

    judeteAdapter.Fill(judeteDataSet, "localitati");

    dataGrid1.DataSource = judeteDataSet.Tables["localitati"].DefaultView;

    dataGrid1.SetDataBinding(judeteDataSet, "localitati");

    }

    catch (MySqlException ex) { MessageBox.Show(ex.Message); }

     

    Dar mentionez ink o data ca am instalat Plugin-ul si Connector-ul. 

    Voi pune parola la MySQL, asa cum m-ai sfatuit.

    Ai idee care este sintaxa pt o cheie multipla in MySQL?(Cum declar o cheie multipla in mysql?)   Si daca o alta tabela face legatura prin ea (deci e cheie straina)....cum tb sa ma refer la ea? : "FOREIGN KEY(LinieNir) REFERENCES NoteIntrareReceptie(   ???cheia multipla???   )". Cea care foloseste cheia multipla este tabela LiniiNir.

  •  03-13-2008, 3:38 AM 4361 in reply to 4360

    Re: Conectarea la o baza de date MySQL

    in primul rand tb sa mantionez ca Andrei e mult mai in masura decat mine sa iti spuna care e forma cea mai eleganta de a aranja codul (asta e un aspect la care eu mai am de lucru) insa legat de blocul try-catch, e de preferat sa ti cat mai putin cod posibil in el (eu folosesc acel bloc doar pt a deschide coneziunea ca sa dea mesaj de eroare in loc sa crape programul in cazul in care nu este corect connection string-ul) si se merita sa testezi varianta cu using de care zicea Andrei.

    legat de cheile multiple: eu nu le folosesc. prefer sa folosesc un id numeric care sa se autoincrementeze.

    inca un sfat foarte util: cumpara cel putin o carte pe tema asta (e foarte util sa ai la indemana acele exemple) - chiar daca nu este special pt combinatia MySQL - VS o sa fie utila pt ca va semana foarte mult modul de abordare si cea mai mare parte din cod va fi la fel.
  •  03-16-2008, 3:33 PM 4380 in reply to 4361

    Re: Conectarea la o baza de date MySQL

    imi poti recomanda cateva carti pt visual studio 2005 (C#) si MySQL?...ceva pdf-uri, doc-uri...orice. Multumesc!

  •  03-16-2008, 6:05 PM 4381 in reply to 4380

    Re: Conectarea la o baza de date MySQL

    in primul rand, pe partea de proiectare de baze de date, mie mi-a placut in mod deosebit cartea lui Michael J Hernandez - "Proiectarea bazelor de date" (titlu original: "Database design for mere mortals: a hands-on guide to relational database design"); pe partea de C#, sunt doua carti care mie mi-au fost foarte utile acum 3 ani cand am inceput sa invat acest limbaj: "C# .NET Web Developer's Guide" - are mai multi autori printre care Adrian Turtschi, Jason Werry, Greg Hack si Joseph Albahari - foarte utila in primul rand pt partea de ADO.NET (si pt un stil foarte interesant de lucru cu procedurile stocate) si "Programare in Windows cu C#" de Charles Petzold (titlu original: "Programming Microsoft Windows with C#") o carte care explica amanuntit o multime de lucruri si pe care nu o voi citi niciodata in intregime insa am deschis-o de multe ori pt a afla detalii.

    cartile de C# sunt un pic cam vechi (2003) deci foarte probabil ca se geseste deja ceva mult mai nou la acest capitol insa in ceea ce priveste proiectarea bazelor de date, eu zic ca acea carte contine tot ce are nevoie un incepator sa invete pt a devenii un bun proiectant de baze de date iar explicatiile mi s-au parut foarte elegante. Totusi, se rezuma exclusiv la procesul de proiectare asa ca vei avea nevoie si de o carte care sa explice MySQL si functiile de acolo (din pacate aici nu am nici o recomandare)
  •  03-17-2008, 6:58 PM 4392 in reply to 4381

    Re: Conectarea la o baza de date MySQL

    Ms mult! O sa ma interesez de cartile recomandate.
Page 2 of 3 (32 items)   < Previous 1 2 3 Next >
View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems