Форум программистов, компьютерный форум, киберфорум C#: Базы данных, Entity Framework
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/30: Рейтинг темы: голосов - 30, средняя оценка - 4.67
 Аватар для seneka
7 / 7 / 2
Регистрация: 28.09.2012
Сообщений: 82

Изменение данных в БД SQL через ячейки DGV

01.02.2013, 11:49. Показов 6081. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
На форме лежит dataGridView1 - отражает данные SQL таблицы
C# Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public void SelectARHIV()
        {
            String calcmixt = BDConnection;
            conn = new SqlConnection(calcmixt);
            OpenSqlConnection();
            using (SqlCommand sql = conn.CreateCommand())
            {
                sql.CommandText = @"select top 20 * from ARCHIV order by data desc"; 
                using (SqlDataAdapter da = new SqlDataAdapter())
                using (DataSet ds = new DataSet())
                {
                    da.SelectCommand = sql;
                    da.Fill(ds, "QUALITY"); // Выполнить запрос
                    dataGridView1.AutoGenerateColumns = false;
                    dataGridView1.DataSource = ds;
                    dataGridView1.DataMember = "QUALITY";
 
                }
            }
        }
Хотелось бы узнать как можно изменять данные в SQL-таблице напрямую через dataGridView
Т.Е. Исправил в ячейке данные, перешел на другую(или Enter нажал) - запись произведена
Спасибо большое всем откликнувшимся!

Добавлено через 3 часа 42 минуты
Продолжим)
Попробовал таким образом ( пока только по нажатию на кнопку )
C# Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public void updateARCHIV()
        {
            String calcmixt = BDConnection;
            conn = new SqlConnection(calcmixt);
            OpenSqlConnection();
            using (SqlCommand sql = conn.CreateCommand())
            {
                try
                {
                    sql.CommandText = @"Update ARCHIV SET [" + dataGridView1.CurrentCell.OwningColumn.Name + "]=@W, where [" + dataGridView1.CurrentRow.Cells["Data"].Value + "]=@D";
                    sql.Parameters.Add("@W", SqlDbType.Float);
                    sql.Parameters["@W"].Value = Convert.ToDouble(dataGridView1.CurrentRow.Cells["W"].Value);
                    sql.Parameters.Add("@Data", dataGridView1.CurrentRow.Cells["Data"].Value);
                }
                catch { MessageBox.Show("Ошибка №#001", "Ошибка"); }
                try { sql.ExecuteNonQuery(); }
                catch (SqlException ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            SelectARHIV();
        }
но тут выходит исключение MessageBox.Show(ex.Message); который говорит что, "Неверный синтаксис возле ключевого слова (Where)" - в чем тут закавыка?

Добавлено через 40 минут
Решил с этим проблему
C# Скопировано
1
2
3
4
5
sql.CommandText = @"Update ARCHIV SET [" + dataGridView1.CurrentCell.OwningColumn.Name + "]=@W where MSDtimeS=@D";
                    sql.Parameters.Add("@W", SqlDbType.Float);
                    sql.Parameters["@W"].Value = Convert.ToDouble(dataGridView1.CurrentRow.Cells["W"].Value);
                    sql.Parameters.Add("@D", SqlDbType.DateTime);
                    sql.Parameters["@D"].Value = Convert.ToDateTime(dataGridView1.CurrentRow.Cells["MSDtimeS"].Value);


Добавлено через 26 минут
Возможно есть у кого нибудь пример.. Где:
1- происходит подключение к БД
2- отражается в DataGridView содержимое некой таблицы
3- после редактирования данных в DataGridView нажимаем сохранить и данные сохраняются в базе
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.02.2013, 11:49
Ответы с готовыми решениями:

Изменение данных в базе через DGV
Данные из базы выводятся в таблицу DGV, возможен ли вариант при котором изменение данных в DGV сразу влечёт изменение данных в базе?

Изменение типа ячейки в DGV из TextBox в ComboBox
Как изменить ячейку из TextBox в ComboBox для редактирования данных? DGV заполняется из БД SQL

Сохранение и изменение данных через MS Access в MS SQL
Всем, доброго времени суток! Вопрос след. характера: У меня есть форма накладной, на который размещается подчиненная форма. Основная...

1
60 / 60 / 17
Регистрация: 09.06.2009
Сообщений: 117
03.02.2013, 20:50
Листинг программы где есть подключение, отражение в DGV и обновление в базе данных SQL

C# Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
using System;
using System.Windows.Forms;
using System.Data;
// Пространство имен для работы с базами данных SQL Server
using System.Data.SqlClient;
using System.Drawing;
using System.Diagnostics;
class DataInOutGrid: Form
{
  SqlDataAdapter dataAdapter;
  DataGridView dataGridView;
  public DataInOutGrid()
  {
    //Изменяем размеры формы
    this.Width = 450;
    this.Height = 400;
    
    // Указываем заголовок окна
    this.Text = "Двустороннее связывание:" +
      " база данных и элемент Grid.";
    // Добавляем элементы управления -
    //метку, таблицу и командную кнопку
    Label labelCaption = new Label();
    labelCaption.Text = "Планеты!";
    labelCaption.Location = new Point(60, 10);
    labelCaption.Width = 200;
    labelCaption.Parent = this;
    
    // Добавляем элемент DataGridView на форму
    
    dataGridView = new DataGridView();
    dataGridView.Width = 350;
    dataGridView.Height = 250;
    dataGridView.Location = new Point(20, 50);
    dataGridView.AutoResizeColumns();
    this.Controls.Add(dataGridView);
    
    // Добавляем командную кнопку
    Button buttonSave = new Button();
    buttonSave.Location = new Point(100, 320);
    buttonSave.Width = 220;
    buttonSave.Text = "Сохранить изменения в базе данных!";
    buttonSave.Click +=
      new System.EventHandler(ButtonSave_Click);
    buttonSave.Parent = this;
    
    // Формируем запрос к базе данных -
    //запрашиваем информацию о планетах
    string sql = "SELECT * FROM PLANET";
    string connectionString;
    // DataTable сохраняет данные в памяти как таблицу
    DataTable dataTable = new DataTable();
    /*
    //Вариант 1
    // Подключаемся к базе данных SQL Server Express Edition
    
    // Указываем физический путь к базе данных PLANETS
    string dbLocation =
    ("../../../databases/planets.mdf");
    
    connectionString = @"data source=.\SQLEXPRESS;" +
        "User Instance=true;Integrated Security=SSPI;" +
      "AttachDBFilename=" + dbLocation;
    SqlConnection connection1 = new SqlConnection(connectionString);
    */
    
    //Вариант 2
    // Подключаемся к базе данных SQL Server 2005
    connectionString =
      "data source = localhost; Initial Catalog = Planets;" +
        "Integrated Security = SSPI";
    SqlConnection connection = new SqlConnection(connectionString);
    
    //Открываем соединение
    connection.Open();
    
    //Создаем команду
    SqlCommand sqlCommand = new SqlCommand(sql, connection);
    //Создаем адаптер
    // DataAdapter - посредник между базой данных и DataSet
    dataAdapter = new SqlDataAdapter(sqlCommand);
    
    //Создаем построитель команд
    //Для адаптера становится доступной команда Update
    SqlCommandBuilder commandBuilder =
      new SqlCommandBuilder(dataAdapter);
    
    // Данные из адаптера поступают в DataTable
    dataAdapter.Fill(dataTable);
    // Связываем данные с элементом DataGridView
    dataGridView.DataSource = dataTable;
    // Очистка
    connection.Close();
  }
  
  static void Main()
  {
    // Создаем и запускаем форму
    Application.Run(new DataInOutGrid());
  }
  void ButtonSave_Click(object sender, System.EventArgs args)
  {
    try
    {
      dataAdapter.Update((DataTable)dataGridView.DataSource);
      MessageBox.Show("Изменения в базе данных выполнены!",
        "Уведомление о результатах", MessageBoxButtons.OK);
    }
    catch(Exception)
    {
      MessageBox.Show("Изменения в базе данных выполнить не удалось!",
        "Уведомление о результатах", MessageBoxButtons.OK);
    }
  }
}
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.02.2013, 20:50
Помогаю со студенческими работами здесь

Получение данных ячейки столбца DGV
Помогите решить следующую задачу. Необходимо получить занчение ячейки определенного столбца в DGV и наосновании этого значения...

Некорректная работа SQL запросов при выводе данных из БД в DGV
Здравствуйте, одна из задач моей прогрмаммы это выводить таблицу из аксесс в dgv. Выполняю это следующим образом: Sub RefreshAbon() ...

Перенос данных из одного DGV в другой DGV
Нужно перенести данные из одного dgv в другой(в идеале ещё прибавить к столбцам выбранные значения из текстбокса). DGV-хи находятся на...

Изменение значения ячейки через другую ячейку
Приветствую. Нужно сделать следующее: Ячейка А1 должна изменяться в зависимости от ячейки В1. Сложность в том, что к ячейке А1...

Изменение данных в БД MySQL по редактированию ячейки в DataGridView
Добрый вечер всем. У меня такой вопрос. Есть форма, подключаюсь к БД на сайте и вывожу логины и пароли в datagridView. Всё выводиться...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Результаты исследования от команды MCM (март 2025 г.)
Programma_Boinc 07.04.2025
Результаты исследования от команды MCM (март 2025 г. ) В рамках наших текущих исследований мы продолжаем изучать гены, которые имеют наибольшую вероятность развития рака легких, выявленные в рамках. . .
Рекурсивные типы в Python
py-thonny 07.04.2025
Рекурсивные типы - это типы данных, которые определяются через самих себя или в сочетании с другими типами, которые в свою очередь ссылаются на исходный тип. В мире программирования такие структуры. . .
C++26: Объединение и конкатенация последовательностей и диапазонов в std::ranges
NullReferenced 07.04.2025
Работа с последовательностями данных – одна из фундаментальных задач, с которой сталкивается каждый разработчик. C++ прошел длинный путь в эволюции средств для манипуляции коллекциями – от. . .
Обмен данными в микросервисной архитектуре
ArchitectMsa 06.04.2025
Когда разработчики начинают погружаться в мир микросервисов, они часто сталкиваются с парадоксальным правилом: "два сервиса не должны делить один источник данных". Эта мантра звучит повсюду в. . .
PostgreSQL в Kubernetes: Автоматизация обслуживания с CNPG
Mr. Docker 06.04.2025
Администраторы баз данных сталкиваются с целым рядом проблем при обслуживании PostgreSQL в Kubernetes: как обеспечить правильную репликацию данных, как настроить автоматическое переключение при. . .
Async/await в TypeScript
run.dev 06.04.2025
Асинхронное программирование — это подход к разработке программного обеспечения, при котором операции выполняются независимо друг от друга. В отличие от синхронного выполнения, где каждая последующая. . .
Многопоточность в C#: Синхронизация потоков
UnmanagedCoder 06.04.2025
Многопоточное программирование стало неотъемлемой частью разработки современных приложений на C#. С появлением многоядерных процессоров возможность выполнять несколько задач параллельно значительно. . .
TypeScript: Классы и конструкторы
run.dev 06.04.2025
TypeScript, как статически типизированный язык, построенный на основе JavaScript, привнес в веб-разработку новый уровень надежности и структурированности кода. Одним из важнейших элементов этой. . .
Многопоточное программирование: Rust против C++
golander 06.04.2025
C++ существует уже несколько десятилетий и его поддержка параллелизма постепенно наращивалась со временем. Начиная с C++11, язык получил стандартную библиотеку для работы с потоками, а в последующих. . .
std::vector в C++: от основ к оптимизации производительности
NullReferenced 05.04.2025
Для многих программистов знакомство с std::vector происходит на ранних этапах изучения языка, но между базовым пониманием и подлинным мастерством лежит огромная дистанция. Контейнер std::vector. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер