Frage

Wir entwickeln eine Reporting-Anwendung, dass Verwendungen asp.net-mvc (.net 4). Wir verbinden durch DDTEK.Sybase Middleware zu einer Sybase ASE 12.5 Datenbank.
Wir haben ein Problem, Daten in einem Datareader (aus einer gespeicherten Prozedur) ziehen. Die gespeicherte Prozedur berechnet Werte (ca. 50 Spalten), indem Sie Summen, Grafen und andere gespeicherte Prozeduren aufrufen.
Das Problem wir erleben ist ... bestimmten (vielleicht 5% der Spalten) mit NULL zurückkommen oder 0. Wenn wir debuggen und kopieren Sie die SQL-Anweisung für das Datareader verwendet wird und es in einem anderen SQL-Tool laufen wir alle gültig erhalten Werte für alle Spalten.


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 


Hat jemand Probleme wie diese mit Sybase hatte und ADO?

Vielen Dank, John K.

War es hilfreich?

Lösung

Problem gelöst! ... Das Problem ist ein diffence in den Weg nulls stellte sich heraus, wurden in der SQL behandelt. ... Wir hatten mehrere Instanzen in der gespeicherten Prozedur, die nicht ansi null Tests verwendet. (X = null anstatt x ist null) Die SQL-Tools, die ich verwendet habe, dieses Problem zu testen, wurden die „SET ANSINULL“ auf OFF säumige während unsere ADO-Code nicht so der „SET ANSINULL“ Wert war, auf. Aufgrund dieser Einstellung, SQL-Code, für null getestet würde nie „TRUE“ testen so dass der Nullwert zurückgegeben werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top