Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/34: Рейтинг темы: голосов - 34, средняя оценка - 4.85
9 / 9 / 3
Регистрация: 06.03.2014
Сообщений: 106
MS SQL

Обновление записи в бд

19.08.2015, 10:16. Показов 6622. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, уважаемые) У меня такой вопрос, можно ли как нибудь изменить запись в БД без использования TableAdapter? Просто я никогда не работал с ним и не имею представления о нем. Запрос в базу я посылаю таким образом:
C#
1
2
3
4
5
6
var query = from s in db.Substances where s.Number.ToString() == tb.Text select s;
            foreach (var s in query)
            {
                // Здесь я произвожу определенные операции и мне нужно
                // изменить определенные поля в БД (допустим изменить s.Quantity)
            }
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.08.2015, 10:16
Ответы с готовыми решениями:

Связь между таблицами.Обновление одной записи при обновлении другой записи
Всем привет. Делаю БД для курсового проекта. Есть БД сотрудников организаций. Есть таблица "перевод сотрудников" и таблица...

Обновление записи
Может кто знает, но почему функция не хочет работать? function my_dsfg() { $currents_users = wp_get_current_user(); $get_max_id =...

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

13
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
19.08.2015, 10:44
Цитата Сообщение от yur@ Посмотреть сообщение
можно ли как нибудь изменить запись в БД без использования TableAdapter?
Можно. При помощи DbCommand.
0
9 / 9 / 3
Регистрация: 06.03.2014
Сообщений: 106
19.08.2015, 10:55  [ТС]
kodv, а можете пожалуйста привести пример использования?
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
19.08.2015, 11:00
Лучший ответ Сообщение было отмечено yur@ как решение

Решение

yur@, допустим, для SQL Server:
C#
1
2
3
4
5
6
using(SqlCommand sqlCommand = new SqlCommand("UPDATE Mytable SET MyField = @MyField WHERE Id = @Id", sqlConnection)) // sqlConnection создан и открыт где то выше
{
    sqlCommand.Parameters.AddWithValue("@MyField", GetNewFieldValue()); // GetNewFieldValue() возвращает новое значение поля
    sqlCommand.Parameters.AddWirghValue("@Id", GetCurrentIdValue()); // GetCurrentIdValue возвращает текущее значение идентификатора строки таблицы
    sqlCommand.ExecuteNonQuery();
}
1
9 / 9 / 3
Регистрация: 06.03.2014
Сообщений: 106
19.08.2015, 11:17  [ТС]
kodv, спасибо большое) а строку подключения нужно брать из App.config или я ошибаюсь?
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
19.08.2015, 11:21
Цитата Сообщение от yur@ Посмотреть сообщение
строку подключения нужно брать из App.config или я ошибаюсь
Строку подключения нужно брать от туда, от куда она берется для TableAdapter'а. Архитектуры вашего проекта я не знаю, поэтому точнее не скажу. Надеюсь, что сами с этим разберетесь.
0
9 / 9 / 3
Регистрация: 06.03.2014
Сообщений: 106
19.08.2015, 11:22  [ТС]
kodv, а методы GetNewFieldValue() и GetCurrentIdValue() определены где-то в заголовочных или определяются пользователем? (извините за расспросы, просто сижу с ноута, а тут Visual не стоит)
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
19.08.2015, 11:24
yur@, Конечно, нет таких методов. Это я так инкапсулировал получения необходимых значений, ибо я не знаю, как и где у вас должны браться эти значения на самом деле.
1
9 / 9 / 3
Регистрация: 06.03.2014
Сообщений: 106
19.08.2015, 13:50  [ТС]
kodv, все понял) спасибо)

Добавлено через 2 часа 21 минуту
kodv, извини еще раз. я сделал вот так:
C#
1
2
3
4
5
6
7
8
9
OleDbConnection oleDbConnection = new OleDbConnection(@"Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=agroLab;Data Source=ADMIN-PC\SQLEXPRESS");
                    oleDbConnection.Open();
                    float f;
                    bool valid = float.TryParse(cnt.Text, out f);
                    OleDbCommand sqlCommand =
                        new OleDbCommand("UPDATE Substances SET Quantity = @Quantity WHERE Id = @Id", oleDbConnection);
                    sqlCommand.Parameters.AddWithValue("@Quantity", s.Quantity-f); 
                    sqlCommand.Parameters.AddWithValue("@Id", s.Id); 
                    sqlCommand.ExecuteNonQuery();
