TDS 8 changes
[mono.git] / mcs / class / System.Data / System.Data.Odbc / OdbcException.cs
index f1e93ad4d6c06a759c1d3dad6e54c2d2e7db8e92..3972ced1029a1ceaaad595e6d5571dbb2cc66a54 100644 (file)
@@ -34,51 +34,53 @@ using System.Collections;
 using System.ComponentModel;
 using System.Data;
 using System.Data.Common;
+using System.Globalization;
 using System.Runtime.InteropServices;
 using System.Runtime.Serialization;
+using System.Text;
 
 namespace System.Data.Odbc
 {
        [Serializable]
+#if NET_2_0
+       public sealed class OdbcException : DbException
+#else
        public sealed class OdbcException : SystemException
+#endif
        {
                OdbcErrorCollection odbcErrors;
 
-               internal OdbcException(OdbcError Error) : base (Error.Message)
+               internal OdbcException (OdbcErrorCollection errors)
+                       : base (CreateMessage (errors))
                {
-                       odbcErrors = new OdbcErrorCollection ();
-                       odbcErrors.Add (Error);
+                       odbcErrors = errors;
                }
 
-               public OdbcErrorCollection Errors 
-               {
-                       get 
-                       {
+               public OdbcErrorCollection Errors {
+                       get {
                                return odbcErrors;
                        }
                }
 
-               public override string Source 
-               {       
-                       get
-                       {
-                               return odbcErrors[0].Source;
+               public override string Source {
+                       get {
+                               return odbcErrors [0].Source;
                        }
                }
 
-
+#if !NET_2_0
                public override string Message {
-                       get 
-                       {
-
-                               return odbcErrors[0].Message;
+                       get {
+                               return base.Message;
                        }
                }
+#endif
 
                private OdbcException (SerializationInfo si, StreamingContext sc) : base(si, sc)
                {
                        odbcErrors = new OdbcErrorCollection ();
-                       odbcErrors = ((OdbcErrorCollection) si.GetValue ("odbcErrors", typeof(OdbcErrorCollection)));
+                       odbcErrors = ((OdbcErrorCollection) si.GetValue (
+                               "odbcErrors", typeof (OdbcErrorCollection)));
                }
 
                #region Methods
@@ -92,6 +94,19 @@ namespace System.Data.Odbc
                        base.GetObjectData (si, context);
                }
 
+               static string CreateMessage (OdbcErrorCollection errors)
+               {
+                       StringBuilder sb = new StringBuilder ();
+                       for (int i = 0; i < errors.Count; i++) {
+                               if (i > 0)
+                                       sb.Append (Environment.NewLine);
+                               OdbcError error = errors [i];
+                               sb.AppendFormat ("ERROR [{0}] {1}", error.SQLState,
+                                       error.Message);
+                       }
+                       return sb.ToString ();
+               }
+
                #endregion // Methods
        }
 }