اذهب إلى المحتوى

السؤال

نشر

أريد إدخال جميع قيم مصفوفة في جدول Sql باستعمال #C، لكن أواجهه مشكل في فتح وغلق الإتصال بقاعدة البيانات عند كل عملية إدخال، فهل من طريقة للقيام بالعملية أسهل وأنجع؟

هذا مثال للكود :

public void InsertDataToDb()
{
    string connectionString = ConfigurationManager.ConnectionStrings["connection"].ConnectionString;
    var records = GetRecords();

    using (SqlConnection conn = new SqlConnection(connectionString))
    {
        SqlCommand cmd =
            new SqlCommand(
                "INSERT INTO TableName (param1, param2, param3) VALUES (@param1, @param2, @param3)");
        cmd.CommandType = CommandType.Text;
        cmd.Connection = conn;
        foreach (var item in records)
        {
            cmd.Parameters.AddWithValue("@param1", item.param1);
            cmd.Parameters.AddWithValue("@param2", item.param2);
            cmd.Parameters.AddWithValue("@param3", item.param3);

            conn.Open();
            cmd.ExecuteNonQuery();
            cmd.Parameters.Clear();
            conn.Close();
        }
    }
}

هل من حل؟

Recommended Posts

  • 0
نشر

الحل:

  public void InsertDataToDb()
    {
        string connectionString = ConfigurationManager.ConnectionStrings["connection"].
            ConnectionString;
        var records = GetRecords();

        using (SqlConnection conn = new SqlConnection(connectionString))
        {
            conn.Open();

            SqlCommand cmd =
                new SqlCommand(
                    "INSERT INTO TableName (param1, param2, param3) " +
                    " VALUES (@param1, @param2, @param3)");
            cmd.CommandType = CommandType.Text;
            cmd.Connection = conn;
            cmd.Parameters.Add("@param1", DbType.String);
            cmd.Parameters.Add("@param2", DbType.String);
            cmd.Parameters.Add("@param3", DbType.String);

            foreach (var item in records)
            {
                cmd.Parameters[0].Value = item.param1;
                cmd.Parameters[1].Value = item.param2;
                cmd.Parameters[2].Value = item.param3;

                cmd.ExecuteNonQuery();
            }

            conn.Close();
        }
    }

ملاحظات:

  • لاحظ أن المتغير cmd يقبل Parameters يحدد برقم يبدأ من 0.
  • loop foreach تمرر بالدور على مختلف قيم المصفوفة، وبداخل هذه الدالة -foreach- ينفذ أمر cmd.ExecteNonQuery لإدخال قيم كل صف من المصفوف في الجدول اتباعاً، وهذا أمرٌ مهم، حيث يتوجب عليك تصفح وقراءة جميع قيم المصفوفة، مع إدخال القيم في الجدول على Sql.
  • بعد انتهاء الدالة Foreach نغلق الاتصال بقاعدة البيانات.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...