我们正在开发一个报告应用程序使用asp.net-MVC(.NET 4)。我们通过DDTEK.Sybase中间件连接到Sybase ASE 12.5数据库。搜索结果 我们有(从存储过程)中提取数据到一个DataReader的一个问题。该存储过程计算做总和,计数,并呼吁其他存储过程值(约50列)。搜索结果 我们所遇到的问题是...某些(也许列的5%),回来使用NULL或0。如果我们调试和复制的SQL语句被用于DataReader的,并运行它内部的另一个SQL工具,我们得到的所有有效所有列的值。结果 搜索结果


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 

搜索结果 有没有人有这样的使用Sybase的问题和ADO?点击 搜索结果 谢谢, 约翰ķ。

有帮助吗?

解决方案

问题解决了! ......原来是在路上空值的diffence的问题在SQL进行处理。 ......我们必须在使用的非ANSI空测试的存储过程的几个实例。 (X =零,而不是x为空)我曾用来测试这个问题的SQL工具被拖欠“SET ANSINULL”为OFF,而我们的ADO代码不是那么的“SET ANSINULL”值为ON。由于此设置,SQL代码测试空永远不会测试“TRUE”,允许要返回的空值的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top