چگونگی بازگشت مقدار از استور پروسیجر برای صفحه ورود

h.gharbani

عضو جدید
با سلام خدمت مهندسین گرامی
من صفحه لاگین دارم به صورت دستی طراحی میکنم..تو حین کار با مشکلاتی روبرو شدم

به پروسیجر نوشتم که دارای مقدار بازگشتی هست ولی نمیدونم جچور مقدارشو درون یه متغییر برزم تا براش شرط بنویسم
این کدهای پروسیجرم

کد:
 [LEFT][FONT=&quot]  @username nvarchar(20),
    @password nvarchar(20)

AS
    if (select count(id) from users where username=@username and 
[password] = @password )<>0
        begin
            declare  @groupid   int
                        select @groupid=groupid from users 
            where( username=@username and [password]=@password)
            return @groupid    
        end
        else
        begin
        return 0
        end[/FONT]
[/LEFT]



اینم کدهایی c#که نوشتم


کد:
                SqlCommand cmd = new SqlCommand();
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "loginck";
                cmd.Parameters.AddWithValue("@username", usern.Text);
                cmd.Parameters.AddWithValue("@password", usern.Text);
                scon.Open();
             
                cmd.Connection=scon;
                cmd.ExecuteNonQuery();
                int chek = cmd.Parameters.Add("@ppp");
               
                scon.Close();
             if(chek==0)
                {
               
                    ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('مجددا تلاش کنید!')</script>"); 
 }
دقیقا بعد از اینکه مقادیر را به پروسیجر میفرستم و اجرا میکنم از اینجا به بعدشو نمیدونم چه کنم
 
آخرین ویرایش:

negin17h

مدیر تالارهای مهندسی کامپیوتر و رباتیکمتخصص #C
مدیر تالار
با سلام خدمت مهندسین گرامی
من صفحه لاگین دارم به صورت دستی طراحی میکنم..تو حین کار با مشکلاتی روبرو شدم

به پروسیجر نوشتم که دارای مقدار بازگشتی هست ولی نمیدونم جچور مقدارشو درون یه متغییر برزم تا براش شرط بنویسم
این کدهای پروسیجرم

کد:
 [LEFT][FONT='inherit']  @username nvarchar(20),
    @password nvarchar(20)

AS
    if (select count(id) from users where username=@username and 
[password] = @password )<>0
        begin
            declare  @groupid   int
                        select @groupid=groupid from users 
            where( username=@username and [password]=@password)
            return @groupid    
        end
        else
        begin
        return 0
        end[/FONT]
[/LEFT]



اینم کدهایی c#که نوشتم


کد:
                SqlCommand cmd = new SqlCommand();
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "loginck";
                cmd.Parameters.AddWithValue("@username", usern.Text);
                cmd.Parameters.AddWithValue("@password", usern.Text);
                scon.Open();
             
                cmd.Connection=scon;
                cmd.ExecuteNonQuery();
                int chek = cmd.Parameters.Add("@ppp");
               
                scon.Close();
             if(chek==0)
                {
               
                    ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('مجددا تلاش کنید!')</script>"); 
 }
دقیقا بعد از اینکه مقادیر را به پروسیجر میفرستم و اجرا میکنم از اینجا به بعدشو نمیدونم چه کنم
شما WxecuteNoneQuery که استفاده می کنید تنها یک راه ساده هست و اونم تعریف پارامتر بصورت خروجی است و ست کردن آن در پروسیجر.
یعنی در پروسیجر یک متغیر تعریف کنید و با کلمه OUT مشخص کنید که خروجی است و در پایان پروسیجر آن را ست کنید. در برنامه هم متغیر را تعریف کنید و پس از اجرا مقدارش را بخوانید :gol:

اگر تعداد خروجی ها بیش از 1 است، بهتر است که متدهای دیگر استفاده شود :gol:
 

h.gharbani

عضو جدید
مرسی از پاسخی دادید
ولی چون تا حالا از پروسیجر استفاده نکردم متوجه منظورتون نشدم

خروجی که من از پروسیجر میخوام فیلد groupid هست به این شرط که باید فیلدهای یوزر نیم و پسوردم با مقادیر تکست باکس ها یکی باشه
اگه جواب درست بود که groupid ریترن میشه و اگه نه صفر بر میگرده

چیزی که الان شما گفتید یعنی من بیام تو بخش تعریف پارامتر های پروسیجرم اینو اضافه کنم
کد:
@test int Output

