نمایش نتایج 1 تا 6 از 6

نام تاپیک: نوع پارامتر بازگشتی از پروسیجر sql به C#‎.net

  1. #1

    Question نوع پارامتر بازگشتی از پروسیجر sql به C#‎.net

    سلام بر دوستان عزیز؛
    من با پروسیجر sql هم بوسیله output و هم بوسیله return مقدار به سی شارپ بر میگردونم ولی با اینکه همه تعاریف از نوع nvarchar و string هستش، ولی بازم موقع برگردوندن پیغام میده که نمیتونه از nvarchar به int تبدیل کنه. چون تو مقدار بازگشتی از متن استفاده کردم.
    سوالم اینکه که آیا فقط از پروسیجرهای sql میشه مقدار int برگردونیم؟ آیا نمیشه مقدار string برگردونیم و تو برنامه استفاده کنیم؟
    با سپاس

  2. #2
    مدیر بخش آواتار danialafshari
    تاریخ عضویت
    تیر 1387
    محل زندگی
    هر کجا هستم باشم آسمان مال من است
    پست
    2,909

    نقل قول: نوع پارامتر بازگشتی از پروسیجر sql به C#‎.net

    با سلام
    بله میشه مقدار string برگردوند و با همین output هم میشه
    در صورت تمایل نمونه برنامه قرار بدید تا بررسی بشه
    موفق باشید
    لطفاً از پرسیدن سوال در خصوصی خودداری کنید.
    قبل از ایجاد تاپیک، حتماً قوانین سایت را مطالعه فرمایید.
    قوانین پرسش های دانشجویی
    برای درست وارد شدن کد در قالب C#‎‎‎ سایت، ابتدا کد رو درون Notepad.exe کپی سپس از اونجا به سایت در قالب C#‎‎‎ منتفل کنید
    نرم افزار code manager دستیار برنامه نویسان جهت نگهداری کد ها

  3. #3

    نقل قول: نوع پارامتر بازگشتی از پروسیجر sql به C#‎.net

    این کد خدمت شما

  4. #4

    نقل قول: نوع پارامتر بازگشتی از پروسیجر sql به C#‎.net

    حتی تمام موارد رو به string و nvarchar تبدیل کردم بازم همینه

  5. #5

    نقل قول: نوع پارامتر بازگشتی از پروسیجر sql به C#‎.net

    نقل قول نوشته شده توسط danialafshari مشاهده تاپیک
    با سلام
    بله میشه مقدار string برگردوند و با همین output هم میشه
    در صورت تمایل نمونه برنامه قرار بدید تا بررسی بشه
    موفق باشید

    کد sql

    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO


    alter PROCEDURE sp_CheckUsernamePassword
    @username nvarchar(100),
    @password nvarchar(max) ='',
    @UserID int output
    AS
    BEGIN
    SET NOCOUNT ON;


    SELECT top 1 @password = [Password], @UserID =[User_ID] FROM [OstSMS].[dbo].[Users] where UserName =@username
    return convert(nvarchar(max),@password)
    END
    GO


    کد سی شارپ
     string GetPassword;
    int GetUserID;
    string Check_Result;
    string Password = "123";
    int UserID = 0;


    SqlCommand Cmd = new SqlCommand("sp_CheckUsernamePassword", con);
    Cmd.CommandType = CommandType.StoredProcedure;
    Cmd.CommandText = "sp_CheckUsernamePassword";
    Cmd.Parameters.AddWithValue("@username", "Admin");
    // SqlParameter sqlParam_password = new SqlParameter("@password", DbType.String);
    SqlParameter sqlParam_UserID = new SqlParameter("@UserID", DbType.Int32);


    //sqlParam_password.Direction = ParameterDirection.Output;
    sqlParam_UserID.Direction = ParameterDirection.Output;


    //Cmd.Parameters.Add(sqlParam_password);
    Cmd.Parameters.Add(sqlParam_UserID);


    con.Open();
    Cmd.ExecuteNonQuery();
    Cmd.ExecuteScalar();
    GetPassword = (string)Cmd.ExecuteScalar();
    con.Close();
    // GetPassword = (string)Cmd.Parameters["@password"].Value;


    MessageBox.Show(GetPassword);
    GetUserID = (int)Cmd.Parameters["@UserID"].Value;

    using (MD5 md5Hash = MD5.Create())
    {
    string hash = GetMd5Hash(md5Hash, Password);
    if (VerifyMd5Hash(md5Hash, Password, GetPassword))
    {
    Check_Result = "true";
    UserID = GetUserID;
    }
    else
    {
    Check_Result = "false";
    }
    }




    پیغام خطا:
    An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll


    Additional information: Conversion failed when converting the nvarchar value '202cb962ac59075b964b07152d234b70' to data type int.

  6. #6

    نقل قول: نوع پارامتر بازگشتی از پروسیجر sql به C#‎.net

    سلام
    به اینصورت اصلاح بفرمائید

    Stored Procedure

    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO


    ALTER PROCEDURE sp_CheckUsernamePassword
    @username nvarchar(100),
    @password nvarchar(max) output,
    @UserID int output
    AS
    BEGIN
    SET NOCOUNT ON;
    SELECT top 1 @password = [Password], @UserID =[User_ID] FROM [OstSMS].[dbo].[Users] where UserName = @username
    END
    GO




    کدتون هم به اینصورت

    string Check_Result;
    string Password = "123";
    int UserID = 0;


    var cmd = new SqlCommand("sp_CheckUsernamePassword", con)
    {
    CommandType = CommandType.StoredProcedure,
    CommandText = "sp_CheckUsernamePassword"
    };


    cmd.Parameters.AddWithValue("@Username", "Admin");
    cmd.Parameters.Add("@Password", SqlDbType.NVarChar, -1).Direction = ParameterDirection.Output;
    cmd.Parameters.Add("@UserId", SqlDbType.NVarChar, -1).Direction = ParameterDirection.Output;


    con.Open();
    cmd.ExecuteNonQuery();
    var getPassword = cmd.Parameters["@Password"].Value.ToString();
    var getUserId = Convert.ToInt32(cmd.Parameters["@UserId"].Value);
    con.Close();


    MessageBox.Show(getPassword);

    using (MD5 md5Hash = MD5.Create())
    {
    string hash = GetMd5Hash(md5Hash, Password);
    if (VerifyMd5Hash(md5Hash, Password, getPassword))
    {
    Check_Result = "true";
    UserID = getUserId;
    }
    else
    {
    Check_Result = "false";
    }
    }




    موفق باشید.
    قوانین سایت برنامه نویس [ به سوالات از طریق پیام خصوصی پاسخ داده نمی شود ]

