[Mono-devel-list] Problem with DbDataAdapter... RESOLVED
Sureshkumar T
tsureshkumar at novell.com
Fri May 20 10:37:21 EDT 2005
I guess the following is more proper fix. But, I am not sure why there
is no GetDateTimeSafe in ISafeRecord and is there any reason to leave
this to throw exception. Kosta could clear this. Hubert, can you please
try this?
[SNIP]
Index: System.Data.Common/DataContainer.cs
===================================================================
--- System.Data.Common/DataContainer.cs (revision 44790)
+++ System.Data.Common/DataContainer.cs (working copy)
@@ -1069,7 +1069,8 @@
{
// if exception thrown, it should be
caught
// in the caller method
-
base.SetValue(index,record.GetDateTime(field));
+ this[index] = record.GetValue(field);
+
base.SetItemFromDataRecord(index,record,field);
}
[/SNIP]
suresh.
On Fri, 2005-05-20 at 12:36 +0200, Hubert FONGARNAND wrote:
> Hello
>
> I've found the last problems I had...
> The problem is when you do a fill with a null datetime in the result
> dataset...
> the problem is in method
> internal void ReadIDataRecord(int recordIndex, IDataRecord record, int[]
> mapping, int length)
> of the record cache class
> this method do a call of :
> column.DataContainer.SetItemFromDataRecord(recordIndex, record,i);
>
> so the problem comes from the sealed class DateTimeDataContainer :
> AbstractObjectDataContainer
>
> the method record.GetDateTime(field); throw a not well catched exception when
> the datetime is null
> So, as a trick, i've added a try catch :
>
> my patch is :
>
> Index: DataContainer.cs
> ===================================================================
> --- DataContainer.cs (revision 44793)
> +++ DataContainer.cs (working copy)
> @@ -1069,7 +1069,15 @@
> {
> // if exception thrown, it should be caught
> // in the caller method
> -
> base.SetValue(index,record.GetDateTime(field));
> + Object date=null;
> + try
> + {
> + date=record.GetDateTime(field);
> + }catch
> + {
> + }
> + base.SetValue(index,date);
> +
>
> base.SetItemFromDataRecord(index,record,field);
> }
>
>
>
> Le Mercredi 18 Mai 2005 11:32, vous avez écrit :
> > Hello Hubert,
> >
> > I'm completely agree that bugs are a bad thing, that's why I'm here to
> > help you as soon as possible. The reason the DataAdapter code has
> > changed is to solve other bugs, and the solution required some
> > "cooperation" from providers too. Unfortunately it's not simple to make
> > a complete testing over all the providers, so I do expect for some
> > number of issues, but believe that with yours and others help we will
> > stabilize the code very fast.
> >
> > I would like to ask you several questions:
> >
> > 1. Does your PG app work? If not, can you send the stack traces/code
> > samples of the problems?
> > 2. What is your current problem with Oracle? Can you please send a
> > stack? (It cannot be the same one because in my latest patch I
> > removed the calls to System.Data.DataRow:get_Item (System.String
> > columnName) from the BuildSchema).
> > 3. If it's possible, can you send your entire app, so I'll test it
> > here? (The confidentiality will be ensured).
> >
> > Thank you in advance for your patience and cooperation.
> >
> > Regards,
> > Konstantin Triger
> >
> > Hubert FONGARNAND wrote:
> > >You're patch has nothing changes... I get always the same error...
> > >With the postgresql app... I can now login... but there's plenty of bugs
> > >inside... I think the best solution is to get an older version of Mono!
> > >
> > >Why do you include a patch if there's compatibility problems with data
> > >providers!!!
> > >
> > >thanks
> > >
> > >Le Mardi 17 Mai 2005 16:26, vous avez écrit :
> > >>Hello again,
> > >>
> > >>Seems that Oracle provider does not initialize at all some columns in
> > >>SchemaTable.
> > >>The attached patch fixes that in a generic way.
> > >>
> > >>Regards,
> > >>Konstantin Triger
> > >>
> > >>Hubert FONGARNAND wrote:
> > >>>I've applied your patch...
> > >>>It corrects the problem with my postgresql app...
> > >>>but i get always an error with the same app with oracle :
> > >>>
> > >>>System.IndexOutOfRangeException: Array index is out of range.
> > >>>in <0x00067> System.Data.DataRow:get_Item (System.String columnName,
> > >>>DataRowVersion version)
> > >>>in <0x00015> System.Data.DataRow:get_Item (System.String columnName)
> > >>>in <0x00495> System.Data.Common.DbDataAdapter:BuildSchema (IDataReader
> > >>>reader, System.Data.DataTable table, SchemaType schemaType,
> > >>>MissingSchemaAction missingSchAction, MissingMappingAction
> > >>>missingMapAction,
> > >>>System.Data.Common.DataTableMappingCollection dtMapping)
> > >>>in <0x00059> System.Data.Common.DbDataAdapter:BuildSchema (IDataReader
> > >>>reader, System.Data.DataTable table, SchemaType schemaType)
> > >>>in (wrapper remoting-invoke-with-check)
> > >>>System.Data.Common.DbDataAdapter:BuildSchema
> > >>>(System.Data.IDataReader,System.Data.DataTable,System.Data.SchemaType)
> > >>>in <0x00087> System.Data.Common.DbDataAdapter:FillTable
> > >>>(System.Data.DataTable dataTable, IDataReader dataReader, Int32
> > >>>startRecord, Int32 maxRecords, System.Int32 counter)
> > >>>in (wrapper remoting-invoke-with-check)
> > >>>System.Data.Common.DbDataAdapter:FillTable
> > >>>(System.Data.DataTable,System.Data.IDataReader,int,int,int&)
> > >>>in <0x00117> System.Data.Common.DbDataAdapter:Fill (System.Data.DataSet
> > >>>dataSet, System.String srcTable, IDataReader dataReader, Int32
> > >>>startRecord, Int32 maxRecords)
> > >>>in <0x000ce> System.Data.Common.DbDataAdapter:Fill (System.Data.DataSet
> > >>>dataSet, Int32 startRecord, Int32 maxRecords, System.String srcTable,
> > >>>IDbCommand command, CommandBehavior behavior)
> > >>>in <0x00036> System.Data.Common.DbDataAdapter:Fill (System.Data.DataSet
> > >>>dataSet, System.String srcTable)
> > >>>in (wrapper remoting-invoke-with-check)
> > >>>System.Data.Common.DbDataAdapter:Fill (System.Data.DataSet,string)
> > >>>in <0x00121> MoteurCRM.CProfil:RetourneGroupeCommercial (System.String
> > >>>cnxstring, System.String televendeur_Id)
> > >>>in <0x007e7> FicheClient.Logon:btnValider_Click (System.Object sender,
> > >>>System.EventArgs e)
> > >>>in (wrapper delegate-invoke)
> > >>>System.MulticastDelegate:invoke_void_object_EventArgs
> > >>>(object,System.EventArgs)
> > >>>
> > >>>Thanks...
> > >>>
> > >>>Le Mardi 17 Mai 2005 12:09, Konstantin Triger a écrit :
> > >>>>Agreed, but in fact the provider should set the defaults, not the
> > >>>>DataAdapter :-).
> > >>>>
> > >>>>Regards,
> > >>>>Konstantin Triger
> > >>>>
> > >>>>Sureshkumar T wrote:
> > >>>>>>+ bool allowDBNull = value is bool ? (bool)value : false;
> > >>>>>
> > >>>>>default allowDBNull should be true ;-)
> > >>>>>
> > >>>>>suresh.
> > >>>
> > >>>_______________________________________________
> > >>>Ce message et les éventuels documents joints peuvent contenir des
> > >>>informations confidentielles. Au cas où il ne vous serait pas destiné,
> > >>>nous vous remercions de bien vouloir le supprimer et en aviser
> > >>>immédiatement l'expéditeur. Toute utilisation de ce message non conforme
> > >>>à sa destination, toute diffusion ou publication, totale ou partielle et
> > >>>quel qu'en soit le moyen est formellement interdite. Les communications
> > >>>sur internet n'étant pas sécurisées, l'intégrité de ce message n'est pas
> > >>>assurée et la société émettrice ne peut être tenue pour responsable de
> > >>>son contenu. _______________________________________________
> > >>>Mono-devel-list mailing list
> > >>>Mono-devel-list at lists.ximian.com
> > >>>http://lists.ximian.com/mailman/listinfo/mono-devel-list
> > >
> > >_______________________________________________
> > >Ce message et les éventuels documents joints peuvent contenir des
> > > informations confidentielles. Au cas où il ne vous serait pas destiné,
> > > nous vous remercions de bien vouloir le supprimer et en aviser
> > > immédiatement l'expéditeur. Toute utilisation de ce message non conforme
> > > à sa destination, toute diffusion ou publication, totale ou partielle et
> > > quel qu'en soit le moyen est formellement interdite. Les communications
> > > sur internet n'étant pas sécurisées, l'intégrité de ce message n'est pas
> > > assurée et la société émettrice ne peut être tenue pour responsable de
> > > son contenu.
> _______________________________________________
> Ce message et les éventuels documents joints peuvent contenir des informations confidentielles.
> Au cas où il ne vous serait pas destiné, nous vous remercions de bien vouloir le supprimer et en aviser immédiatement l'expéditeur. Toute utilisation de ce message non conforme à sa destination, toute diffusion ou publication, totale ou partielle et quel qu'en soit le moyen est formellement interdite.
> Les communications sur internet n'étant pas sécurisées, l'intégrité de ce message n'est pas assurée et la société émettrice ne peut être tenue pour responsable de son contenu.
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
More information about the Mono-devel-list
mailing list