2 // System.Data.OleDb.OleDbException
5 // Rodrigo Moya (rodrigo@ximian.com)
6 // Tim Coleman (tim@timcoleman.com)
8 // Copyright (C) Rodrigo Moya, 2002
9 // Copyright (C) Tim Coleman, 2002
12 using System.ComponentModel;
14 using System.Data.Common;
15 using System.Runtime.InteropServices;
16 using System.Runtime.Serialization;
18 namespace System.Data.OleDb
21 public sealed class OleDbException : ExternalException
23 private OleDbConnection connection;
27 internal OleDbException (OleDbConnection cnc)
32 #endregion // Constructors
35 // FIXME : On .NET the string is System.Data.OleDb.OleDbException+ErrorConverter
36 [TypeConverterAttribute (typeof (OleDbException))]
37 public override int ErrorCode {
42 errors = libgda.gda_connection_get_errors (connection.GdaConnection);
43 if (errors != IntPtr.Zero) {
44 glist = (GdaList) Marshal.PtrToStructure (errors, typeof (GdaList));
45 return (int) libgda.gda_error_get_number (glist.data);
52 [ DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Content)]
53 public OleDbErrorCollection Errors {
57 OleDbErrorCollection col = new OleDbErrorCollection ();
59 errors = libgda.gda_connection_get_errors (connection.GdaConnection);
60 if (errors != IntPtr.Zero) {
61 glist = (GdaList) Marshal.PtrToStructure (errors, typeof (GdaList));
62 while (glist != null) {
63 col.Add (new OleDbError (
64 libgda.gda_error_get_description (glist.data),
65 (int) libgda.gda_error_get_number (glist.data),
66 libgda.gda_error_get_source (glist.data),
67 libgda.gda_error_get_sqlstate (glist.data)));
68 glist = (GdaList) Marshal.PtrToStructure (glist.next,
77 public override string Message {
83 errors = libgda.gda_connection_get_errors (connection.GdaConnection);
84 if (errors != IntPtr.Zero) {
85 glist = (GdaList) Marshal.PtrToStructure (errors, typeof (GdaList));
86 while (glist != null) {
87 msg = msg + ";" + libgda.gda_error_get_description (glist.data);
88 glist = (GdaList) Marshal.PtrToStructure (glist.next,
99 public override string Source {
104 errors = libgda.gda_connection_get_errors (connection.GdaConnection);
105 if (errors != IntPtr.Zero) {
106 glist = (GdaList) Marshal.PtrToStructure (errors, typeof (GdaList));
107 return libgda.gda_error_get_source (glist.data);
114 #endregion // Properties
118 public override void GetObjectData (SerializationInfo si, StreamingContext context)
121 throw new ArgumentNullException ("si");
123 si.AddValue ("connection", connection);
124 base.GetObjectData (si, context);
125 throw new NotImplementedException ();
128 #endregion // Methods