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

مشكلة مع null value

مغلق
بدأه PARADISE في 13 سبتمبر 2003 · 2 رد · 1,191 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

المشكلة ببساطة انى اريد تنفيذ stored procedure اسمه sp_password لتغيير الباسورد للمستخدم sa الموجود في ال sql server والذي الباسورد الحالية له هي null اى لا توجد له باسوورد

الامر من الsql غاية في البساطة وهو :

EXEC sp_password  NULL, 'ok', 'sa'

حيث ان الباسوورد الحالية = null

الباسوورد الجديدة = ok

اسم المستخدم المراد تغيير الباسوورد له = sa

وفي السي شارب حاولت عمل هذه المحاولة كالتالي :

OleDbCommand myCommand = new OleDbCommand();
 	 myCommand.CommandType =System.Data .CommandType .StoredProcedure;
 	 myCommand.Connection =connection_master;
 	 myCommand.CommandText="sp_password";
 	 OleDbParameter param_old = myCommand.Parameters.Add("@old", OleDbType.VarChar, 15);
 	 param_old.Value = DBNull.Value;
 	 OleDbParameter param_new = myCommand.Parameters.Add("@new", OleDbType.VarChar, 15);
 	 param_new.Value = "ok";

 	 OleDbParameter param_user = myCommand.Parameters.Add("@loginame", OleDbType.VarChar, 15);
 	 param_user.Value = "sa";

 	 try
 	 {
    myCommand.Connection.Open();
    try
    {
   	 myCommand.ExecuteNonQuery();
    }
    catch(Exception ex)
    {
    }
    myCommand.Connection.Close();
 	 }
 	 catch(Exception exx)
 	 {
 	 }

حيث أن connection_master هي connection موجودة بالفعل عندى

ولكن الكود لم يعمل

والمشكلة هي :

كيف أبعث بارمتر قيمته null الى الـ stored procedure ؟

ولكم جزيل الشكر؟

تم تعديل هذه المشاركة بواسطة PARADISE في 13 سبتمبر 2003 في 23:06

#2

تجاهل البرامتر @old وسيتم تنفيذ الاجراء بشكل عادي :

com = new SqlCommand("sp_password",con);
 	 com.CommandType = CommandType.StoredProcedure;
 	 com.Parameters.Add("@new", SqlDbType.NVarChar).Value = "ok";
 	 com.Parameters.Add("@loginame", SqlDbType.NVarChar).Value = "sa";
 	 con.Open();
 	 com.ExecuteNonQuery();
 	 con.Close();

هذا لا ينطبق على كل الاجراءات وانما على تلك التي تحدد القيمة الافتراضية للبرامتر في حالة عدم اعطاء قيمة من طرف المستخدم .فلو فتحت نص الاجراء sp_password لوجدت ان القيمة الافتراضية للبرامتر @old هي null وبالتالي فان عدم اعطاء قيمة له لن ينتج اي خطأ

تم تعديل هذه المشاركة بواسطة madani في 19 سبتمبر 2003 في 19:18

#3

جزاك الله خيرا أخي - شكرا لك

هذا الموضوع مغلق.

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