Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.55/22: Рейтинг темы: голосов - 22, средняя оценка - 4.55
Ali002
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 102
1

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

20.04.2014, 18:05. Просмотров 4418. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2014, 18:05
Ответы с готовыми решениями:

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

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

Добавление записи в базу данных MSSQL
Добрый вечер, возникла проблема при добавлении записи в БД. У меня есть две...

Добавление записи в базу данных Access
База данных-Access. Необходимо добавить запись в базу Clients(открывается по...

MySQL datagridview добавление данных в БД только кнопкой
Здравствуйте, уважаемые. Вывожу таблицу из БД в datagridview.Разрешено...

51
Ali002
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 102
20.04.2014, 22:41  [ТС] 21
Да про них родимых я их сам приписал указал их названия, а когда запрос выполняется у меня в датагриде отображаются мои заголовки да ещё и Заголовки с их названия в базе
0
nmcf
6521 / 5748 / 2618
Регистрация: 14.04.2014
Сообщений: 24,493
20.04.2014, 22:48 22
Установи через свойства колонок любые заголовки, какие хочешь.
0
Ali002
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 102
20.04.2014, 22:53  [ТС] 23
Я уже установил только говорю же записи из бд не вставляются в датагрид. Я сделал свойство autogeneratecolumns =false. Теперь отображаются тока мои заголовки. А как сделать чтоб отображались мои данные
0
nmcf
6521 / 5748 / 2618
Регистрация: 14.04.2014
Сообщений: 24,493
20.04.2014, 23:07 24
Вот это сделал?
C#
1
2
myDataAdapter.Fill(myDataSet, "Departments"); 
dataGridView1.DataSource = myDataSet["Departments"];
0
Ali002
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 102
20.04.2014, 23:11  [ТС] 25
Да сделал, спокойно в класс добавил вызываю функцию с параметрами запроса и названием таблицы
0
nmcf
6521 / 5748 / 2618
Регистрация: 14.04.2014
Сообщений: 24,493
20.04.2014, 23:17 26
И в DataGrid ничего не появляется?
0
Ali002
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 102
20.04.2014, 23:22  [ТС] 27
Появляется если я уберу значения своих заголовков, те которые я в свойствах datagrid прописал
0
nmcf
6521 / 5748 / 2618
Регистрация: 14.04.2014
Сообщений: 24,493
20.04.2014, 23:27 28
Сначала всё загружаешь, устанавливаешь DataSource. И только потом меняешь заголовки, оформление и т. п.
0
Ali002
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 102
20.04.2014, 23:46  [ТС] 29
я не учел тут он ругается типа Error 1 Cannot apply indexing with [] to an expression of type 'System.Data.DataSet'
Код
dataGridView1.DataSource = myDataSet["company"];
0
nmcf
6521 / 5748 / 2618
Регистрация: 14.04.2014
Сообщений: 24,493
21.04.2014, 05:55 30
Пропустил Tables
C#
1
dataGridView1.DataSource = myDataSet.Tables["company"];
0
Ali002
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 102
21.04.2014, 07:33  [ТС] 31
чет я ваще запутался посмотри пожалста, так я объявляю метод в классе но что писать в классе вместо[Table] птому что он ругается на него
C#
1
dataGridView.DataSource = myDataSet.Tables[table];
так как я хочу применять этот метод для нескольких форм и таблиц может быть выходные данные как то изменить?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public void update(string SQLcommand, DataGrid dataGridView, string Table)
        {
         //   DataTable dt = null;
            using (connection)
            {
                connection.Open();
            MySqlDataAdapter myDataAdapter = new MySqlDataAdapter();
            myDataAdapter.SelectCommand = new MySqlCommand(SQLcommand, connection);
            MySqlCommandBuilder myCommandBuilder = new MySqlCommandBuilder(myDataAdapter);
            DataSet myDataSet = new DataSet();
             dataGridView.DataSource = myDataSet.Tables[table];
            myDataAdapter.Fill(myDataSet, Table );
             myDataAdapter.Update(myDataSet, Table);
             
          //  dataGridView.DataMember = Table;
            }
                connection.Close();
            }
0
nmcf
6521 / 5748 / 2618
Регистрация: 14.04.2014
Сообщений: 24,493
21.04.2014, 08:22 32
Порядок другой и MySqlDataAdapter, myDataSet объяви в заголовке класса
C#
1
2
3
4
5
            myDataAdapter = new MySqlDataAdapter(SQLcommand, connection);
            MySqlCommandBuilder myCommandBuilder = new MySqlCommandBuilder(myDataAdapter);
            myDataSet = new DataSet();
            myDataAdapter.Fill(myDataSet, "company");
            dataGridView.DataSource = myDataSet.Tables["company"];
0
Ali002
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 102
21.04.2014, 08:40  [ТС] 33
Объявил как и сказали, теперь что делать с Tables["company"]; в классе как его обозначить вернее посмотри пожалста выше я в объявлении метода я НЕ правильно написал что туда писать?

Добавлено через 5 минут
Объявил как и сказали, теперь что делать с Tables["company"]; в классе как его обозначить вернее посмотри пожалста
Цитата Сообщение от Ali002 Посмотреть сообщение
public void update(string SQLcommand, DataGrid dataGridView, string Table)
я в объявлении метода я НЕ правильно написал или правильно ? Потом при вызове этого метода я пишу в запрос
C#
1
2
3
string cmnd = "SELECT * FROM company";
           dataGridView1.DataSource = "company";
sqlClass.update(cmnd , dataGridView1,"company");
что туда писать?
0
nmcf
6521 / 5748 / 2618
Регистрация: 14.04.2014
Сообщений: 24,493
21.04.2014, 10:47 34
Настройку соединения и все эти манипуляции по заполнению DataGrid помести в конструктор класса.
А в public void update() будет только вызов DataAdapter.Update()
0
Ali002
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 102
21.04.2014, 23:42  [ТС] 35
Я не понял чуток что куда нужно вставлять((((((((((((((
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using MySql.Data.MySqlClient;
using System.Windows.Forms;
 
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 MySqlClass()
        {
            Initialize();
     
           }
  
        public void Initialize()
        {
            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;
            }
        }
 
        public bool CloseConnection()
        {
            try
            {
                connection.Close();
                return true;
            }
            catch (MySqlException ex)
            {
                //не знаю че придумать. пока что так будет
                MessageBox.Show(ex.Message);
                return false;
            }
        }
 
          public void update(string SQLcommand, DataGrid dataGridView)
        {
            using (connection)
            {
                connection.Open();
                myDataAdapter = new MySqlDataAdapter();
                myDataAdapter.SelectCommand = new MySqlCommand(SQLcommand, connection);
                MySqlCommandBuilder myCommandBuilder = new MySqlCommandBuilder(myDataAdapter);
                myDataSet = new DataSet();
                myDataAdapter.Fill(myDataSet);
                myDataAdapter.Update(myDataSet);
               dataGridView.DataSource = myDataSet;
                        }
            connection.Close();
        }
                 
   
        
    }
}
0
nmcf
6521 / 5748 / 2618
Регистрация: 14.04.2014
Сообщений: 24,493
22.04.2014, 08:21 36
Строки с 82-86, 88 переместить в Initialize() или в OpenConnection(). в update() только 87 оставить.
0
Ali002
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 102
22.04.2014, 08:55  [ТС] 37
а где объявить ? SQLcommand и Datagridview?
0
nmcf
6521 / 5748 / 2618
Регистрация: 14.04.2014
Сообщений: 24,493
22.04.2014, 09:26 38
DataGridView зачем объявлять, его на форму размещаешь, объявление само появится. Надо только DataSource установить.
0
Ali002
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 102
22.04.2014, 09:32  [ТС] 39
ааа ясно, а вот с fill и delete, тоже так же его тока в метод написать и при обращении так же как и с update
0
nmcf
6521 / 5748 / 2618
Регистрация: 14.04.2014
Сообщений: 24,493
22.04.2014, 09:43 40
Если таблицу редактируешь средствами DataGridView, то там уже всё реализовано - добавление, удаление и редактирование, а для записи этого единый Update() адаптера предназначен.
0
22.04.2014, 09:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2014, 09:43

C# DataGridView - добавление в базу при редактировании датагрида
Помогите... есть база даных подключеная к датагриду все работает при запуске...

Добавление записи в базу
Наткнулся на проблему с реализацией добавления записи в бд access через...

Сохранить две таблицы в DataGridView в базу MySql
Привет, форумчане! Есть две таблицы, которые успешно выводятся в DataGridView с...


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

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

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