none
Выборка записей в SQL Server 2008 RRS feed

  • Вопрос

  • Пытаюсь сделать выборку в базе данных из кода так:

    SELECT * FROM [db_Stud].[dbo].[t_Stud] WHERE ([FIO] LIKE 'Иван Петров')
    Но мне ничего не возвращает, хотя такой же запрос в Microsoft SQL Server Management Studio дает правильный результат. В чем тут проблема? И как можно вернуть результат выборки в массив?
    Спасибо!
    • Перемещено Siddharth Chavan 2 октября 2010 г. 0:29 MSDN Forums Consolidation (От:SQL Server для разработчиков)

Ответы

  • cmd.ExecuteNonQuery() вам и не вернёт количество строк. Для выборки данных используйте либо ExecuteScalar() либо ExecuteReader().  Интовое значение, которое возвращает ExecuteNonQuery() - количество строк, которые затронула операции INSERT, UPDATE, DELETE. Для других операторов (в том числе и SELECT) возвращённое значение всегда будет -1.
    • Предложено в качестве ответа Alexey KnyazevModerator 4 мая 2010 г. 13:17
    • Отменено предложение в качестве ответа Vitaly Lisapov 5 мая 2010 г. 7:54
    • Предложено в качестве ответа Denis ReznikMVP 5 мая 2010 г. 14:14
    • Помечено в качестве ответа I.Vorontsov 6 мая 2010 г. 5:49

Все ответы

  • а так:

    SELECT * FROM [db_Stud].[dbo].[t_Stud] WHERE ([FIO] LIKE 'Иван Петров%')


    http://www.t-sql.ru
    Модератор
  • хотя такой же запрос в Microsoft SQL Server Management Studio дает правильный результат
    а где вы получаете "неверный" результат?

    http://www.t-sql.ru
    Модератор
  • а где вы получаете "неверный" результат?

    в коде программы на c#, вот такая строка cmd.ExecuteNonQuery().ToString(), мне возвращает -1, я так понимаю, что запрос не дал результата.
    Спасибо!
  • а где вы получаете "неверный" результат?

    в коде программы на c#, вот такая строка cmd.ExecuteNonQuery().ToString(), мне возвращает -1, я так понимаю, что запрос не дал результата.
    Спасибо!

    а Profiler видит этот запрос? он точно "доходит" до сервера БД?
    http://www.t-sql.ru
    Модератор
  • cmd.ExecuteNonQuery() вам и не вернёт количество строк. Для выборки данных используйте либо ExecuteScalar() либо ExecuteReader().  Интовое значение, которое возвращает ExecuteNonQuery() - количество строк, которые затронула операции INSERT, UPDATE, DELETE. Для других операторов (в том числе и SELECT) возвращённое значение всегда будет -1.
    • Предложено в качестве ответа Alexey KnyazevModerator 4 мая 2010 г. 13:17
    • Отменено предложение в качестве ответа Vitaly Lisapov 5 мая 2010 г. 7:54
    • Предложено в качестве ответа Denis ReznikMVP 5 мая 2010 г. 14:14
    • Помечено в качестве ответа I.Vorontsov 6 мая 2010 г. 5:49
  • да, видит есть BatchStarting и BatchCompleted


    Спасибо!
  • да, видит есть BatchStarting и BatchCompleted


    Для получения рекордсета воспользуйтесь советом, который дал Denis Reznik
    http://www.t-sql.ru
    Модератор
  • воспользовался, получил содержимое первой строки первого  столбца, который соответствует запросу


    Спасибо!