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

stored procedure

بدأه m7mads في 9 فبراير 2010 · 4 رد · 1,285 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أخواني السلام عليكم ........

عندي جدول بيانات مكونة من id,uname,pass,level,job

المظلوب : شاشة إدخال للبيانت بواسطة stored procedure

المشكله : لايتم الإضافه إلى قاعدة البيانات قيم الحقول تبقى null

هذا هو الكود

            SqlConnection cn = new SqlConnection();
            cn.ConnectionString = ConfigurationSettings.AppSettings["connect"];

          /* string na = namee.Text;
            string pass = passwordd.Text;
            string cls = classs.SelectedItem.ToString();
            string jobbb = jobb.Text;*/


           SqlCommand sql = new SqlCommand();
         sql.CommandType = CommandType.StoredProcedure;
         sql.CommandText = "StoredProcedure1";

         sql.Parameters.Add("@uname",SqlDbType.NVarChar,50).Value=namee.Text;
           sql.Parameters.Add("@pass",SqlDbType.NVarChar,50).Value=passwordd.Text;
           sql.Parameters.Add("@level", SqlDbType.NVarChar,50).Value=classs.SelectedItem.ToString();
           sql.Parameters.Add("@job",SqlDbType.NVarChar,50).Value=jobb.Text;
           sql.Parameters.Add("@id", SqlDbType.Int).Value =0;

           sql.Connection = cn;
           try
           {

               cn.Open();

               int row =sql.ExecuteNonQuery();
           if(row==1){
               label6.Text = ".... تمت العملية بنجاح"; 
           }

           else{

label6.Text = ".... تمت العملية بنجاح"; 

           }

           }

           catch (Exception ex)
           {

               throw ex;

           }

           finally
           {

               cn.Close();

               cn.Dispose();

           }
        }

هل من مساعد

تم تعديل هذه المشاركة بواسطة _- محمد نور -_ في 10 فبراير 2010 في 00:21

#3

لا يوجد مشكلة في الكود

ولكن ربما تكون المشكلة في stored procedure

علا كلا هاي نموذج stored procedure

create PROCEDURE [dbo].[AddEmployee]
(
@FinanceNo int, 
@RankID int, 
@Name  nvarchar(50),  
@CardID int, 
@CurrentWorkID  int, 
@StateID  int,
@StartDate  smalldatetime, 
@EndDate smalldatetime, 
@Address  nvarchar(250), 
@JawwalNo   int, 
@TelNo   int, 
@Note     nvarchar(250), 
@DateEnter smalldatetime,
@UserName  nvarchar(50)	
)

as
  INSERT INTO Employee ( FinanceNo, RankID, [Name],  CardID, CurrentWorkID,StateID, StartDate, EndDate, Address, JawwalNo, TelNo, Note, DateEnter, UserName)
		values ( @FinanceNo, @RankID, @Name,  @CardID, @CurrentWorkID, @StateID,@StartDate, @EndDate, @Address, @JawwalNo, @TelNo, @Note, @DateEnter, @UserName)

رَبِّ لَا تَذَرْنِي فَرْداً وَأَنتَ خَيْرُ الْوَارِثِينَ

#4

هذا هو كود stored procedure

ALTER PROCEDURE [dbo].[storedProcedure1]

/*

(

@parameter1 int = 5,

@parameter2 datatype OUTPUT

)

*/

(

@id int output,

@uname NVARCHAR(50)output,

@pass NVARCHAR(50) output,

@level NVARCHAR(50)output,

@job NVARCHAR(50) output

)

AS

BEGIN

SET NOCOUNT ON

INSERT INTO users

(uname,pass,level,job)

VALUES(@uname,@pass,@level,@job)

set @id=scope_identity()

END

علما أن حقل id مفتاح أساسي ويزداد تبقائيا

#5

الأخ الكريم / m7mads

يظهر أن المشكلة تكمن في أن نوع الـ Parameters الموجودة في الـ Stored Procedure هو Output، ولكن عندما تقوم بإنشاء Parameter في لغة CSharp يكون النوع الإفتراضي هو Input، أمامك أحد الحلين إما أن تقوم يتغيير نوع الـ Parameter في تعريف الـ Stored Procedure إلى Input أو أن تقوم بتحديد نوع الـ Parameter في الكود إلى Output كما هو موضح أدناه

تعريف الـ Stored Procedure

ALTER PROCEDURE [dbo].[StoredProcedure1]
/*
(
@parameter1 int = 5,
@parameter2 datatype)
*/
(
@id int ,
@uname NVARCHAR(50),
@pass NVARCHAR(50),
@level NVARCHAR(50),
@job NVARCHAR(50)
)

AS
BEGIN
SET NOCOUNT ON
INSERT INTO users
(uname,pass,level,job)
VALUES(@uname,@pass,@level,@job)
set @id=scope_identity()

END

أو

 SqlCommand sql = new SqlCommand();
         sql.CommandType = CommandType.StoredProcedure;
         sql.CommandText = "StoredProcedure1";

         sql.Parameters.Add("@uname",SqlDbType.NVarChar,50).Value=namee.Text;
           sql.Parameters.Add("@pass",SqlDbType.NVarChar,50).Value=passwordd.Text;
           sql.Parameters.Add("@level", SqlDbType.NVarChar,50).Value=classs.SelectedItem.ToString();
           sql.Parameters.Add("@job",SqlDbType.NVarChar,50).Value=jobb.Text;
           sql.Parameters.Add("@id", SqlDbType.Int).Value =0;

	// Add the following
	foreach(SqlParameter param in sql.Parameters)
		param.Direction = System.Data.ParameterDirection.Output;

أتمنى لك التوفيق

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