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




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

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


यह निश्चित रूप से ऐसा करने का एक अच्छा तरीका है। लेकिन यदि आप 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());

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

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


यह एक वैकल्पिक तरीका है (डेटा रीडर इस से तेज है):

string s = "";
SqlConnection conn = new SqlConnection("Server=192.168.1.1;Database=master;Connect Timeout=30;User ID=foobar;Password=raboof;");
SqlDataAdapter da = new SqlDataAdapter("SELECT TOP 5 name, dbid FROM sysdatabases", conn);
DataTable dt = new DataTable();

da.Fill(dt);

for (int i = 0; i < dt.Rows.Count; i++)
{
    s += dt.Rows[i]["name"].ToString() + " -- " + dt.Rows[i]["dbid"].ToString() + "\n";
}

MessageBox.Show(s);

मुझे लगता है, आप इकाई ढांचे का प्रयास कर सकते हैं।

using (SchoolDBEntities ctx = new SchoolDBEntities())
{
     IList<Course> courseList = ctx.GetCoursesByStudentId(1).ToList<Course>();
     //do something with courselist here
}

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

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);
      }
    }
  }
}

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

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"]);
            }
        }
    }
}




connection