c# - यवस - मैं सी#में एक रिकॉर्डसेट पर डेटाबेस और लूप से कैसे कनेक्ट करूं?




हिंदी में डेटाबेस डिजाइन की प्रक्रिया (5)

सी # में रिकॉर्ड्स के सेट के लिए डेटाबेस को कनेक्ट और क्वेरी करने का सबसे आसान तरीका क्या है?


@ गोयिक्स - यह स्मृति से लिखे गए कुछ के लिए उत्कृष्ट है। यहां परीक्षण किया - पाया कि कनेक्शन खोला नहीं गया था। अन्यथा बहुत अच्छा है।

using System.Data.OleDb;
...

using (OleDbConnection conn = new OleDbConnection())
{
    conn.ConnectionString = "Provider=sqloledb;Data Source=yourServername\\yourInstance;Initial Catalog=databaseName;Integrated Security=SSPI;";

    using (OleDbCommand cmd = new OleDbCommand())
    {
        conn.Open();
        cmd.Connection = conn;
        cmd.CommandText = "Select * from yourTable";

        using (OleDbDataReader dr = cmd.ExecuteReader())
        {
            while (dr.Read())
            {
                Console.WriteLine(dr["columnName"]);
            }
        }
    }
}

बहुत मोटे तौर पर और स्मृति से क्योंकि मेरे पास इस लैपटॉप पर कोड नहीं है:

using (OleDBConnection conn = new OleDbConnection())
{
  conn.ConnectionString = "Whatever connection string";

  using (OleDbCommand cmd = new OleDbCommand())
  {
    cmd.Connection = conn;
    cmd.CommandText = "Select * from CoolTable";

    using (OleDbDataReader dr = cmd.ExecuteReader())
    {
      while (dr.Read())
      {
        // do something like Console.WriteLine(dr["column name"] as String);
      }
    }
  }
}

यदि आप SQL सर्वर डेटाबेस (संस्करण 7 और ऊपर) से पूछताछ कर रहे हैं तो आपको OleDb कक्षाओं को System.Data.SqlClient नामस्थान ( SqlConnection , SqlCommand और SqlDataReader ) में संबंधित वर्गों के साथ प्रतिस्थापित करना चाहिए क्योंकि उन वर्गों को SQL सर्वर के साथ काम करने के लिए अनुकूलित किया गया है।

ध्यान देने योग्य एक और बात यह है कि आपको 'कभी भी' सभी का चयन नहीं करना चाहिए क्योंकि इससे आप इस तालिका में कॉलम जोड़ या निकाल सकते हैं, इसके बाद अप्रत्याशित परिणाम हो सकते हैं।


यदि आप बड़ी संख्या में कॉलम या रिकॉर्ड पढ़ने का इरादा रखते हैं तो यह नियमों को कैशिंग करने और दृढ़ता से टाइप किए गए तरीकों तक पहुंचने के लायक है, उदाहरण के लिए

using (DbDataReader dr = cmd.ExecuteReader()) {
  if (dr.Read()) {
    int idxColumnName = dr.GetOrdinal("columnName");
    int idxSomethingElse = dr.GetOrdinal("somethingElse");

    do {
      Console.WriteLine(dr.GetString(idxColumnName));
      Console.WriteLine(dr.GetInt32(idxSomethingElse));
    } while (dr.Read());
  }
}

यह निश्चित रूप से ऐसा करने का एक अच्छा तरीका है। लेकिन यदि आप LINQ से SQL का समर्थन करने वाले डेटाबेस का उपयोग करना चाहते हैं, तो यह बहुत अधिक मजेदार हो सकता है। यह ऐसा कुछ दिख सकता है:

MyDB db = new MyDB("Data Source=...");
var q = from db.MyTable
        select c;
foreach (var c in q)
  Console.WriteLine(c.MyField.ToString());






connection