تاپیک های مشابه

  1. استفاده از پروسیجر sql درvb,net
    نوشته شده توسط ahoo2007 در بخش VB.NET
    پاسخ: 4
    آخرین پست: سه شنبه 12 مرداد 1389, 14:34 عصر
  2. برگشت مقدار از پروسیجر sql server به dataenviroment
    نوشته شده توسط masoud_583 در بخش مطالب مرتبط با بانکهای اطلاعاتی در VB6
    پاسخ: 0
    آخرین پست: یک شنبه 26 اردیبهشت 1389, 20:58 عصر
  3. استفاده از بانک sql به صورت desktop.
    نوشته شده توسط Rocker در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 2
    آخرین پست: سه شنبه 16 مرداد 1386, 07:12 صبح
  4. طرز استفاده از Query Sql به جای Filter برای فیلتر یک Recordset ؟
    نوشته شده توسط kasmaii61 در بخش برنامه نویسی در 6 VB
    پاسخ: 14
    آخرین پست: جمعه 03 فروردین 1386, 10:31 صبح
  5. کمک: مشکل بعد از اتصال SQL به VB.net 2005
    نوشته شده توسط touraj در بخش VB.NET
    پاسخ: 1
    آخرین پست: جمعه 05 خرداد 1385, 13:42 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •