Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.72/65: Рейтинг темы: голосов - 65, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 102

Добавление записи из Datagridview в базу данных mysql

20.04.2014, 18:05. Показов 14013. Ответов 51
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Друзья, хочу добавить данные с датагрида в базу данных но выдает ошибку ссылка на объект не указывает на экземпляр объекта, что я делаю не правильно?Обращаюсь к записи через класс бд коннектиться тока вот со вставкой косяк((((((((
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private void toolStripButton2_Click(object sender, EventArgs e)
            { // добавление записей в таблицу
               string lastvo = sqlClass.getIndex("SELECT MAX(Id_company) AS last fROM company");
     
                for (int l = 0; l < dataGridView1.RowCount; l++)
                {
                  string insert = "insert into company (Id_company, address, nachalo_sotrudnichestva, vozmojnost_adaptacii,  korporativ_obuchenie, otzyvy, chernyi_list, BIN_RNN, primechanie, nalichie_dogovorov, opyt_sotrudnichesva, kolich_obuch) " +
                          "values ('" + lastvo + "', '" + dataGridView1.Rows[l].Cells[1].Value.ToString() + "', '" + dataGridView1.Rows[l].Cells[2].Value.ToString() + "', '" + dataGridView1.Rows[l].Cells[3].Value.ToString() + "', '" +
                                    dataGridView1.Rows[l].Cells[4].Value.ToString() + "', '" + dataGridView1.Rows[l].Cells[5].Value.ToString() + "', '" + dataGridView1.Rows[l].Cells[6].Value.ToString() + "', '" +
                                   dataGridView1.Rows[l].Cells[7].Value.ToString() + "', '" + dataGridView1.Rows[l].Cells[8].Value.ToString() + "', '" + dataGridView1.Rows[l].Cells[9].Value.ToString() +
                                   "', '" + dataGridView1.Rows[l].Cells[10].Value.ToString() + "', '" + dataGridView1.Rows[l].Cells[11].Value.ToString() + "')";
                        sqlClass.InsertUpdate(insert);
     
                    }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.04.2014, 18:05
Ответы с готовыми решениями:

Добавление записи в базу данных mysql
Всем привет. Мне нужно объединить 3 таблицы, я их объединила. Вот моя проблема у меня не получается добавление данных, где две таблицы...

Добавление в базу данных mysql. Ошибка
Собственно пытаюсь добавить в базу данных инфу из текстбоксов. Но выдаёт ошибку, не пойму что не так. Помогите пожалуйста. using...

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

51
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 102
22.04.2014, 09:45  [ТС]
Студворк — интернет-сервис помощи студентам
а заполнение как делать ? если сделаю как и раньше делал
C#
1
2
3
   string zayav = "INSERT INTO zayavka (id_zayavki, name_kompleks, tema_obucheniya, period_obucheniya_S, period_obucheniya_Do, istoch_finansir, FIO_ispolnitel, data_postupl) VALUES ('"+ label11.Text + "', '" +comboBox4.Text + "', '" +
                    textBox1.Text + "', '" + dateTimePicker3.Text + "', '" + dateTimePicker2.Text + "', '" + textBox2.Text + "', '" + textBox3.Text + "', '" + dateTimePicker4.Text + "')";
            sqlClass.InsertUpdate(zayav);
а в классе было
C#
1
2
3
4
5
6
7
8
9
10
11
using (connection)
            {
                   
                MySqlCommand cmd = new MySqlCommand(SQLcommand, connection);
                cmd.Connection = connection;
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = SQLcommand;
                this.OpenConnection();
                cmd.ExecuteNonQuery();
                this.CloseConnection();
            }
то ваш update будет работать или мне заполнять как то по другому
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
22.04.2014, 09:54
Ты определись, как вводишь данные, если через Grid, то там всё просто и минимум программирования. Если через TextBox'ы, то их надо привязать к соответствующим полям DataTable.

Добавлено через 4 минуты
Суть в том, что MySqlDataAdapter и MySqlCommandBuilder позволяют скрыть SQL-команды и не задавать их нигде явно, не составлять вручную. Но для этого и работать надо через цепочку Соединение - Адаптер - DataSet - таблицы в DataSet - элементы управления (DataGridView и прочие). Если вместо или кроме DataGridView исользовать TextBox, то там нужна ещё прокладка между DataTable и TextBox - Binding.
0
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 102
22.04.2014, 10:09  [ТС]
вообще это форма ввода, в текст боксы я заполняю поля а потом после нажатия на кнопку сохранить отображаю в датагиде и вот не знаю на каком этапе сохранять в базу.

Добавлено через 10 минут
вы говорили сюда поместить все эти билдеры?
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
namespace MySqlConn
{
    class MySqlClass
    {
        public MySqlConnection connection;
        public MySqlDataAdapter myDataAdapter;
        public DataSet myDataSet;
        private string server;
        private string dataBase;
        private string uID;
        private string password;
       public string SQLcommand;
        public MySqlClass()
        {
            Initialize();
       }
 
 
        public void Initialize()
        {
            myDataAdapter = new MySqlDataAdapter();
            myDataAdapter.SelectCommand = new MySqlCommand(SQLcommand, connection);
            MySqlCommandBuilder myCommandBuilder = new MySqlCommandBuilder(myDataAdapter);
            myDataSet = new DataSet();
            myDataAdapter.Fill(myDataSet);
            
 
            server = "localhost";
            dataBase = "analyse";
            uID = "root";
            password = "password";
            string connectionString;
            connectionString = "SERVER=" + server + "; " + "DATABASE=" + dataBase + "; " +
                               "UID=" + uID + "; " + "PASSWORD=" + password;
            connection = new MySqlConnection(connectionString);
        }
 
        public bool OpenConnection()
        {
            try
            {
                connection.Open();
                return true;
            }
            catch (MySqlException ex)
            {
                switch (ex.Number)
                {
                    case 0:
                        MessageBox.Show("Невозможно подключиться к серверу. Свяжитесь с администратором");
                        break;
                        //а эта фигня не работает.хотя должна зараза работать!!!!!
                    case 1045:
                        MessageBox.Show("");
                        break;
                }
                return false;
            }
        }
я поместил теперь обращаюсь с формы заполнения так:
C#
1
dataGridView1.DataSource = myDataSet.Tables["zayavka"];
а он говорит типа Warning 1 Field 'MySqlConn.MySqlClass.SQLcommand' is never assigned to, and will always have its default value null это он ругается на fill в инициализации
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
22.04.2014, 10:32
Вот эту строку
C#
1
yDataAdapter.SelectCommand = new MySqlCommand(SQLcommand, connection);
поменяй на
C#
1
yDataAdapter.SelectCommand = new MySqlCommand("select * from company", connection);
0
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 102
22.04.2014, 10:40  [ТС]
я его к нескольким таблицам применить хочу, поэтому я датасет и датаадаптер поместил в класс

Добавлено через 4 минуты
по идее для заполнения таблицы у меня есть такой метод
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  public void FillGrid(string SQLcommand, DataGridView dataGrid)
        {
            DataTable dt = null;
            using (connection)
            {
                connection.Open();
                using (MySqlCommand cmd = new MySqlCommand(SQLcommand, connection))
                {
                    MySqlDataAdapter da = new MySqlDataAdapter(SQLcommand, connection);
                    dt = new DataTable("TName");
                    da.Fill(dt);
                }
                connection.Close();
            }
            dataGrid.DataSource = dt;
        }
а когда я вставляю то использую
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public void InsertUpdate(string SQLcommand)
        {
            using (connection)
            {
                   
                MySqlCommand cmd = new MySqlCommand(SQLcommand, connection);
                cmd.Connection = connection;
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = SQLcommand;
                this.OpenConnection();
                cmd.ExecuteNonQuery();
                this.CloseConnection();
            }
        }
а когда удаляю
C#
1
2
3
4
5
6
7
8
9
  public void Delete(string SQLcommand)
        {
            if (this.OpenConnection() == true)
            {
                MySqlCommand command = new MySqlCommand(SQLcommand, connection);
                command.ExecuteNonQuery();
                this.CloseConnection();
            }
        }
тока вот вы видели результаты моего творчества я что то совсем запутался, ка кбудет правильнее использовать ваш метод, применяя не только к одной таблице и чтобы еще и допустим с полем ID получалось я ж его ищу и потом вставляю
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
22.04.2014, 10:45
Тогда передавай имя таблицы в Initialize() или храни его внутри класса
C#
1
yDataAdapter.SelectCommand = new MySqlCommand("select * from " + mytableName, connection);
Добавлено через 5 минут
Хорошо, если ты так любишь классы. Пусть класс соответствует таблице БД, тогда объяви в классе переменную string для хранения имени таблицы, а также переменную для DataAdapter. В конструкторе класса создавай адаптер и вызывай mysqlcommandbuilder.
А вот само соединение и DataSet должны быть созданы на уровне приложения и передаваться в конструктор готовыми.
Иначе у тебя каждый экземпляр класса начнёт создавать свои соединения и DataSet и всё запутается.
1
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 102
22.04.2014, 10:54  [ТС]
я переменные создал а вот с на уровне приложения можно я вам скину файл моего класса а вы его правильно сделаете, пожалуйста?MySqlClass.rar
0
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 102
22.04.2014, 16:14  [ТС]
дико извинясь ноя так и не понял, прошу помощи как сделать соединение и Dataset на уровне приложения? у меня соединение находиться в методах класса, и куды теперь его

Добавлено через 3 часа 33 минуты
Премного благодарен разобрался со всем!!! все пашет ейху, спасибо что помогли
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
22.04.2014, 16:26
Я просто был занят. И как сделал?
0
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 102
22.04.2014, 21:22  [ТС]
какты и написал подключил конэкш на уровне приложения и прописал датаадаптеры для каждой таблицы и потом обращался к ним из тех форм из которых надо=) а вообще мне кажется изначально с биндингом версия моей проги была лучше))) просто мне приходится тут вот таким образом делать чтоб разобраться как все работает, ОГРОМНОЕ ТЕБЕ СПАСИБО!!!!!!реально мне кажется я тебя достал со своими тупыми вопросами просто я новичок в этом.

Добавлено через 2 минуты
Кстат ( извиняюсь что не по теме, но решил воспользоваться случаем и спросить или это не в правилах форума? просто ты профи в своем деле решил обратиться именно к тебе) я тут решил подключить олап отчеты вернее мне сказали сделать их ну чтоб формировать отчеты какие надо пользователю, так вот в инете мало инфы про это, я в ms sql server делал как то их а тут даж без вариантов не знаю как их воять? мош подскажешь инфой или ссылочкой поделишься нужной?

Добавлено через 1 минуту
а может даже пример есть????
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
22.04.2014, 21:42
С OLAP не работал.
0
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 102
22.04.2014, 21:50  [ТС]
эхх ну лян буду колесить по инету в поисках наживы(((
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.04.2014, 21:50

Добавление записи в базу данных
Здравствуйте, это снова я. Может кто подскажет, почему не получается создать новую запись в таблице? Данные в переменных top и left...

Добавление записи в базу данных
Private Sub Command1_Click() Data1.Recordset.AddNew End Sub Private Sub Command2_Click() Text1.Text = Test.Text1.Text ...

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

Добавление записи в базу данных
такой вопрос, как додавить новую запись в базу данных с второй формы?? даные вводятся в textbox! если можно пример киньте) использую аксес...

Добавление данных в базу - PHP Myadmin Mysql
Здравствуйте у меня такая проблема. Я сделал форму регистрации и авторизации. Подскажите пожалуйста, какой запрос нужно прописать, чтобы...


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

Или воспользуйтесь поиском по форуму:
52
Ответ Создать тему
Новые блоги и статьи
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат» Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru