Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    433

    c# Connessione unica per tutto il programma

    ciao a tutti ...

    or dunque.... ho creato una piccola applicazione WIN FORM con C# (sono 5 form in totale)

    ora io devo connettere un db (i questo caso mysql) in ogni form ovvero fare una o più query per form..

    attualmente io PER OGNI FORM scrivo:
    codice:
    using....
    using MySql.Data.MySqlClient;
    namespace mysql2
    {
        public partial class Mysql : Form
        {
           //connessione al db
           MySqlConnection DBConn = new MySqlConnection("Database=prova2; Data Source=localhost;User Id=root; Password=");
           //data set
           DataSet ds = new DataSet();
           //query 
           string qry = "";*/
            
            
            public Mysql()
            {
                InitializeComponent();
            }
    
            private void chiudiToolStripMenuItem_Click(object sender, EventArgs e)
            {
                chiusura();
            }
    resto del codice....
    
     qry = " INSERT INTO `prova2`(`id`,`nome`) VALUES ('" + idn + "','" + nomen + "');";
    
                label6.Text = qry;
                MySqlCommand cmd2 = new MySqlCommand(qry);        
                //
                cmd2.Connection = DBConn;
                DBConn.Open();
    
    
    ecc..
    .
    .
    .
    .
    in questo modo funziona tutto ... ma la mia domanda è come faccio a connettermi al db una sola volta per tutti i form? avete consigli?

    grazie 1000
    Donerò loro dei fiori... poiché... sotto le nuvole... tutto è così rozzo e sporco

  2. #2
    La gestione su ado.net è disconnessa il che vuol dire che la connessione va mantenuta aperta per il minor tempo possibile.
    Addirittura se utilizzi dataadapter e i suoi metodi (update, fill) non hai neanche bisogno di aprire / chiudere la connessione.
    Diverso il discorso dell'impostazione dell'oggetto MySqlConnection, e ConnectionString, nessuno ti vieta di generare e utilizzare una classe comune che definisce in modo centralizzato gli oggetti che vuoi utilizzare in tutta la tua applicazione.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    433
    sto ancora imparando il c# e la programmazione ad oggetti...

    ma dove la creo la classe con la connessione ???

    nel file program.cs

    lì creo la classe con i suo metodi .... e di volta in volta li richiamo nei form???

    grazie
    Donerò loro dei fiori... poiché... sotto le nuvole... tutto è così rozzo e sporco

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    433
    up! :master:
    Donerò loro dei fiori... poiché... sotto le nuvole... tutto è così rozzo e sporco

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    46
    Io utilizzo questo per caricare i dati in qualsiasi datatable....

    codice:
    public class DBConnection
        {
            public DBConnection()
                {
                }
            public OleDbConnection ConnessioneDatabase()
                {
                try
                    {
                        string connString = ConfigurationManager.AppSettings["stringaconn"];
                        OleDbConnection conn = new OleDbConnection(connString);
                        return conn;
                    }
                    catch (System.Data.OleDb.OleDbException ex)
                    {
                        MessageBox.Show(ex.Message);
                        return null;
                    }
                }
    
            public DataTable CaricaTabella(string query,DataTable dt)
            {
                try
                {
                    OleDbConnection conn = ConnessioneDatabase();
                    conn.Open();
                    OleDbDataAdapter oledatabase = new OleDbDataAdapter(query, conn);
                    oledatabase.Fill(dt);
                    return dt;
                }
                catch (System.Data.OleDb.OleDbException ex)
                {
                    MessageBox.Show(ex.Message);
                    return null;
                }
                catch (System.NullReferenceException EN)
                {
                    MessageBox.Show(EN.Message);
                    return null;
                }
                catch (System.InvalidOperationException IO)
                {
                    MessageBox.Show(IO.Message);
                    return null;
                }
            }
        }

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    433
    scusate... forse mi sono spiegato male....

    il mio problema non è come interagire con il DB quello lo so fare.... (bene non lo so ma funziona)


    il mio problema è : una volta che avvio il programma, è possibile aprire la connessione al db e quindi eseguire tutte le query una sola volta senza aprire la connessione in ogni singolo form???


    io attualmente per ogni form apro la connessione , eseguo le query , e chiudo...

    è possibile aprire la connessione e richiuderla alla chiusura del programma?

    spero di aver posto correttamente la domanda...

    grazie
    Donerò loro dei fiori... poiché... sotto le nuvole... tutto è così rozzo e sporco

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    433
    Donerò loro dei fiori... poiché... sotto le nuvole... tutto è così rozzo e sporco

  8. #8
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    A parte quello che ti ha detto Cteniza, basta aprire una connessione globale, aprirla all'avvio e chiuderla alla fine.

    Quindi, del codice che ti ha mostrato aligo , cosa c'è che non ti garba ?

    Ciao

  9. #9
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    Semplicemente l'oggetto mySqlConnection aperto te lo passi tra i vari form passandolo nel costruttore...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.