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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.06.2012, 16:18   #1
Uniskull
Пользователь
 
Регистрация: 19.08.2010
Сообщений: 54
Вопрос C# & Sql

Вот кусок кода:

Код:
                    conn = new SqlCeConnection("Data Source = Database.sdf;");
                    conn.Open();
                    var cmd = conn.CreateCommand();
                    if ((NameField.Text != "") && (NumberField.Text != ""))
                    {
                        cmd.CommandText = string.Format("Select * From DB Where Name='{0}' And Number={1}", NameField.Text,
                                                        int.Parse(NumberField.Text));
                    }
                    else if (NameField.Text == "")
                    {
                        cmd.CommandText = string.Format("Select * From DB Where Number={0}", int.Parse(NumberField.Text));
                    }
                    else if (NumberField.Text == "")
                    {
                        cmd.CommandText = string.Format("Select * From DB Where Name='{0}'", NameField.Text);
                    }
                    cmd.Connection = conn;

                    cmd.ExecuteNonQuery();

                    SqlCeDataReader reader = cmd.ExecuteReader();

                    while (reader.Read())
                    {
                                 .........................
                    }
Вот есть проблема! Когда в поле NumberField ввожу номер то получаю таблицы БД, но когда ввожу значение в NameField, то ничего не происходит. Посмотрел в локальных переменных и вот что нашел:


+ HasRows 'reader.HasRows' threw an exception of type 'System.InvalidOperationException' bool {System.InvalidOperationException}


Можете помочь?
Компьютерный форум - World-PC.NET
Uniskull вне форума Ответить с цитированием
Старый 30.06.2012, 19:36   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
cmd.ExecuteNonQuery();
Это не для SELECT используется.
Тебе нужен cmd.ExecuteReader();Ты его поставил, но ExecuteNonQuery убери.

P.S. Не смог уловить логики представленного кода...
I'm learning to live...

Последний раз редактировалось Stilet; 30.06.2012 в 19:42.
Stilet вне форума Ответить с цитированием
Старый 30.06.2012, 19:49   #3
Uniskull
Пользователь
 
Регистрация: 19.08.2010
Сообщений: 54
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
P.S. Не смог уловить логики представленного кода...
Я новичок и код сам написал ничего не зная

Цитата:
Сообщение от Stilet Посмотреть сообщение
Тебе нужен cmd.ExecuteReader();Ты его поставил, но ExecuteNonQuery убери.
Пробовал, но не получилось
Компьютерный форум - World-PC.NET

Последний раз редактировалось Stilet; 30.06.2012 в 19:54.
Uniskull вне форума Ответить с цитированием
Старый 30.06.2012, 19:55   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
но не получилось
Ну так ты лучше задачу опиши.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.06.2012, 20:11   #5
Uniskull
Пользователь
 
Регистрация: 19.08.2010
Сообщений: 54
По умолчанию

Цитата:
Ну так ты лучше задачу опиши.
Цитата:
Когда в поле NumberField ввожу номер то получаю таблицы БД, но когда ввожу значение в NameField, то ничего не происходит.
Что-то в этом участке кода наверное проблема:

Код:
 else if (NumberField.Text == "")
                    {
                        cmd.CommandText = string.Format("Select * From DB Where Name='{0}'", NameField.Text);
                    }
и здесь тоже проверил, тоже не работает:

Код:
if ((NameField.Text != "") && (NumberField.Text != ""))
                    {
                        cmd.CommandText = string.Format("Select * From DB Where Name='{0}' And Number={1}", NameField.Text,
                                                        int.Parse(NumberField.Text));
                    }
А здесь все прекрасно работает:

Код:
else if (NameField.Text == "")
                    {
                        cmd.CommandText = string.Format("Select * From DB Where Number={0}", int.Parse(NumberField.Text));
                    }
Компьютерный форум - World-PC.NET
Uniskull вне форума Ответить с цитированием
Старый 30.06.2012, 20:43   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

По-моему самая основная проблема в том что ты слил в одну цепочку проверок проверки разных компонентов, и банально запутался.
Задача как звучит?
Отладка что показывает?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.06.2012, 21:32   #7
Uniskull
Пользователь
 
Регистрация: 19.08.2010
Сообщений: 54
По умолчанию

Все разобрался в чем проблема!

Я не знал что нужно указать полностью имя

Код:
Select * From DB Where Name='Test Sql'
а я сделал вот так:

Код:
Select * From DB Where Number='Test'
Сорри за тупость

Очередной вопрос: А как тогда искать только начало слова?
Компьютерный форум - World-PC.NET
Uniskull вне форума Ответить с цитированием
Старый 30.06.2012, 21:36   #8
Uniskull
Пользователь
 
Регистрация: 19.08.2010
Сообщений: 54
По умолчанию

Спасибо! Разобрался! Оператор LIKE. Спасибо большое за помощь
Компьютерный форум - World-PC.NET
Uniskull вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
&SQL GlebovaNastena Помощь студентам 0 30.05.2012 18:08
База данных SQL&Delphi 5 Chaos_21 БД в Delphi 2 10.02.2011 11:11
TForm & TImage & PNG & Прозрачность delphi_beginner Общие вопросы Delphi 7 19.09.2009 08:46
Просто не понимаю б чём проблема!!!!!!!(char* && index) artush1984 Общие вопросы C/C++ 12 30.05.2009 03:30
InterBase & MS SQL Server AlexDoul Софт 4 22.11.2007 09:10