بعد تو بخشی که میخوام خروجی برگشته بشه اینو بنویسم
ببینید درست مینویسم یا نه
کد:
select @test= groupid
return  @test
اگه درست نوشته باشم
بقیه دستوراتی که نوشتم نیاز به تغییر دیگه ندارن ؟
 
آخرین ویرایش:

h.gharbani

عضو جدید
خوب ظاهرا من منظورمو اشتباه رسونده بودم
مشکل کد خودمو پیدا کردم
من میخواستم مقداری که در پروسیجر return میشد رو تو صفحه لاگین وب سایتم نگهش دارم
برای نگه داشتن مقداری که از استور پروسیجر میاد
من باید یک پارامتر درون قطعه کدهای سی شارپ تعریف میکردم و نوع مقدار گرفتنشو return value تعریف میکردم
وبعد از اجرا با تعریف یک متغییر و فراخونی اون مقدار ازش استفاده میکردم اینم
کد اصلاح شده
کد:
  [LEFT][FONT=Consolas]scon.Open();[/FONT][/LEFT]  [LEFT][FONT=Consolas]        [COLOR=#2B91AF]SqlCommand[/COLOR] cmd = [COLOR=blue]new[/COLOR] [COLOR=#2B91AF]SqlCommand[/COLOR]([COLOR=#A31515]"loginck"[/COLOR], scon);[/FONT][/LEFT]  [LEFT][FONT=Consolas]        cmd.CommandType = [COLOR=#2B91AF]CommandType[/COLOR].StoredProcedure;[/FONT][/LEFT]  [LEFT][FONT=Consolas]        cmd.Parameters.AddWithValue([COLOR=#A31515]"@username"[/COLOR], TextBox1.Text.Trim());[/FONT][/LEFT]  [LEFT][FONT=Consolas]        cmd.Parameters.AddWithValue([COLOR=#A31515]"@password"[/COLOR], TextBox2.Text.Trim());[/FONT][/LEFT]  [LEFT][FONT=Consolas]   (1)   cmd.Parameters.Add([COLOR=blue]new[/COLOR] [COLOR=#2B91AF]SqlParameter[/COLOR]([COLOR=#A31515]"@code"[/COLOR], [COLOR=#2B91AF]SqlDbType[/COLOR].Int, 4, [COLOR=#2B91AF]ParameterDirection[/COLOR].ReturnValue, [COLOR=blue]false[/COLOR], 0, 0, [COLOR=#A31515]""[/COLOR], [COLOR=#2B91AF]DataRowVersion[/COLOR].Current, [COLOR=blue]null[/COLOR]));[/FONT]
[/LEFT]  [LEFT][FONT=Consolas]        cmd.ExecuteNonQuery();[/FONT][/LEFT]  [LEFT][FONT=Consolas]       (2) [COLOR=blue]int[/COLOR] result;[/FONT]
[/LEFT]  [LEFT][FONT=Consolas] [/FONT]
[/LEFT]  [LEFT][FONT=Consolas] [/FONT]
[/LEFT]  [LEFT][FONT=Consolas]        (3)result = ([COLOR=blue]int[/COLOR])cmd.Parameters[[COLOR=#A31515]"@code"[/COLOR]].Value;[/FONT]
[/LEFT]  [LEFT][FONT=Consolas]        [COLOR=blue]if[/COLOR] (result > 0)[/FONT][/LEFT]  [LEFT][FONT=Consolas]            Response.Redirect([COLOR=#A31515]"http://www.google.com"[/COLOR]);[/FONT][/LEFT]  [LEFT][FONT=Consolas]        [COLOR=blue]else[/COLOR][/FONT][/LEFT]  [LEFT][FONT=Consolas]            Response.Write(result.ToString());[/FONT][/LEFT]  [LEFT][FONT=Consolas]    }[/FONT][/LEFT]
کدهای شماره (1)و(2)و(3) رو اضافه که کردم تونستم مقدارو بخونم
البته نمیدونم بهینست یا نه و لی اون چیزیو که میخواستم انجام شد
از خانم مهندس negin71 تشکر میکنم بابت جوابی که دادن :gol:
تو جوابی هم که دادید من چندتا نکته پیدا کردم خیلی واسم جالب بود:gol:
 
Similar threads
Thread starter عنوان تالار پاسخ ها تاریخ
olk_63 چگونگی دسترسی به وبکم ASP.NET 5

Similar threads

بالا