none
Sql Stored Procedure raiserror ile dönen hatayı datasette gösterme RRS feed

  • Soru

  • Merhaba ,

    csharp ta dataset kullanıyorum , stored procure de bir hata meydana geldiği zaman bunu kullanıcıya nasıl gösterebilirim.

    Örneğin

    if @Id is null                                                                    
    begin                                                                                                                
      if not exists (select Id from tbl_Id  where Kisi = @KisiId )                                                                                                                
      begin                                                                                                                
        raiserror 70000 'Kişi Bulunamadı'                                                                                 
        return                                  
      end                                                      
    end   

    bu mesajı kullanıcının karşısına çıkarmak istiyorum.

    16 Mart 2013 Cumartesi 09:14

Yanıtlar

  • Ozaman procedure içinde bunları yapıp, hangi hatayı aldığını

    C# tarafında try catch(SqlException exception) ile yakalayabilirsin

    (PROCEDURE)

    BEGIN TRY -- ... END TRY BEGIN CATCH SELECT ERROR_NUMBER() AS ErrorNumber ,ERROR_MESSAGE() AS ErrorMessage; END CATCH



    16 Mart 2013 Cumartesi 22:16

Tüm Yanıtlar

  • Neden procedure den "kişi bulunamadı" hatası gösteriyorsun ki,

    Stored procedure nü c# tarafında da çalıştırıp kişi bulunup yada bulunamadı yı da kontrol edebilirsin ? Eğer procedure 'den bir değer döndürmek istiyorsan onu da ancak c# tarafında  ExecuteScalar() methodu ile elde edebilirsin. Bu method sana ilk kaydın ilk kolonundaki değeri döndürür.

    Örnk :

    SqlCommand cmd= ...

    object result= cmd.ExecuteScalar(); 

    Ama illa procedure 'den dışarıya değer fırlatmak istiyorsan ozaman da Output parameter kullanmalısın procedure içerisinde.


    16 Mart 2013 Cumartesi 09:53
  • try
    {
       .
       .
       .
       cmd.ExecuteScalar();
    }
    catch(SqlException ex)
    {
       MessageBox.Show(ex.Message);
    }

    şeklinde denermisiniz.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
    MCC

    16 Mart 2013 Cumartesi 12:46
  • dataset içinde birden çok kontrol yapıyorum, procedure içinde tek bu hata dönmüyor,hata verdiği anda kullanıcı hatayı görsün istiyorum
    16 Mart 2013 Cumartesi 13:43
  • Ozaman procedure içinde bunları yapıp, hangi hatayı aldığını

    C# tarafında try catch(SqlException exception) ile yakalayabilirsin

    (PROCEDURE)

    BEGIN TRY -- ... END TRY BEGIN CATCH SELECT ERROR_NUMBER() AS ErrorNumber ,ERROR_MESSAGE() AS ErrorMessage; END CATCH



    16 Mart 2013 Cumartesi 22:16