Domanda

Stiamo sviluppando un'applicazione di reporting che utilizza ASP.NET-MVC (.NET 4). Ci connettiamo tramite DDTEK.SYBase Middleware a un database Sybase ASE 12.5.

Stiamo riscontrando problemi di inserire i dati in un datatader (da una procedura memorizzata). La procedura memorizzata calcola i valori (circa 50 colonne) facendo somme, conteggi e chiamando altre procedure memorizzate.

Il problema che stiamo riscontrando è ... certo (forse il 5% delle colonne) torna con null o 0. Se facciamo il debug e copiamo l'istruzione SQL utilizzata per il DataReader ed lo eseguiamo all'interno di un altro strumento SQL, otteniamo tutti validi valori per tutte le colonne.



conn = new SybaseConnection
{
     ConnectionString = ConfigurationManager.ConnectionStrings[ConnectStringName].ToString()
};
conn.Open();

cmd = new SybaseCommand
{
     CommandTimeout = cmdTimeout,
     Connection = conn,
     CommandText = mainSql
};


reader = cmd.ExecuteReader();
// AT THIS POINT IMMEDIATELY AFTER THE EXECUTEREADER COMMAND
// THE READER CONTAINS THE BAD (NULL OR 0) DATA FOR THESE COLUMNS.

DataTable schemaTable = reader.GetSchemaTable();
// AT THIS POINT WE CAN VIEW THE DATATABLE FOR THE SCHEMA AND IT APPEARS CORRECT
// THE COLUMNS THAT DON'T WORK HAVE SPECIFICATIONS IDENTICAL TO THE COLUMNS THAT DO WORK 



Qualcuno ha avuto problemi come questo usando Sybase e Ado?


Grazie, John K.

È stato utile?

Soluzione

Problema risolto! ... Il problema si è rivelato essere un diffence nel modo in cui i valori nulli sono stati gestiti in SQL. ... Abbiamo avuto diverse istanze nel stored procedure che ha utilizzato i test nulli non ansi. (X = null piuttosto che x è nullo) Gli strumenti di SQL che avevo usato per testare questo problema sono stati inadempiente il "SET ansinull" su OFF mentre il nostro codice ADO non era così il valore "SET ansinull" è stato ON. A causa di questa impostazione, il codice SQL che testato per nulla sarebbe mai provare "TRUE" che permette il valore null da restituire.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top