Но на строке
C#
1
 sqlCommand.ExecuteNonQuery();
пишет что must declare the scalar variable @Quantity
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
19.08.2015, 14:01
yur@, у вас же Sql Server, значит и используйте SqlConnection и SqlCommand. Только в этом случае уберите PROVIDER из строки подключения. OleDb, по идее, не поддерживает именованые параметры.
1
9 / 9 / 3
Регистрация: 06.03.2014
Сообщений: 106
19.08.2015, 21:00  [ТС]
kodv, понял) спасибо) все исправил)

Добавлено через 6 часов 45 минут
kodv, извините) интересуюсь вопросом по поводу добавления записи в бд) прочитал документацию и получился такой результат:
C#
1
2
3
sqlCommand.CommandText = "INSERT UsedSubstance ([Id], Title, GOST, PercSolution, SequenceNumber, Number, Quantity, [IsLiter], [IsKilogram], [IsPiece], [User], Date, Time) VALUES ('" + id + "', '" + s.Title + "', '" + cb.Text + "', '" + perc.Text + "', 1, '" + s.Number + "', '" + s.Quantity + "', '" + s.IsLiter + "', '" + s.IsKilogram + "', '" + s.IsPiece + "','" + a1 + "','" + DateTime.Today.ToShortDateString() + "','" + DateTime.Now.ToShortTimeString() + "')";
                    sqlCommand.Connection = sqlConnection;
                    sqlCommand.ExecuteNonQuery();
но опять же на строке
C#
1
sqlCommand.ExecuteNonQuery();
возникает ошибка Error converting data type varchar to real.
я так понимаю что ошибка где-то здесь:
C#
1
VALUES ('" + id + "', '" + s.Title + "', '" + cb.Text + "', '" + perc.Text + "', 1, '" + s.Number + "', '" + s.Quantity + "', '" + s.IsLiter + "', '" + s.IsKilogram + "', '" + s.IsPiece + "','" + a1 + "','" + DateTime.Today.ToShortDateString() + "','" + DateTime.Now.ToShortTimeString() + "')"
может ли быть что все дело вот в этой части
C#
1
+ "', 1, '" +
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
20.08.2015, 05:00
Цитата Сообщение от yur@ Посмотреть сообщение
прочитал документацию
Кто додумался в документации предлагать подобным образом формировать запросы? Плюньте ему в ... Да обплюйте его полностью! Я вам первый же пример привел с использованием параметров. Используйте их и здесь! И тогда вам не прийдется заморачиваться тем, как эти данные должны выглядеть в SQL-запросе - об этом побеспокоится провайдер, которой точно все сделает правильно.
Судя по тексту ошибки, она связана с нецелыми числами. В соответствии с Российскими региональными стандартами, ToString() для float/double/decimal и подобных типов отделяет дробную часть от целой при помощи запятой. Но SQL Server не может скушать число с запятой - ему нужно число с точкой. Если бы вы передавали все ваши значения в запрос через параметры, то такой проблемы бы не возникло. Сразу скажу, что аналогичный геморрой можно без проблем словить и с передачей дат. А еще, совершенно неожиданно, в строке может ковычка одинарная оказаться ...
0
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
20.08.2015, 08:55
Цитата Сообщение от kodv Посмотреть сообщение
А еще, совершенно неожиданно, в строке может ковычка одинарная оказаться ...
и еще более неожиданней ;drop database
0
21.08.2015, 00:12

Не по теме:

вот так бомбануло :)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.08.2015, 00:12
Помогаю со студенческими работами здесь

обновление записи
есть список узеров....при попытке изменить данные - данные не меняются..... вот функция: <?php function edit_record() { ...

Обновление записи в БД
Доброго времени суток. Есть форма на которой есть несколько полей. Делаю запрос на обновление таблицы в БД. Как организовать проверку на...

Обновление нужной записи в БД
Доброго времени суток!.. Существует след. структура таблицы в БД: И есть такая вот форма заполнения данных:

Обновление текущей записи!!!
Есть таблица с полями Код,Телефон,Признак. На основе этой таблицы построен запрос, на основе этого запроса построена подчиненная табличная...

Обновление выбранной записи
В Списке на форме устанавливаю курсор на нужную запись и пытаюсь ее обновить: Update T1 set AAA = .... Where T1.ID =...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru