الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

خطأ عند الربط مع sql

بدأه Hisham_IT في 15 فبراير 2011 · 5 رد · 484 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اثناء الربط مع sql وعند استخدامي ل stored procedure عن طريق برنامج سي شارب واجهتني مشكلة

فقد وضعت في حلقة for استدعاء cmd.ExecuteNonQuery() و لكن عند التكرار الثاني للحلقة ظهر لي خطا هو procedure or function has too many parameters speific عند cmd.ExecuteNonQuery()

شكرا لكم

Currently working on ASP.net ..... come Back Soon

#2

ممكن تضع كود السي شارب ............ المشكلة بتكرار الحلقة واسناد القيم

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#3

هي الكود...حيث الstored procedure تستقبل هذه العناصر

 public void Delete(SqlConnection channel, SqlCommand command, string[,] s, int index)
        {



            command.Connection = channel;
            command.CommandType = CommandType.StoredProcedure;
            command.CommandText = "Del";

            for (int i = 0; i < index; i++)
            {

                SqlParameter p1 = new SqlParameter("@name", SqlDbType.NVarChar, 50);
                p1.Value = s[i, 0];

                SqlParameter p2 = new SqlParameter("@sex", SqlDbType.NVarChar, 5);
                p2.Value = s[i, 1];

                SqlParameter p3 = new SqlParameter("@age", SqlDbType.Int);
                p3.Value = int.Parse(s[i, 2]);
                SqlParameter p4 = new SqlParameter("@nationalno", SqlDbType.NVarChar, 50);
                p4.Value = s[i, 3];
                SqlParameter p5 = new SqlParameter("@mobile", SqlDbType.NVarChar, 50);
                p5.Value = s[i, 4];
                SqlParameter p6 = new SqlParameter("@phone", SqlDbType.NVarChar, 50);
                p6.Value = s[i, 5];
                SqlParameter p7 = new SqlParameter("@fixedsum", SqlDbType.Money);
                p7.Value = s[i, 6];
                SqlParameter p8 = new SqlParameter("@date", SqlDbType.NVarChar, 50);
                p8.Value = s[i, 7];
                SqlParameter p9 = new SqlParameter("@time", SqlDbType.NVarChar, 50);
                p9.Value = s[i, 8];

                command.Parameters.AddRange(new SqlParameter[] { p1, p2, p3, p4, p5, p6, p7, p8, p9 });
                command.ExecuteNonQuery();//الخطأ يحدث هنا

        }
}

تم تعديل هذه المشاركة بواسطة Hisham_IT في 15 فبراير 2011 في 23:22

Currently working on ASP.net ..... come Back Soon

#4

السلام عليكم و رحمة الله و بركاته

قم باضافة هذا السطر في أول الFor Loop

command.Parameters.Clear();

تقبل خالص تحياتي

1
#5
wisamsalah كتب:

السلام عليكم و رحمة الله و بركاته

قم باضافة هذا السطر في أول الFor Loop

command.Parameters.Clear();

تقبل خالص تحياتي

شكرا كتيير....و الله يعطيك العافية...مشي الحال

Currently working on ASP.net ..... come Back Soon

#6

جيد جدا استخدامك للستورد بروسيجر ............ الخطأ يحصل من تكرار قيمة P يجب أن تقوم بإفراغ محتواها ........ المهم

طريقتك هذه تضغط بها على السيرفر كثيرا .......... وتنفذ فيها عدد قد يكون كبيرا من الاستعلامات المتكررة

براي أن تقوم بكتابة استعلام عادي على شكل نص أفضل من طريقتك على مبدأ لصق النصوص وراء بعضها أي من خلال :

string s +="myvalue;";

انتبه للفاصلة المنقوطة بعد نهاية كل استعلام

عرف المتحول s خارج حلقة for وقم بالاسناد داخل الحلقة وبعد الانتهاء وخارج حلقة for نفذ الاستعلام مرة واحدة عن طريق استدعاء execute....

إذا طريقتك تستوجب عدد كبير من الاتصالات بقاعدة البيانات أما طريقتي اتصال واحد فقط وهو ما أحبذه

أتمنى لك الفائدة

تم تعديل هذه المشاركة بواسطة Tammam_KD في 16 فبراير 2011 في 03:29

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

مواضيع مشابهة