Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C#
  4. giving error message according to Sql data

giving error message according to Sql data

Scheduled Pinned Locked Moved C#
databasecomhelp
63 Posts 14 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • L Lost User

    I'm not sure, but doesn't Sql Server throw a SqlException in these cases? The catch-all could hide conversion-errors, or index-out-of-bounds exceptions. It's still best to try to be specific about the type of exception that you're trying to handle.

    I are Troll :suss:

    N Offline
    N Offline
    Not Active
    wrote on last edited by
    #16

    Yes only a SqlException is thrown, then you look at the number to determined the type of underlying Exception


    I know the language. I've read a book. - _Madmatt

    1 Reply Last reply
    0
    • N Not Active

      Yes, hence my statement, "cases you can't test for or don't expect to happen", I should have added, or happen often.


      I know the language. I've read a book. - _Madmatt

      N Offline
      N Offline
      Nish Nishant
      wrote on last edited by
      #17

      Okay. But why did you pick on the guy like this? He gave 3 alternate solutions, only one of which suggested catching the database exception. It seemed as if you were looking for a fight here :-)

      Regards, Nish


      My technology blog: voidnish.wordpress.com

      N 1 Reply Last reply
      0
      • L Lost User

        I'm not sure, but doesn't Sql Server throw a SqlException in these cases? The catch-all could hide conversion-errors, or index-out-of-bounds exceptions. It's still best to try to be specific about the type of exception that you're trying to handle.

        I are Troll :suss:

        N Offline
        N Offline
        Nish Nishant
        wrote on last edited by
        #18

        Eddy Vluggen wrote:

        I'm not sure, but doesn't Sql Server throw a SqlException in these cases? The catch-all could hide conversion-errors, or index-out-of-bounds exceptions.

        Yeah, no one here has recommended a catch-all. What was recommended was to catch the specific exception thrown (which depends on what mechanism you are using to talk to the database). My take on this is that there are no hard and fast rules for things like this. In general, I just try and stick to some consistent practices on a project and these practices themselves may not be identical across multiple projects.

        Regards, Nish


        My technology blog: voidnish.wordpress.com

        L 1 Reply Last reply
        0
        • N Not Active

          I have always been taught and follow the principle that conditions that can be tested for are not exceptions and you shouldn't use exception handling for them. Certainly there are cases you can't test for or don't expect to happen. In this particular case the unique key violation is expected and can be tested for.


          I know the language. I've read a book. - _Madmatt

          N Offline
          N Offline
          Nagy Vilmos
          wrote on last edited by
          #19

          In principal you are correct. But remember that exceptions are there for exceptional cases; pun intented. In the case of creating a new record where you expect the key to be unique, I agree with the others that using an exception is the correct approach. If there is a good chance that the key will not be unique then a different approach would be justified. There I would try to read the record with the key, if it does not exist then I would do the insert. I would however still have the try/catch on the insert.


          Panic, Chaos, Destruction. My work here is done. or "Drink. Get drunk. Fall over." - P O'H OK, I will win to day or my name isn't Ethel Crudacre! - DD Ethel Crudacre

          N 1 Reply Last reply
          0
          • N Nish Nishant

            Eddy Vluggen wrote:

            I'm not sure, but doesn't Sql Server throw a SqlException in these cases? The catch-all could hide conversion-errors, or index-out-of-bounds exceptions.

            Yeah, no one here has recommended a catch-all. What was recommended was to catch the specific exception thrown (which depends on what mechanism you are using to talk to the database). My take on this is that there are no hard and fast rules for things like this. In general, I just try and stick to some consistent practices on a project and these practices themselves may not be identical across multiple projects.

            Regards, Nish


            My technology blog: voidnish.wordpress.com

            L Offline
            L Offline
            Lost User
            wrote on last edited by
            #20

            Nishant Sivakumar wrote:

            Yeah, no one here has recommended a catch-all

            Sorry, I get religious when I see one of those - it comes close to an "on whatevererror resume here".

            Nishant Sivakumar wrote:

            My take on this is that there are no hard and fast rules for things like this

            There's this article on CodeProject[^] that seems to suggest that it wouldn't cost much in terms of performance. An exception that gets eaten OTOH, might be very costly.

            Nishant Sivakumar wrote:

            I just try and stick to some consistent practices on a project and these practices themselves may not be identical across multiple projects.

            True. Hell, I'll even color-code the exceptions if there's a compelling reason :)

            I are Troll :suss:

            N 1 Reply Last reply
            0
            • N Nish Nishant

              Okay. But why did you pick on the guy like this? He gave 3 alternate solutions, only one of which suggested catching the database exception. It seemed as if you were looking for a fight here :-)

              Regards, Nish


              My technology blog: voidnish.wordpress.com

              N Offline
              N Offline
              Not Active
              wrote on last edited by
              #21

              I wasn't "picking" on anyone nor did I criticize his perfectly valid solutions. His last response struck me as one who can't explain his position so comes back with playground response of "I know you are but what am I"


              I know the language. I've read a book. - _Madmatt

              N 1 Reply Last reply
              0
              • L Lost User

                Nishant Sivakumar wrote:

                Yeah, no one here has recommended a catch-all

                Sorry, I get religious when I see one of those - it comes close to an "on whatevererror resume here".

                Nishant Sivakumar wrote:

                My take on this is that there are no hard and fast rules for things like this

                There's this article on CodeProject[^] that seems to suggest that it wouldn't cost much in terms of performance. An exception that gets eaten OTOH, might be very costly.

                Nishant Sivakumar wrote:

                I just try and stick to some consistent practices on a project and these practices themselves may not be identical across multiple projects.

                True. Hell, I'll even color-code the exceptions if there's a compelling reason :)

                I are Troll :suss:

                N Offline
                N Offline
                Nish Nishant
                wrote on last edited by
                #22

                Eddy Vluggen wrote:

                Sorry, I get religious when I see one of those - it comes close to an "on whatevererror resume here".

                Yep, absolutely agree.

                Regards, Nish


                My technology blog: voidnish.wordpress.com

                1 Reply Last reply
                0
                • N Not Active

                  I wasn't "picking" on anyone nor did I criticize his perfectly valid solutions. His last response struck me as one who can't explain his position so comes back with playground response of "I know you are but what am I"


                  I know the language. I've read a book. - _Madmatt

                  N Offline
                  N Offline
                  Nish Nishant
                  wrote on last edited by
                  #23

                  Okay, but I just thought both of you (not just him) kinda went the "immature" route towards the end there.

                  Regards, Nish


                  My technology blog: voidnish.wordpress.com

                  N 1 Reply Last reply
                  0
                  • N Nagy Vilmos

                    In principal you are correct. But remember that exceptions are there for exceptional cases; pun intented. In the case of creating a new record where you expect the key to be unique, I agree with the others that using an exception is the correct approach. If there is a good chance that the key will not be unique then a different approach would be justified. There I would try to read the record with the key, if it does not exist then I would do the insert. I would however still have the try/catch on the insert.


                    Panic, Chaos, Destruction. My work here is done. or "Drink. Get drunk. Fall over." - P O'H OK, I will win to day or my name isn't Ethel Crudacre! - DD Ethel Crudacre

                    N Offline
                    N Offline
                    Not Active
                    wrote on last edited by
                    #24

                    Nagy Vilmos wrote:

                    But remember that exceptions are there for exceptional cases

                    Yes, exactly for exceptional cases. I would use TryParse rather than Try/Catch but be prepared for UnhandledExceptions.

                    Nagy Vilmos wrote:

                    If there is a good chance that the key will not be unique then a different approach would be justified. There I would try to read the record with the key, if it does not exist then I would do the insert. I would however still have the try/catch on the insert.

                    Agreed. But the Try/Catch is to catch unexpected cases not the normal flow.


                    I know the language. I've read a book. - _Madmatt

                    1 Reply Last reply
                    0
                    • N Nish Nishant

                      Okay, but I just thought both of you (not just him) kinda went the "immature" route towards the end there.

                      Regards, Nish


                      My technology blog: voidnish.wordpress.com

                      N Offline
                      N Offline
                      Not Active
                      wrote on last edited by
                      #25

                      Fair enough. Regardless, this is a good discussion.


                      I know the language. I've read a book. - _Madmatt

                      N 1 Reply Last reply
                      0
                      • E Erdinc27

                        hey guys..i added a Unique constraint to a column in my sql table and if the user tries to add an existing data it gives error like that "Violation of UNIQUE KEY constraint 'ukc_cekilis_no'. Cannot insert duplicate key in object 'dbo.NumaraBilgileri'." it is ok..but i want to show an error message like that in my program..how i can check if the data already exist

                        vemedya.com

                        K Offline
                        K Offline
                        Keith Barrow
                        wrote on last edited by
                        #26

                        Welcome to the code project, what is your iternicene debate of choice today, sir? :-)

                        Sort of a cross between Lawrence of Arabia and Dilbert.[^]
                        -Or-A Dead ringer for Kate Winslett[^]

                        1 Reply Last reply
                        0
                        • G Gary Wheeler

                          I believe Mark's argument is that, given that the described error condition is a likely occurrence, then the OP should code to detect and handle the condition directly, rather than rely on the exception mechanism (which is expensive).

                          Software Zen: delete this;

                          K Offline
                          K Offline
                          Keith Barrow
                          wrote on last edited by
                          #27

                          On a point of order, the exception mechanism isn't that expensive, except when compiled for debug. For live code it is similar to eventing see John Skeet's Blog: http://www.yoda.arachsys.com/csharp/exceptions.html[^].

                          Sort of a cross between Lawrence of Arabia and Dilbert.[^]
                          -Or-A Dead ringer for Kate Winslett[^]

                          G 1 Reply Last reply
                          0
                          • K Keith Barrow

                            On a point of order, the exception mechanism isn't that expensive, except when compiled for debug. For live code it is similar to eventing see John Skeet's Blog: http://www.yoda.arachsys.com/csharp/exceptions.html[^].

                            Sort of a cross between Lawrence of Arabia and Dilbert.[^]
                            -Or-A Dead ringer for Kate Winslett[^]

                            G Offline
                            G Offline
                            Gary Wheeler
                            wrote on last edited by
                            #28

                            I was talking out of my hat, there. Generally speaking, exception mechanisms tend to be more expensive than normal control flow. In the SQL environment, that difference may be inconsequential compared to everything else that's going on.

                            Software Zen: delete this;

                            K 1 Reply Last reply
                            0
                            • T T M Gray

                              But do you know why it is bad practice? My point is that you shouldn't do something a certain way just because someone says so (even if that someone is Microsoft). Nothing in that article explains why you shouldn't use exceptions for program flow. If you had posted this[^] instead, that at least gives reasons related to performance. There should be real reasons behind why you code a certain way. If the original poster is not strong in SQL and has no method of source control for database schema then using the stored procedure solution makes it less maintainable. That probably outweighs the performance impact of the Exception use in one method of a small application. Blindly following a "best practice" without considering the specific situation is a bad idea. Consider this case[^] where it is a choice of one exception or 4 database roundtrips. Avoid dogma in code.

                              D Offline
                              D Offline
                              Dave Kreskowiak
                              wrote on last edited by
                              #29

                              There's no hard and fast rules. But I agree with Mark. If a known condition can be tested for without relying on an exception, it's a best course of action. You cannot reliably know the behavior of a system as that system and its dependants rely on a failure mode, especially when any parts of the system get upgraded in the future. What may be an exception in one version may NOT be in the next.

                              A guide to posting questions on CodeProject[^]
                              Dave Kreskowiak

                              A 1 Reply Last reply
                              0
                              • G Gary Wheeler

                                I was talking out of my hat, there. Generally speaking, exception mechanisms tend to be more expensive than normal control flow. In the SQL environment, that difference may be inconsequential compared to everything else that's going on.

                                Software Zen: delete this;

                                K Offline
                                K Offline
                                Keith Barrow
                                wrote on last edited by
                                #30

                                Just being awkward really :-) As you say, whatever the code, the SQL hit is going to be the worst and swamp everything else. I agree with Mark's initial thoughts, you should avoid raising exceptions in the first place for the most part, but wouldn't vomit at the try/catch either ( I would avoid a re-throw though). The one thing I don't think should enter the equation is the performance (ironically, given my post), until it is known that it will adversely impact the system. Early optimisation wrecks good clean code. If there are problems, they are likely to involve a small proportion of the code, which should be optimised as fully as possible. That's my hapney'sworth anyway.

                                Sort of a cross between Lawrence of Arabia and Dilbert.[^]
                                -Or-A Dead ringer for Kate Winslett[^]

                                1 Reply Last reply
                                0
                                • E Erdinc27

                                  hey guys..i added a Unique constraint to a column in my sql table and if the user tries to add an existing data it gives error like that "Violation of UNIQUE KEY constraint 'ukc_cekilis_no'. Cannot insert duplicate key in object 'dbo.NumaraBilgileri'." it is ok..but i want to show an error message like that in my program..how i can check if the data already exist

                                  vemedya.com

                                  P Offline
                                  P Offline
                                  Pete OHanlon
                                  wrote on last edited by
                                  #31

                                  Well, this has certainly been an interesting debate. What nobody has seemed to point out so far is that you actually should combine the two techniques. This is for a simple reason - while you should certainly attempt to detect the unique key violation explicitly, there is no guarantee that this alone will work. The reason for this is simple, presumably your application is going to be multi-user; well, between the time you check the uniqueness and the actual insert occurs, another user could have inputted the same values. So, you have two checks in there - one to cope with the initial check, and a try/catch to cope with the database race condition. Simple. Job done.:thumbsup:

                                  I have CDO, it's OCD with the letters in the right order; just as they ruddy well should be

                                  Forgive your enemies - it messes with their heads

                                  My blog | My articles | MoXAML PowerToys | Onyx

                                  N A P 3 Replies Last reply
                                  0
                                  • P Pete OHanlon

                                    Well, this has certainly been an interesting debate. What nobody has seemed to point out so far is that you actually should combine the two techniques. This is for a simple reason - while you should certainly attempt to detect the unique key violation explicitly, there is no guarantee that this alone will work. The reason for this is simple, presumably your application is going to be multi-user; well, between the time you check the uniqueness and the actual insert occurs, another user could have inputted the same values. So, you have two checks in there - one to cope with the initial check, and a try/catch to cope with the database race condition. Simple. Job done.:thumbsup:

                                    I have CDO, it's OCD with the letters in the right order; just as they ruddy well should be

                                    Forgive your enemies - it messes with their heads

                                    My blog | My articles | MoXAML PowerToys | Onyx

                                    N Offline
                                    N Offline
                                    Not Active
                                    wrote on last edited by
                                    #32

                                    As I responded prior, I would use TryParse rather than Try/Catch but be prepared for UnhandledExceptions There is no one size fits all in software development and as the saying goes, they keep building better idiots.


                                    I know the language. I've read a book. - _Madmatt

                                    A 1 Reply Last reply
                                    0
                                    • P Pete OHanlon

                                      Well, this has certainly been an interesting debate. What nobody has seemed to point out so far is that you actually should combine the two techniques. This is for a simple reason - while you should certainly attempt to detect the unique key violation explicitly, there is no guarantee that this alone will work. The reason for this is simple, presumably your application is going to be multi-user; well, between the time you check the uniqueness and the actual insert occurs, another user could have inputted the same values. So, you have two checks in there - one to cope with the initial check, and a try/catch to cope with the database race condition. Simple. Job done.:thumbsup:

                                      I have CDO, it's OCD with the letters in the right order; just as they ruddy well should be

                                      Forgive your enemies - it messes with their heads

                                      My blog | My articles | MoXAML PowerToys | Onyx

                                      A Offline
                                      A Offline
                                      AspDotNetDev
                                      wrote on last edited by
                                      #33

                                      Pete O'Hanlon wrote:

                                      So, you have two checks in there - one to cope with the initial check, and a try/catch to cope with the database race condition.

                                      I wouldn't do both if the exception handling is going to be necessary anyway. I see no advantage to doing that (e.g., performance would probably be better the exception route anyway). I sometimes see this strategy when dealing with multithreaded applications (e.g., you check a condition that is fast and commonly results in false, then you lock, then you check that condition again). However, I don't think that technique applies here, so I'd just go with the exception handling.

                                      [Forum Guidelines]

                                      P 1 Reply Last reply
                                      0
                                      • N Not Active

                                        As I responded prior, I would use TryParse rather than Try/Catch but be prepared for UnhandledExceptions There is no one size fits all in software development and as the saying goes, they keep building better idiots.


                                        I know the language. I've read a book. - _Madmatt

                                        A Offline
                                        A Offline
                                        AspDotNetDev
                                        wrote on last edited by
                                        #34

                                        What does TryParse have to do with attempting to insert a duplicate key?

                                        [Forum Guidelines]

                                        N 1 Reply Last reply
                                        0
                                        • A AspDotNetDev

                                          Pete O'Hanlon wrote:

                                          So, you have two checks in there - one to cope with the initial check, and a try/catch to cope with the database race condition.

                                          I wouldn't do both if the exception handling is going to be necessary anyway. I see no advantage to doing that (e.g., performance would probably be better the exception route anyway). I sometimes see this strategy when dealing with multithreaded applications (e.g., you check a condition that is fast and commonly results in false, then you lock, then you check that condition again). However, I don't think that technique applies here, so I'd just go with the exception handling.

                                          [Forum Guidelines]

                                          P Offline
                                          P Offline
                                          Pete OHanlon
                                          wrote on last edited by
                                          #35

                                          The reason for the first is simply that you are giving the user information up front that the item already exists. The try/catch is for the really exceptional case where there's a race condition.

                                          I have CDO, it's OCD with the letters in the right order; just as they ruddy well should be

                                          Forgive your enemies - it messes with their heads

                                          My blog | My articles | MoXAML PowerToys | Onyx

                                          A 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups