Модераторы: diadiavova, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как удалить несколько записей в бд, Как удалить несколько записей в бд 
V
    Опции темы
company05
Дата 31.10.2010, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Модератор
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 6.5.2010

Репутация: нет
Всего: нет



Доброе времени суток!  Есть база данных, как мне удалить несколько записей в бд. Пробую так не получается 

Код

strSQL = "DELETE  from Obshee WHERE ([Gorod],[Rajon],[street],[kol_komnat],[kol_itaj],[cena],[foto]) = " & _
                        "'" & Form1.ListSpisok.FocusedItem.SubItems(0).Text & "','" & _
                               Form1.ListSpisok.FocusedItem.SubItems(1).Text & "','" & _
                               Form1.ListSpisok.FocusedItem.SubItems(2).Text & "','" & _
                               Form1.ListSpisok.FocusedItem.SubItems(3).Text & "','" & _
                               Form1.ListSpisok.FocusedItem.SubItems(4).Text & "','" & _
                               Form1.ListSpisok.FocusedItem.SubItems(5).Text & "','" & _
                               Form1.ListSpisok.FocusedItem.SubItems(6).Text & "','" & _
                               flag & "'"


с одной записей получатся, а вот с несколькими выдает ошибку
PM MAIL   Вверх
diadiavova
Дата 31.10.2010, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Если тебе нужно перечислить несколько условий, то и перечисляй их через оператор AND, ну типа
Код

WHERE Город = 'Крыжополь' AND Улица = 'Ленина' AND Цена < 123

Итд

Если правильно понял твой пример, то сделай примерно так.
Код

strSQL = String.Format( "DELETE  FROM Obshee WHERE Gorod ='{0}' AND Rajon = '{1}'" & _
     " AND street='{2}' AND kol_komnat = '{3}' AND kol_itaj = '{4}' AND cena='{5}' AND foto = '{6}'", _
    Form1.ListSpisok.FocusedItem.SubItems(6).Select(Function(x) x.Text).ToArray())


Правда, что означает слово flag в конце я не понял и вообще гарантий, что это сработает не даю smile 

А вообще, учись пользоваться привязкой данных, осваивай инструменты студии для работы с БД, LINQ To SQL  и прочие зачетные штуки smile . Сильно облегчишь себе жизнь. А вот так вот работать со строками... smile 

Это сообщение отредактировал(а) diadiavova - 31.10.2010, 18:57


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
company05
Дата 31.10.2010, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Модератор
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 6.5.2010

Репутация: нет
Всего: нет



Твой код выдает ошибку "Select" не является членом "System.Windows.Forms.ListViewItem.ListViewSubItem
"
 в  строке

Код

Form1.ListSpisok.FocusedItem.SubItems(6).Select



PM MAIL   Вверх
diadiavova
Дата 31.10.2010, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



company05, а ты под какой фреймворк пишешь? Он и так не является, но это метод-расширитель. Если пишешь под 3.5 и выше, то он быть доступным, если импортировано пространство имен System.Linq(обычно оно импортировано в свойствах проекта и делать ничего не надо)


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
company05
  Дата 31.10.2010, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Модератор
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 6.5.2010

Репутация: нет
Всего: нет



У меня есть база данных с полями город, район, улица,квартира,этаж и т.д.  По отдельным полям у меня получается удалять запись строки. Но у меня в базе есть такие данные как город,район и улица совпадают по данным. Только квартира разные. Я когда хочу удалить одну из них программа удаляет все. 
 

Город                      Район                    Улица              Квартира
Москва                    Центр                    Ленина                  51
Москва                    Центр                    Ленина                  20


У меня запрос по городу. Если я сделаю по району она все равно удалить оба строки. Если по квартире сделать. то она при заполнение записи и нахождении одинаковых цифр то удалить все что связано с этими цифрами.

Добавлено через 3 минуты и 22 секунды
Я пишу под фреймворк 4 vbnet 2010
PM MAIL   Вверх
diadiavova
Дата 31.10.2010, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(company05 @  31.10.2010,  20:06 Найти цитируемый пост)
У меня есть база данных с полями...

Я ведь тебе написал как условие сформировать. Кодом смогу помочь, если по крайней мере ответишь на вопрос, который я задал в предыдущем посте. Если ты будешь игнорировать уточняющие вопросы - мы ни к чему не придем.

