Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
MishaMoix
1 / 1 / 1
Регистрация: 03.04.2012
Сообщений: 99
1

Ошибка при использовании Select

15.04.2014, 18:48. Просмотров 872. Ответов 22
Метки нет (Все метки)

Есть бд, в ней столбец с названием Serial Number (через пробел!)
Я хочу выполнить поиск по этому значению,
C#
1
string query = String.Format("SELECT * FROM DATA WHERE Serial Number={0}",a);
Вылетаю с ошибкой
Additional information: Рядом с "Number" в контексте, где ожидается условие, указано выражение типа, отличного от логического.
Подскажите что делать

Добавлено через 7 минут
Так поправка!!!
C#
1
string query = String.Format("SELECT * FROM DATA WHERE Serial Number={0}",a);
Ввожу слово odin(такое слово есть)
Вылетаю с ошибкой
Additional information: Недопустимое имя столбца "odin".
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2014, 18:48
Ответы с готовыми решениями:

Ошибка при сохранении данных в БД при использовании bindingnavigator
Добрый день. Подскажите, куда копать? Есть форма, где в зависимости от...

Ошибка подключения к БД при использовании SqlConnectionStringBuilder
Помогите, не пойму в чем проблема. При подключении к БД появляется ошибка на...

Ошибка при использовании MATCH в запросе к SQLite
Пытаюсь сделать поиск: "SELECT * FROM WHERE MATCH 'Жигул'" Выдает ошибку ...

Ошибка Filter при использовании двух BindingSource
есть DataTable и 2 ComboBox Создаю 2 BindingSource(bs1 и bs2) на таблицу,...

Ошибка подключения к БД при использовании WPF-компонента
Всем привет! Возникла такая проблема: Есть некоторый wpf-компонент, который...

22
nmcf
6522 / 5748 / 2619
Регистрация: 14.04.2014
Сообщений: 24,493
15.04.2014, 19:00 2
Если с пробелом, то надо в квадратные скобки брать, если не ошибаюсь.
0
MishaMoix
1 / 1 / 1
Регистрация: 03.04.2012
Сообщений: 99
15.04.2014, 19:13  [ТС] 3
Да, спасибо! Но теперь другой вопрос
Ввожу слово odin(такое слово есть)
Вылетаю с ошибкой
Additional information: Недопустимое имя столбца "odin".
0
nmcf
6522 / 5748 / 2619
Регистрация: 14.04.2014
Сообщений: 24,493
15.04.2014, 19:35 4
Так непонятно, надо видеть текст программы.
0
MishaMoix
1 / 1 / 1
Регистрация: 03.04.2012
Сообщений: 99
15.04.2014, 20:16  [ТС] 5
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SqlConnection connect = new SqlConnection(_path); // настраиваем соединение с БД
                string query = String.Format("SELECT * FROM DATA WHERE [Serial Number]={0} AND [Title]={1}", SN.Split('&')[0], SN.Split('&')[1]);
                SqlCommand command = new SqlCommand(query, connect); //настраиваем команду для БД
 
                connect.Open();
                SqlDataReader reader = command.ExecuteReader();
                reader.Read();
 
                if (reader.HasRows) number = (int)reader["IDperson"];
                else
                {
                    number = -1;
                }
 
                connect.Close();
 
                return number;
0
nmcf
6522 / 5748 / 2619
Регистрация: 14.04.2014
Сообщений: 24,493
15.04.2014, 20:21 6
Если Serial Number и Title строкового типа, то значения возьми в одинарные кавычки.
0
MishaMoix
1 / 1 / 1
Регистрация: 03.04.2012
Сообщений: 99
17.04.2014, 19:46  [ТС] 7
Спасибо, но теперь такая ошибка
Additional information: Типы данных text и varchar в операторе equal to несовместимы.
0
nmcf
6522 / 5748 / 2619
Регистрация: 14.04.2014
Сообщений: 24,493
17.04.2014, 20:12 8
У тебя типы где-то не соответствуют.
Какая БД используется и какой тип у этих полей в БД?
0
Петррр
6169 / 3470 / 898
Регистрация: 28.10.2010
Сообщений: 5,928
17.04.2014, 21:12 9
MishaMoix, вы делаете неправильно. Нужно использовать параметризированные запросы. На данный момент ваш код допускает SQL инъекции.
0
nmcf
6522 / 5748 / 2619
Регистрация: 14.04.2014
Сообщений: 24,493
17.04.2014, 21:22 10
Ещё один с инъекциями. Проблема-то не в этом.
0
Петррр
6169 / 3470 / 898
Регистрация: 28.10.2010
Сообщений: 5,928
17.04.2014, 21:45 11
nmcf, как раз параметризированные запросы решат проблему ТС, т.к. у параметра можно будет задать тип данных.
0
nmcf
6522 / 5748 / 2619
Регистрация: 14.04.2014
Сообщений: 24,493
17.04.2014, 21:53 12
Для это надо сначала выяснить, какие у него типы.
0
Петррр
6169 / 3470 / 898
Регистрация: 28.10.2010
Сообщений: 5,928
17.04.2014, 21:55 13
nmcf, так в чем проблема? Пусть выясняет.
0
MishaMoix
1 / 1 / 1
Регистрация: 03.04.2012
Сообщений: 99
18.04.2014, 15:36  [ТС] 14
Тип данных у меня TEXT
0
nmcf
6522 / 5748 / 2619
Регистрация: 14.04.2014
Сообщений: 24,493
18.04.2014, 15:52 15
Наверное проблема в том, что TEXT - не Unicode, а в C# строки Unicode.
Сделай с парметрами как писал Петррр. Вот пример http://msdn.microsoft.com/ru-ru/libr...vs.110%29.aspx

Там поставь sqldbtype.text для своих полей.
0
MishaMoix
1 / 1 / 1
Регистрация: 03.04.2012
Сообщений: 99
18.04.2014, 17:03  [ТС] 16
Я написал
C#
1
2
3
4
5
                SqlConnection connect = new SqlConnection(_path); // настраиваем соединение с БД
                string query = "SELECT * FROM DATA WHERE [Serial Number]=@SNum";
                SqlCommand command = new SqlCommand(query, connect); //настраиваем команду для БД
                command.Parameters.Add("@SNum", SqlDbType.Text);
                command.Parameters["@SNum"].Value = SN.Split('&')[0];
Все равно вылетает ошибка типы данных text и text в операции equal to несовместимы
0
nedel
632 / 615 / 364
Регистрация: 09.04.2014
Сообщений: 1,459
Завершенные тесты: 1
18.04.2014, 18:38 17
C#
1
2
3
4
SqlConnection connect = new SqlConnection(_path); // настраиваем соединение с БД
                string query = "SELECT * FROM DATA WHERE [Serial Number]=@SNum";
                SqlCommand command = new SqlCommand(query, connect); //настраиваем команду для БД
                command.Parameters.AddWithValue("@SNum", SN.Split('&')[0]);
0
nmcf
6522 / 5748 / 2619
Регистрация: 14.04.2014
Сообщений: 24,493
18.04.2014, 19:13 18
И что, так работает? Может изменить саму БД, поставить varchar, а не text?
0
MishaMoix
1 / 1 / 1
Регистрация: 03.04.2012
Сообщений: 99
18.04.2014, 22:56  [ТС] 19
Нет так все равно не работает
Ну лан попробую
0
Петррр
6169 / 3470 / 898
Регистрация: 28.10.2010
Сообщений: 5,928
19.04.2014, 12:14 20
MishaMoix, а где вы в своем коде задали тип параметра? Смотрите какой тип параметра выставляет AddWithValue. Поэтому нужно сделать так.
1
19.04.2014, 12:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2014, 12:14

Ошибка в получении результата запроса при использовании DataReader
Доброго времени суток! Необходимо получить результат запроса из базы данных,...

Ошибка синтаксиса при запросе SELECT WHERE
string queryString = "SELECT Date, Data FROM " + aNameTable + "WHERE Server = "...

Ошибка SqlDataAdapter.Update при использовании метода на добавление более одного раза
Ниже описан метод добавления работника, если добавляю одного, то все норм, но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru