Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
axe77
9 / 7 / 4
Регистрация: 03.10.2014
Сообщений: 68
1

MySQL datagridview добавление данных в БД только кнопкой

14.05.2017, 23:23. Просмотров 2139. Ответов 6
Метки нет (Все метки)

Здравствуйте, уважаемые.
Вывожу таблицу из БД в datagridview.Разрешено редактирование, добавление и удаление строк. Создал кнопки "Удалить" и "Добавить".
С удалением всё отлично, а вот при добавлении строки проблема...
Разрешая добавление строк, мы получаем в datagridview пустую строку "со звёздочкой" для заполнения данными.
При заполнении любой ячейки, в пустой новой строке, ниже появляется новая строка "со звёздочкой".
Как сделать так, чтобы, пардон, выделение строки не перескакивало на новую строку со звёздочкой, а оставалось на текущей строке, которую я заполняю данными?
И чтобы новая пустая строка появлялась только после нажатия кнопки "Добавить"?
Надеюсь на помощь и заранее благодарю.
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;
using System.Windows.Forms;
 
namespace TestCars
{
    public partial class FormTest : Form
    {
        private String connectionString = null;
        private MySqlConnection sqlConnection = null;
        private MySqlDataAdapter sqlDataAdapter = null;
        private MySqlCommandBuilder sqlCommandBuilder = null;
        private DataTable dataTable = null;
        private BindingSource bindingSource = null;
        private String selectQueryString = null;
 
        private string user;
        private string password;
        public FormTest()
        {
            InitializeComponent();
            
        }
 
        private void buttonExit_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
 
        private void buttonConnect_Click(object sender, EventArgs e)
        {
            user = textBoxLogin.Text;
            password = textBoxPassword.Text;
            connectionString = "SERVER=localhost;" + "DATABASE=testbase;" + "UID=" + user + ";" + "PASSWORD=" + password + ";" + "Charset=utf8;";
            sqlConnection = new MySqlConnection(connectionString);
            selectQueryString = "SELECT * FROM main";
 
            sqlConnection.Open();
            buttonAdd.Enabled = true;
            buttonDel.Enabled = true;
 
            sqlDataAdapter = new MySqlDataAdapter(selectQueryString, sqlConnection);
            sqlCommandBuilder = new MySqlCommandBuilder(sqlDataAdapter);
 
            dataTable = new DataTable();
            sqlDataAdapter.Fill(dataTable);
            bindingSource = new BindingSource();
            bindingSource.DataSource = dataTable;
 
            dataGridViewBase.DataSource = bindingSource;
            dataGridViewBase.Columns[0].Visible = false;
            
        }
 
 
        //работает!!!
        private void buttonDel_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Вы действительно хотите удалить запись?", "Внимание", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                try
                {
                    dataGridViewBase.Rows.RemoveAt(dataGridViewBase.CurrentRow.Index);
                    sqlDataAdapter.Update(dataTable);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message.ToString());
                }
            }
        }
 
 
        private void buttonAdd_Click(object sender, EventArgs e)
        {
            //MessageBox.Show("Заполните ВСЕ ячейки!", "Внимание!");
            try
            {
                sqlDataAdapter.Update(dataTable);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }
        }
    }
}
0
Вложения
Тип файла: zip TestCars.zip (272.2 Кб, 12 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2017, 23:23
Ответы с готовыми решениями:

Добавление записи из Datagridview в базу данных mysql
Друзья, хочу добавить данные с датагрида в базу данных но выдает ошибку ссылка на объект не...

Удаление/добавление/обновление строк в БД(Mysql) через dataGridView
Через процедуру заношу в dataGridView данные из таблицы: string sql = "call...

Добавление данных в DataGridView
Здравствуйте! Есть две формы на одной DataGridView1 к ней подключен запрос через источник данных...

Добавление данных в DataGridView
Доброго времени суток! При добавлении данных в дата грид выдаёт ошибку Необработанное...

Добавление в ячейки datagridview только целых чисел
Уважаемые форумчане ! Пишу для себя программку на Visual Basic 2010. В этой программе есть...

6
Igr_ok
418 / 390 / 185
Регистрация: 04.08.2015
Сообщений: 1,072
15.05.2017, 10:23 2
Цитата Сообщение от axe77 Посмотреть сообщение
чтобы новая пустая строка появлялась только после нажатия кнопки "Добавить"?
Установите свойство грида AllowUserToAddRows = False;
Создать новую запись можно добавляя DataRowView в грид или DataRow в источник данных.
1
axe77
9 / 7 / 4
Регистрация: 03.10.2014
Сообщений: 68
15.05.2017, 13:43  [ТС] 3
Большое спасибо!
C параметром AllowUserToAddRows уже игрался.
По-поводу DataRowView и DataRow нельзя ли небольшой примерчик? А то я совсем уже запутался(((
Добавление строки:
C#
1
2
3
4
5
6
7
8
9
try
                {
                    dataGridViewBase.Rows.Add();
                    sqlDataAdapter.Update(dataTable);                    
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message.ToString());
                }
Вылетает исключение (скриншот). Я уже начал костыль мастерить через прямой запрос к БД (INSERT).
Можно ли обойтись без такого костыля?
Спасибо.
0
Миниатюры
MySQL datagridview добавление данных в БД только кнопкой  
Igr_ok
418 / 390 / 185
Регистрация: 04.08.2015
Сообщений: 1,072
15.05.2017, 14:22 4
axe77, DataRowView не подойдет, причина указана в ошибке. Создавайте новый DataRow.
C#
1
2
3
4
5
DataTable datatable1= dataGridView1.DataSource as DataTable;
DataRow row = datatable1.NewRow();
//инициализация некоторых полей, если это необходимо
//row["Field"]=someValue;
datatable1.Rows.Add(row);
И метод
C#
1
sqlDataAdapter.Update(dataTable);
нужно вызывать после того, как пользователь закончит редактирование.
1
axe77
9 / 7 / 4
Регистрация: 03.10.2014
Сообщений: 68
15.05.2017, 15:06  [ТС] 5
Спасибо ОГРОМНОЕ!!!! Буду теперь разбираться подробнее.
Всё работает, строки добавляются...
Последний, надеюсь, вопрос - на скрине исключение.
В таблице нулевая колонка это ID (автоинкремент), следом идёт колонка "cars" о которой воет исключение на скрине. Что это и как пофиксить?
0
axe77
9 / 7 / 4
Регистрация: 03.10.2014
Сообщений: 68
15.05.2017, 15:11  [ТС] 6
Скрин
0
Миниатюры
MySQL datagridview добавление данных в БД только кнопкой  
Igr_ok
418 / 390 / 185
Регистрация: 04.08.2015
Сообщений: 1,072
15.05.2017, 17:40 7
axe77, поле Car не имеет значения по умолчанию.
Варианты:
1.Если поле обязательно к заполнению, делать проверку, перед вставкой данных в БД.
2.Если поле не обязательно к заполнению, в БД в конструкторе таблиц поставить галочку на "Разрешить значение NULL" или там же задать значение по умолчанию https://msdn.microsoft.com/ru-ru/library/ms187872.aspx
1
15.05.2017, 17:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2017, 17:40

Запрос на добавление данных в базу данных из формы. Mysql
Надо, чтобы данные вводились из формы. Я пишу так, но не знаю как дописать. <html><head> ...

Добавление данных в DataGridView
Я начинающий в этом деле, так что строго не судите. Имеется таблица из 5-ти колонок, необходимо при...

Добавление данных в БД dataGridView
В БД dataGridView пытаюсь добавить данные через textBox (БД из Access) string name =...


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

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

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