Ciao a tutti,
sto estendendo un applicazione winform scritta con vs 2005 con .net 2.0.Il DB di riferimeto è Oracle 8i.
Per l'accesso ai dati utilizzo il priveder nativo di ado.net .
Una delle modifiche di questa nuova versione dell'applicativo in oggetto prevede l'utilizzo di una tabella d'appoggio con un campo di tipo CLOB.
Bene dopo giorni di ricerche ed imprecazioni contro questa modifica che non doveva farmi perdere più di mezza giornata ho trovato un esempio funzionante in giro per la rete. Ho preso l'esempio ci ho fatto qualche modifica e finalmente sono riuscito a far funzionare il tutto.
Qui di seguito vi riporto il pezzo di codice che ho prodotto per l'inserimento di una riga nella tabella.
Cosi come sta il metodo produce in output una riga in tabella ed il contenuto del campo clob è coerente.
Ok a questo punto viene il bello se si decommentano le istruzioni per gestire la transazionalità dell'operazione atomica inserita in un contesto più ampio (c'è prima una cancellazione) a quel punto il metodo continua a funzionare senza dare evidenza di errori ma l'output in tabella cambia e scrive una serie di caratteri strani invece dello stringone che mi aspettavo di trovare. Tant'è che strumenti come pl/sql developer o toad non riescono a visualizzare il contenuto del clob come sequenza di caratteri ma bensi come sequenza di byte rappresentati in esadecimale.
public void Save()
{
if (ExistKey())
DeleteObject();
InsertObject();
}
La domanda nasce spontanea, perchè se passo la transazione al command (aperta con una bella begintrans sulla connection) ottengo che il command scrive uno schifo in tabella??
C'è qualche WorkAround da applicare?
Premetto che le ho porovate tutte ossia
1)scrivere prima la riga senza il campo clob e poi con una query for update valorizzare il campo
2)Accedere al db non direttamente ma tramite dataadpter e datatable
Tutto funziona senza l'utilizzo delle transazioni non appena comincio solo a pensare di gestirle il codice si comporta come appena descritto.
Spero di avervi dettagliato sufficientemente la situazione in cui mi trovo e nella speranza che qualcuno mi porga qualche dritta auguro a tutti
una splendida giornata
Francesco