none
Sql Server Convert Hatası RRS feed

  • Soru

  • merhabalar;

    şifre değişim işlemleri ile ilgili bir SP hazırladım.

    	CREATE PROCEDURE sp_REPASS (@mailadress nvarchar(100))	
    	AS
    	Declare @state INT
    	Declare @uniq nvarchar(50)
    
    	SET @state=(SELECT count(*)  from dbo.uye where kullanici_adi=@mailadress)
    
    
    	IF(@STATE=1)
    	begin
    		
    	SET @uniq=(SELECT NEWID())
    	SET  @uniq=(SELECT SUBSTRING(@uniq,0,6))
    		update dbo.uye set sifre=@uniq where kullanici_adi=@mailadress
    
    	end
    return @uniq
    	GO

    bu SP almış olduğu emailadress parametresi ile kendisine verilen email'in sistemde kayıtlı şifresini değiştiriyor.

    ardından yeni şifreyi ASP.NET Tarafına alıyorum return ifadesiyle.

    ASP.NET Kodlarım şu şekilde

        public string repass(string email)
        {
            con.Open();
            cmd.Connection = con;
            cmd.CommandText = "select kullanici_adi from uye where kullanici_adi='" + email + "'";
            if ((String)cmd.ExecuteScalar()!=null)
            {
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "sp_REPASS";
                cmd.Parameters.Add("@mailadress", SqlDbType.NVarChar,50);
                cmd.Parameters["@mailadress"].Value = email;
    
                cmd.Parameters.Add("@uniq",SqlDbType.NVarChar,50);
                cmd.Parameters["@uniq"].Direction = ParameterDirection.ReturnValue;
                cmd.ExecuteNonQuery();
          
    
            }
            return Convert.ToString(cmd.Parameters["@uniq"].Value);
          
        }

    bu fonksiyon da değişen şifreyi return ifadesi ile ASP.NET Tarafına aktarıp işlem yapmamı sağlıyor.

    almış olduğum hata iletisi

     Conversion failed when converting the nvarchar value 'CAE35' to data type int.
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
    
    Exception Details: System.Data.SqlClient.SqlException: Conversion failed when converting the nvarchar value 'CAE35' to data type int.
    
    Source Error:
    
    
    Line 57:             cmd.Parameters.Add("@uniq",SqlDbType.NVarChar,50);
    Line 58:             cmd.Parameters["@uniq"].Direction = ParameterDirection.ReturnValue;
    Line 59:             cmd.ExecuteNonQuery();
    Line 60:         
    Line 61: 

    yardımlarınız için şimdiden teşekkür ederim.

    12 Ocak 2013 Cumartesi 15:19

Yanıtlar

  • SQL Server prosedürleri ancak INTEGER türünde değeri RETURN ile döndürebilir.

    sp_REPASS isimli prosedür içerisinde RETURN ile değil de OUTPUT türünde parametre tanımlayıp onu dışarıya döndürmeniz daha mantıklı olacaktır. Veya bunu function olarak değiştirebilirsiniz.


    Ahmet Kaymaz
    http://www.ahmetkaymaz.com
    C# VB.NET ASP.NET kitabı

    12 Ocak 2013 Cumartesi 15:54