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

Добавление записи в базу

22.04.2014, 16:48. Просмотров 1960. Ответов 11
Метки нет (Все метки)

Наткнулся на проблему с реализацией добавления записи в бд access через datagridview который выводит таблицу выбранную в treeviwe. И вообще возможно ли такое? Вообще я хочу сделать чтобы был один код для всех возможных таблиц, чтобы все данные вводились в поля datagrid'a, а таблица определялась через treeView1.SelectedNode.Text

Надеюсь найдутся люди которые помогут реализацией этого кода, ну или хотя бы способные дать мне пинок в нужном направлении решения этой дилеммы!)

для визуального восприятия
картинка
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2014, 16:48
Ответы с готовыми решениями:

Добавление новой записи в базу
Добрый вечер. Делаю добавление новой записи в таблицу базы. Проблема, как я понимаю, при вставке...

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

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

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

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

11
Ghost_Inq
0 / 0 / 0
Регистрация: 22.02.2013
Сообщений: 65
22.04.2014, 17:00  [ТС] 2
так лучше наверное будет
0
Миниатюры
Добавление записи в базу  
nmcf
6535 / 5758 / 2622
Регистрация: 14.04.2014
Сообщений: 24,498
22.04.2014, 18:06 3
Делаешь цепочку Connection - DataAdapter - DataSet c DataTable - DataGridView.
После выбора таблицы, задаёшь Адаптеру команду выборки "Select * From" + имя выбранной таблицы. Затем формируешь остальные SQL-команды через вызов OleDbCommandBuilder. Остаётся загрузить таблицу через метод Fill адаптера и вывести в DataGridView через свойство DataSource
После редактирования в DataGridView вызываешь Update() адаптера для сохранения изменений.
1
Ghost_Inq
0 / 0 / 0
Регистрация: 22.02.2013
Сообщений: 65
22.04.2014, 18:27  [ТС] 4
nmcf, пробовал подобным способом, выдавало ошибку что типа не может найти заданную таблицу в dataSet или в DataTable

Добавлено через 5 минут
в общем вот код чтения и вывода в datagrid

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
public partial class Admin : Form
    {
        OleDbConnection con = new OleDbConnection();
        DataSet ds = new DataSet();
        OleDbCommand cmd;
 
        public Admin()
        {
            InitializeComponent();
        }
 
        private void Admin_Load(object sender, EventArgs e)
        {
            con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Base.mdb";
            tabControl1.SelectedTab = tabPage2;
            bindingNavigator1.Visible = false;
 
            treeView1.Nodes.Clear();
            //con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0; Data Sourse=Base.mdb");
            con.Open();
 
            DataTable tableNames = con.GetSchema("Tables");
            DataTable columnNames = con.GetSchema("Columns");
 
            int p = 0;
            foreach (DataRow dr in tableNames.Rows)
            {
                string tableName = (string)dr["TABLE_NAME"];
                if (!tableName.Contains("MSys"))
                {
                    treeView1.Nodes.Add(tableName);
 
                    foreach (DataRow dr1 in columnNames.Rows)
                    {
                        if (tableName == (string)dr1["TABLE_NAME"])
                        {
                            treeView1.Nodes[p].Nodes.Add((string)dr1["COLUMN_NAME"]);
                        }
                    }
                    p++;
                }
            }
            con.Close();
        }
 
        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Base.mdb";
            con.Open();
 
            if (treeView1.SelectedNode.Level == 0)
            {
                OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM " + treeView1.SelectedNode.Text, con);
                OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
 
                ds = new DataSet();
                da.Fill(ds, treeView1.SelectedNode.Text);
                dataGridView1.DataSource = ds.Tables[0];
            }
            else
            {
                OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM " + treeView1.SelectedNode.Parent.Text, con);
                OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
 
                ds = new DataSet();
                da.Fill(ds, treeView1.SelectedNode.Parent.Text);
                dataGridView1.DataSource = ds.Tables[0];
            }
            con.Close();
        }
 
        private void btTreeTables_Click(object sender, EventArgs e)
        {
            tabControl1.SelectedTab = tabPage1;
        }
 
        private void btExitAdmin_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
0
22.04.2014, 18:27
nmcf
6535 / 5758 / 2622
Регистрация: 14.04.2014
Сообщений: 24,498
22.04.2014, 18:39 5
Вроде всё правильно. Отладчиком посмотри как формируется SELECT и на какой строке вообще ошибка.
0
Ghost_Inq
0 / 0 / 0
Регистрация: 22.02.2013
Сообщений: 65
22.04.2014, 18:46  [ТС] 6
nmcf, нет, этот код работает, а вот как написать именно добавление в базу не пойму! То есть я хочу что бы я вводил данные в поля в datagrid'e и отсюда уже сохранял в таблицу, а название таблицы определялось так же как и для ее вывода
0
nmcf
6535 / 5758 / 2622
Регистрация: 14.04.2014
Сообщений: 24,498
22.04.2014, 19:20 7
Лучший ответ Сообщение было отмечено Ghost_Inq как решение

Решение

Переменную для da вынеси в заголовок класса. Для сохранения da.Update(ds.Tables["имя таблицы"]);
1
Ghost_Inq
0 / 0 / 0
Регистрация: 22.02.2013
Сообщений: 65
22.04.2014, 19:55  [ТС] 8
хорошо попробую!)

Добавлено через 23 минуты
да все ок, редактирование и удаление таким же способом можно?
0
nmcf
6535 / 5758 / 2622
Регистрация: 14.04.2014
Сообщений: 24,498
22.04.2014, 20:01 9
Они уже у тебя должны работать. Выдели строку в Grid, нажми Del и можешь сохранять изменения.
0
Ghost_Inq
0 / 0 / 0
Регистрация: 22.02.2013
Сообщений: 65
22.04.2014, 20:23  [ТС] 10
nmcf, не, я хотел именно удаление установить на кнопку!
0
nmcf
6535 / 5758 / 2622
Регистрация: 14.04.2014
Сообщений: 24,498
22.04.2014, 20:29 11
По кнопке удаляй из DataGridView, потом вызывай Update().
1
Ghost_Inq
0 / 0 / 0
Регистрация: 22.02.2013
Сообщений: 65
22.04.2014, 20:32  [ТС] 12
nmcf, спасибо за подсказки!)
0
22.04.2014, 20:32
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2014, 20:32

Очищения поля после добавление записи в базу
Здравствуйте, как очистить после добавления данных в базу? Вот код private void...

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

Невозможно добавление или изменение записи. Для обеспечения целостности данных необходимо наличие связанной записи
Здравствуйте, дорогие форумчане. Пытаюсь создать приложение для работы с БД Access. Исходник...


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

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

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