Un collega sta lavorando per realizzare alcune stored procedure usando il CLR per risolvere delle esigenze un po' complesse nell'estrarre le informazioni. Poco fa si è imbattuto in una curiosa situazione. Chiamando il metodo SetChar dell'oggetto SqlDataRecord si ottiene un inspiegabile NotSupportedException. Sulle prime il collega credeva di aver sbagliato qualcosa infatti andando a leggere la pare che tutto debba funzionare a dovere. Ma... con il buon Reflector alla mano si vede immediatamente che in effetti il metodo non è supportato:

   1: public virtual void SetChar(int ordinal, char value)
   2: {
   3:     this.EnsureSubclassOverride();
   4:     throw ADP.NotSupported();
   5: }
   6:  

E' evidente che si tratta di un errore nella documentazione. La soluzione in questo caso è di usare il metodo che è un po' più laborioso ma alla fine fa bene il suo dovere.


Commenti (2) -

# | Marco Meneghini | 05.05.2008 - 18.29

Per la precisione
Al posto di:
oRecord.SetChar(oRecord.GetOrdinal("FIX"), "A");
Usare
oRecord.SetChars(oRecord.GetOrdinal("FIX"), 0, new char[1] { "A"},0,1);

Costo: 3 ore di debug !!!

# | Noone | 16.01.2010 - 10.05

thank you for this blog, I search the web and this was THE ONLY hit I got which saved me 3 hours of debugging. I don't even know why this is not mentioned anywhere. You gotta think that more people would hit this error.... Or maybe it only you and me who ran into this problem?

Aggiungi Commento