Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

क्या इस वर्ग में डेटाबेस कनेक्शन पुन:प्रयोज्य है?

आपको जिस समस्या का सामना करना पड़ता है वह यह है कि आपने स्वयं को "नए कनेक्शन प्रति क्रिया" कोने में कोडित किया है। आप वास्तव में क्या लक्ष्य बनाना चाहते हैं, और इसे सर्वोत्तम अभ्यास माना जाता है, "कार्रवाई के प्रति बैच नया कनेक्शन" है।

इस मामले में मैं जो अनुशंसा करता हूं वह है कि आवश्यकता पड़ने पर कनेक्शन खोलना और निपटाए जाने पर बंद करना। हम क्या करेंगे कि odbc एडेप्टर को एक बड़े दायरे वाले वेरिएबल में ले जाया जाए ताकि इसे कक्षा के भीतर एक्सेस किया जा सके।

namespace databaseFunctions
{
    public class databaseConnection:IDisposable
    {
        private OdbcConnection con;
        private string connectionString;

        public databaseConnection(string connectionString){
            this.connectionString = connectionString;
        }


        public void OpenConnection(){
            if (con == null || con.IsClosed ){ // we make sure we're only opening connection once.
                con = new OdbcConnection(this.connectionString);
            }
        }
        public void CloseConnection(){
            if (con != null && con.IsOpen){ // I'm making stuff up here
                con.Close();
            }
        }

        public DataTable getFromDatabase(string SQL)
        {
            OpenConnection();

            DataTable rt = new DataTable();
            DataSet ds = new DataSet();
            OdbcCommand cmd = new OdbcCommand(SQL, con);
            da.SelectCommand = cmd;
            da.Fill(ds);
            try
            {
                rt = ds.Tables[0];
            }
            catch
            {   
                rt = null;
            }
            return rt;
        }

        public Boolean insertIntoDatabase(string SQL)
        {
            OpenConnection();

            OdbcCommand cmd = new OdbcCommand(SQL, con);
            con.Open();
            try
            {
                cmd.ExecuteNonQuery();
                return true;
            }
            catch
            {
                return false;
            }

        }


        // Implementing IDisposable method
        public void Dispose(){
            CloseConenction();
        }
    }
}

अब अगली बार जब आप अपनी कक्षा का उपयोग करें तो कुछ ऐसा करें

using (DatabaseConnection db = new DatabaseConnection()){
    db.InsertIntoDatabase(...);
    db.GetLastInsertID();
    db.GetFromDatabase(...);
}

उस कोड ब्लॉक के अंत में, क्योंकि यह IDisposeable है, यह आपके लिए उस कनेक्शन को डिस्पोज़ विधि में बंद कर देगा।

चीजें जो मैंने बदली हैं:

  • कार्यान्वित IDisposable इंटरफ़ेस
  • स्टेटिक से क्लास मेथड्स में बदला।
  • बंद कनेक्शन खोलने के लिए नए तरीके जोड़े
  • कनेक्शन वैरिएबल को क्लास लेवल स्कोप में ले जाया गया
  • कन्स्ट्रक्टर के लिए एक तर्क जोड़ा जो आपको एक कनेक्शन स्ट्रिंग में पास करने देता है (आपको इस कनेक्शन स्ट्रिंग को आप में रखना चाहिए Web.Config

संपादन:

  • कन्स्ट्रक्टर प्रति सुझाव कनेक्शन में लेता है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. psql इनपुट के लिए उपयुक्त डेटा डंप करने के लिए mysqldump प्राप्त करें (बच गए सिंगल कोट्स)

  2. मैसकल - सबसे कम संबंध संख्या के साथ पंक्ति प्राप्त करें

  3. MySQL में माइनस ऑपरेटर?

  4. Moodle MySQL डेटाबेस को स्केल करने की चुनौतियाँ

  5. एक पंक्ति में संख्या से 1 घटाएं SQL क्वेरी