Добавлено @ 20:16
Я сейчас посмотрел и видимо с коллекцией Subitems так действительно не получится. Попробуй так
Код

strSQL = String.Format( "DELETE  FROM Obshee WHERE Gorod ='{0}' AND Rajon = '{1}'" & _
     " AND street='{2}' AND kol_komnat = '{3}' AND kol_itaj = '{4}' AND cena='{5}' AND foto = '{6}'", _
 (From si In Form1.ListSpisok.FocusedItem.SubItems Select si.Text).ToArray())

По идее эффект должен быть таким как я ожидал выше. Извини, сейчас нет возможности проверять код, так что просто пиши какие ошибки возникают, будем думать smile 

Это сообщение отредактировал(а) diadiavova - 31.10.2010, 20:17


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
company05
Дата 31.10.2010, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Модератор
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 6.5.2010

Репутация: нет
Всего: нет



выдает ошибку : Несоответствие типов данных в выражении условия отбора. 

в строке
Код

cmd.ExecuteNonQuery()

PM MAIL   Вверх
diadiavova
Дата 31.10.2010, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



company05, я думаю, что это связано с тем, что я в запросе все значения заключил в кавычки. Убери кавычки там, где они не нужны. Цена, количество комнат, количество этажей, - это все скорей всего в базе имеет числовые типы, поэтому для них не нужны кавычки. То есть вместо
Код

cena = '{5}'

Пиши
Код

cena = {5}

Ну и с остальными так же.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
company05
Дата 31.10.2010, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Модератор
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 6.5.2010

Репутация: нет
Всего: нет



Выдает ошибку :   Ошибка синтаксиса (пропущен оператор) в выражении запроса 'Gorod ='Кизляр' AND Rajon = 'Магал' AND street='проаораро' AND kol_komnat = '5' AND kol_itaj = '67' AND cena=7 878р. AND foto = 'Есть''.


в строке

Код

cmd.ExecuteNonQuery()

PM MAIL   Вверх
diadiavova
Дата 31.10.2010, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Ты все-таки не понял, что я тебе написал. Я написал про поле cena, ты так и сделал, хотя у тебя это поле имеет строковый тип, стало быть не надо было его трогать. Пойми, я не знаю какие типы данных у полей твоей таблицы, так же я не знаю, какие данные ты вводишь из листвью. Поэтому тебе надо в этом разобраться самому. 
В запросе в кавычки надо заключать только те данные, которые имеют строковый тип. Естественно, если у тебя 7 878р. передается без кавычек будет ошибка синтаксиса. А вот количество комнат и этажей скорей всего имеют числовой тип. Но я этого наверняка тоже не знаю. Таблица ведь твоя.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
company05
Дата 31.10.2010, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Модератор
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 6.5.2010

Репутация: нет
Всего: нет



У меня все поля строковые , кроме комнат,этажей -они у меня числовой и цена у меня денежная
PM MAIL   Вверх
diadiavova
Дата 31.10.2010, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(company05 @  31.10.2010,  21:15 Найти цитируемый пост)
У меня все поля строковые , кроме комнат,этажей -они у меня числовой и цена у меня денежная 

Ну так с них и убери кавычки. Какие проблемы то? smile 
И еще изучи вот этот топик
http://msdn.microsoft.com/ru-ru/library/sy...ueryresult=true
Чтобы параметры через строку не передавать. Просто можно использовать параметризированные запросы. Но лучше все-таки делать это с помощью инструментов студии. Да и элементы управления выбирать более тщательно, например DataGridView для работы с БД приспособлен куда лучше, чем ListView.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
company05
Дата 31.10.2010, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Модератор
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 6.5.2010

Репутация: нет
Всего: нет



вот мой проект 

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  nedvij.rar 293,97 Kb
PM MAIL   Вверх
diadiavova
Дата 31.10.2010, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(company05 @  31.10.2010,  21:28 Найти цитируемый пост)
вот мой проект  

Правильно! Вместо того, чтобы разобраться, проще скинуть проект, чтобы за тебя все сделали. А потом снова придешь на форум с тем же самым вопросом и все начнется сначала. Я могу помочь разобраться, но делать за тебя не буду.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
company05
  Дата 31.10.2010, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Модератор
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 6.5.2010

Репутация: нет
Всего: нет



Я не в таком плане закинул свой проект ,а для того чтоб вы проверили и объяснили в чем ошибка. Я уже не знаю что делать с этим запросом 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0544 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.