TDS 8 changes
[mono.git] / mcs / class / System.Data / System.Data.Odbc / OdbcError.cs
index 36d00e32367a42696451ec6f2b88834906dd87b3..28dcebbf70824182fa21d35626f90ea89d8c27e8 100644 (file)
@@ -34,119 +34,69 @@ using System.Collections;
 using System.ComponentModel;
 using System.Data;
 using System.Data.Common;
+using System.Text;
 
 namespace System.Data.Odbc
 {
        [Serializable]
        public sealed class OdbcError
        {
-               string _message;
+               readonly string _message;
                string _source;
-               string _state;
-               int _nativeerror;
+               readonly string _state;
+               readonly int _nativeerror;
 
                #region Constructors
 
-               internal OdbcError (string Source)
+               internal OdbcError (OdbcConnection connection)
                {
                        _nativeerror = 1;
-                       _source = Source;
+                       _source = connection.SafeDriver;
                        _message = "Error in " + _source;
-                       _state = "";
+                       _state = string.Empty;
                }
 
-               internal OdbcError (string Source, OdbcHandleType HandleType, IntPtr Handle)
+               internal OdbcError (string message, string state, int nativeerror)
                {
-                       short buflen = 256, txtlen = 0;
-                       OdbcReturn ret = OdbcReturn.Success;
-                       byte [] buf_MsgText = new byte [buflen];
-                       byte [] buf_SqlState = new byte [buflen];
-                       bool NeedsDecode = true;
-                       _source = Source;
-                       switch (HandleType)
-                       {
-                               case OdbcHandleType.Dbc:
-                                       ret = libodbc.SQLError(IntPtr.Zero, Handle, IntPtr.Zero, buf_SqlState,
-                                               ref _nativeerror, buf_MsgText, buflen, ref txtlen);
-                                       break;
-                               case OdbcHandleType.Stmt:
-                                       ret = libodbc.SQLError(IntPtr.Zero, IntPtr.Zero, Handle, buf_SqlState,
-                                               ref _nativeerror, buf_MsgText, buflen, ref txtlen);
-                                       break;
-                               case OdbcHandleType.Env:
-                                       ret = libodbc.SQLError(Handle, IntPtr.Zero, IntPtr.Zero, buf_SqlState,
-                                               ref _nativeerror, buf_MsgText, buflen, ref txtlen);
-                                       break;
-                               default:
-                                       _nativeerror = 1;
-                                       _source = Source;
-                                       _message = "Error in " + _source;
-                                       _state = "";
-                                       NeedsDecode = false;
-                                       break;
-                       }
-                       if (NeedsDecode)
-                       {
-                               if (ret != OdbcReturn.Success)
-                               {
-                                       _nativeerror = 1;
-                                       _source = Source;
-                                       _message = "Unable to retreive error information from ODBC driver manager";
-                                       _state = "";
-                               }
-                               else
-                               {
-                                       _state = System.Text.Encoding.Default.GetString (buf_SqlState).Replace ((char) 0, ' ').Trim ();
-                                       _message = System.Text.Encoding.Default.GetString (buf_MsgText).Replace ((char) 0, ' ').Trim ();
-                               }
-                       }
+                       _message = message;
+                       _state = state;
+                       _nativeerror = nativeerror;
                }
 
                #endregion // Constructors
                
                #region Properties
 
-               public string Message
-               {
-                       get
-                       {
-                               return _message;
-                       }
+               public string Message {
+                       get { return _message; }
                }
 
-               public int NativeError
-               {
-                       get
-                       {
-                               return _nativeerror;
-                       }
+               public int NativeError {
+                       get { return _nativeerror; }
                }
 
-               public string Source
-               {
-                       get
-                       {
-                               return _source;
-                       }
+               public string Source {
+                       get { return _source; }
                }
 
-               public string SQLState
-               {
-                       get
-                       {
-                               return _state;
-                       }
+               public string SQLState {
+                       get { return _state; }
                }
 
                #endregion // Properties
                
                #region methods
                
-               public override string ToString () 
+               public override string ToString ()
                {
                        return Message;
-               }       
-                       
+               }
+
+               internal void SetSource (string source)
+               {
+                       _source = source;
+               }
+
                #endregion
 
        }