C# писал(а): public DataTable SqlExecuteDataTable(string sql)
{
DataTable dt=new DataTable();
try
{
SqlDataReader DReader;
m_DBCommand.CommandText = sql;
m_DBCommand.Connection.Open();
DReader = m_DBCommand.ExecuteReader();
dt.Load(DReader);
DReader.Close();
m_DBCommand.Connection.Close();
return dt;
}
catch (SqlException e
{
throw ex;
}
catch (Exception e
{
throw ex;
}
finally
{
if (m_DBCommand.Connection.State != ConnectionState.Closed)
{
m_DBCommand.Connection.Close();
}
}
}
если в качестве параметра передать строку
- Код: Выделить всё
select b.ID [F00_ID], b.RecIndex [F10_N], a.Name [F10_Наименование], b.AltRequiredQnty [F11_Требуется], b.AltQnty [F10_Отпущено], b.PriceOV [F10_Цена ОВ], b.PriceAV [F10_Цена АВ], b.refDocInst [F00_refDocInst], b.ArticleRef [F00_ArticleRef], b.Price [F11_Цена] from base b left join Article a on b.ArticleRef = a.ID where 0 = 0 AND refDocInst = 135
то на строке dt.Load(DReader); получаем исключение
An unhandled exception of type 'System.StackOverflowException' occurred in System.Data.dll
причем никаких деталей по исключению нет, а если запрос видоизменить:
- Код: Выделить всё
select b.ID , b.RecIndex , a.Name , b.AltRequiredQnty , b.AltQnty , b.PriceOV , b.PriceAV , b.refDocInst , b.ArticleRef , b.Price from base b left join Article a on b.ArticleRef = a.ID where 0 = 0 AND refDocInst = 135
то все проходи без ошибок, почему?
добавлено
результат выполнения запроса в query analyzer
1003493097 1 NULL 0 0 0 0 135 0 0
1003493098 2 NULL 0 0 0 0 135 0 0
1003493099 3 NULL 0 0 0 0 135 0 0
1003493100 4 NULL 0 0 0 0 135 0 0
1003493101 5 NULL 0 0 0 0 135 0 0
1003493102 6 NULL 0 0 0 0 135 0 0