Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2015, 15:14   #1
Yoh
Пользователь
 
Регистрация: 31.05.2009
Сообщений: 37
Печаль Запрос рабочий, sqlDataReader нет

Доброго времени суток. Суть в том, что есть рабочий запрос, который работает(даже в случае получения исключения) в Management Studio. А вот sqlDataReader не может получить информации(как будто от базы ничего не пришло)
Код:
            try
            {
                SqlCommand cm = null;
                foreach (string id in Ids)
                {
                    cm = new SqlCommand(tableQueryTextBeforeId + id + tableQueryTextAfterId, conn);

                    using (SqlDataReader reader = cm.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            if (reader["region"] == DBNull.Value && reader["province"] == DBNull.Value)
                            {
                                if (GroupIndexArray.Contains(Convert.ToInt32(reader["groupid"])))
                                {
                                    Console.WriteLine("This " + id + " not needed");
                                }
                                else MissedIds.Add(new myInfo(reader["id"].ToString(), string.Empty, string.Empty, reader["city"].ToString()));
                            }
                            else if (reader["region"] == DBNull.Value)
                            {
                                MissedIds.Add(new myInfo(reader["id"].ToString(), reader["city"].ToString(), string.Empty, reader["province"].ToString()));
                            }
                            else MissedIds.Add(new myInfo(reader["id"].ToString(), reader["city"].ToString(), reader["province"].ToString(), reader["region"].ToString()));
                        }
                    }
                }
            }
            catch
            {
                Console.WriteLine("Something is wrong! Help!");
                Console.ReadKey();
                conn.Close();
            }
Тут получается что то вроде дерева в одной таблице и связаны дети с родителями через parentid.
Сам по себе запрос вот такой:
Код:
declare @groupid varchar(10)
declare @city varchar(120)
declare @province varchar(120)
declare @region varchar(120)
declare @firstsearchid varchar(120) set @firstsearchid='9999999'
 declare @searchid varchar(10) set @searchid = @firstsearchid
SELECT @city=name, @searchid=parentid, @groupid=groupid
  FROM [dbo].[table]
  where id = @searchid
SELECT @province=name, @searchid=parentid
  FROM [dbo].[table]
  where id = @searchid
SELECT @region=name, @searchid=parentid
  FROM [dbo].[table]
  where id = @searchid
select @firstsearchid as 'id', @city as 'city', @province as 'province' , @region as 'region', @groupid as 'groupid'
Вылезает ошибка на конкретной айдишке на конкретной записи. При этом если в MS выполнять запрос, он возвращает нормальные валидные данные. Как так? Как быть? Ведь до этого эдак полторы тысячи записей он успевает нормально обработать о_о

Последний раз редактировалось Yoh; 30.03.2015 в 15:19.
Yoh вне форума Ответить с цитированием
Старый 30.03.2015, 15:19   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Код:
tableQueryTextBeforeId + id + tableQueryTextAfterId
брр
https://www.google.com/search?q=ado+...ared+statement
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 30.03.2015, 15:23   #3
Yoh
Пользователь
 
Регистрация: 31.05.2009
Сообщений: 37
По умолчанию

Извините, сейчас исправлю)

Код:
//                    cm = new SqlCommand(tableQueryTextBeforeId + id + tableQueryTextAfterId, conn);
                    cm = new SqlCommand(tableQuery, conn);
                    firstsearchid = new SqlParameter("@firstsearchid", System.Data.SqlDbType.VarChar, 120);
                    firstsearchid.Value = id;
                    cm.Parameters.Add(firstsearchid);
                    cm.Prepare();
Изменил определение параметра в запросе.Заменил исходную командную строку на это чудо и все заработало) Спасибо за ссылочку

Последний раз редактировалось Yoh; 30.03.2015 в 16:04.
Yoh вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нет ответа от сервера на запрос HTTP, снифер показывает Request is not completed. waiting... Milkynder Работа с сетью в Delphi 9 06.03.2015 09:52
Работает запрос или нет? komuk SQL, базы данных 5 02.12.2012 16:33
Пустой рабочий лист или нет? Simbad Microsoft Office Excel 2 21.01.2010 06:23
Защищена ли рабочий лист или нет? Simbad Microsoft Office Excel 1 19.01.2010 06:47
Правильно или нет вот в чём вопрос но ошибок нет... Alexcool Помощь студентам 2 10.01.2010 13:55