![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
Наверное нужно заново производить подключение к БД чтобы удалить и отдельно чтобы добавить данные. и по новому подкючать dataadapter и datatable
|
|||
|
||||
| metis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 29.1.2008 Репутация: нет Всего: нет |
Начинать, по крайней мере я так считаю, нужно все же с добавления данных в БД.
На пример, надо загрузить, обновить, удалить данные из таблицы ФИО, состоящей из 2 полей (столбцов) id числовое поле (автоинкремент) и fio текстовое поле. Я бы сделал следующим образом: 1. Создал форму и разместил бы на ней несколько элементов управления (текстбокс и кнопка) 2. В текстбокс пишем фио и нажимаем кнопку сохранить
Для начала попробуйте сделать добавление данных, обновление и удаление выполняется аналогично, тут главное правильно написать SQL запрос. |
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
А если меня интересует именно DataGridView. т.е я вношу данные в DataGridView они становится видны в гриде ну и естественно в БД.
Добавлено через 1 минуту и 35 секунд Получается такой же код: string table = "metable"; string dbase = "mydb.mdb"; string conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbase; OleDbConnection connection = new OleDbConnection(conStr); OleDbDataAdapter adapter = new OleDbDataAdapter(); Необходим и при добавлении и при удалении данных? Добавлено через 5 минут и 54 секунды или текстбокс соединять с ячейкам DatagridView ? |
|||
|
||||
| metis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 29.1.2008 Репутация: нет Всего: нет |
А если вы создаете строку в датагридвью, то нужно воспользоваться методом апдейт TableAdapter-а
|
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
Вот это да. опять што но новенькое
Добавлено через 8 минут и 59 секунд TableAdapter.Update(DataSet) Это вот это? |
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
или так dataAdapter.Update((DataTable)dataGridView1.DataSource);
|
|||
|
||||
| metis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 29.1.2008 Репутация: нет Всего: нет |
Можете выложить ваш проект?
|
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
using System;
using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.OleDb; namespace Bookshop { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { string dbase = "Bookshop_old.mdb"; string conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbase; DataSet dataSet = new DataSet(); dataSet.Tables.Add("Zhanri"); dataSet.Tables.Add("Book"); OleDbConnection connection = new OleDbConnection(conStr); OleDbDataAdapter adapter = new OleDbDataAdapter(); connection.Open(); OleDbCommand command1 = new OleDbCommand("SELECT * FROM Zhanri", connection); command1.ExecuteNonQuery(); adapter.SelectCommand = command1; adapter.Fill(dataSet.Tables[0]); dataGridView1.DataSource = dataSet.Tables[0]; OleDbCommand command2 = new OleDbCommand("SELECT * FROM Book", connection); command2.ExecuteNonQuery(); connection.Close(); adapter.SelectCommand = command2; adapter.Fill(dataSet.Tables[1]); dataGridView2.DataSource = dataSet.Tables[1]; adapter.Update(dataSet.Tables[0]); adapter.Update(dataSet.Tables[1]); connection.Close(); } private void button1_Click(object sender, EventArgs e) // довабление строки в datagridview { string table = "Zhanri"; string dbase = "Bookshop_old.mdb"; string conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbase; OleDbConnection connection = new OleDbConnection(conStr); OleDbDataAdapter adapter = new OleDbDataAdapter(); try { connection.Open(); ну а тут хочу вставить код для добавления в datagrid строк ZhanriTableAdapter.Update(BookshopDataSet); command.ExecuteNonQuery(); connection.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } } } } Я основываюсь на Вашем коде. |
|||
|
||||
| metis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 29.1.2008 Репутация: нет Всего: нет |
Попробуйте такой вариант
Это сообщение отредактировал(а) metis - 20.3.2012, 20:07 |
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
Данные при редактирование обновились в в Базе Данных. а удаление не работает.
На удаление надо что то другое? |
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
А почему когда я хочу тоже самое сделать для отображения второй таблицы в Datagridview2
то выскакивает ошибка Error 1 Type 'Bookshop.Form1' already defines a member called 'GetData' with the same parameter types d:\Bookshop\Bookshop\Form1.cs 54 21 Bookshop а я всего лишь добавил ниже dataGridView1.DataSource = bindingSource; GetData("select * from Zhanri"); Добавлено через 1 минуту и 35 секунд т.е. добавил dataGridView2.DataSource = bindingSource; GetData("select * from Zhanri"); ну и такой же код на обработчик событий по нажатию кнопки Button2 |
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
Хотя на удаление тоже работает и на добавление.
Просто там не удалялось потому что не выделил всю строку. и ошибка выскакивала потому что таблицы же связанные. А как тогда отобразить другие таблицы в остальных datagridview (datagridview2, datagridview3....) все тот же вопрос с GetData. |
|||
|
||||
| metis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 29.1.2008 Репутация: нет Всего: нет |
Проще всего создать для каждой таблицы BindingSource и OleDbDataAdapter и отдельную процедуру получения данных.
|
|||
|
||||
| Anddros |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 13.10.2009 Репутация: нет Всего: нет |
А покажи пожалуйста как это сделать , у меня так и не получилось.
Вроде понятно, а на самом деле не получается сколько я не пытаюсь. Мне край надо. Я занимаюсь совсем недавно C#. |
|||
|
||||
| metis |
|
||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 29.1.2008 Репутация: нет Всего: нет |
Ну если совсем по простому, то как то так:
Чтобы датагридвью заполнить
Чтобы изменения сохранить
И на конец процедура получения данных
Думаю принцип понятен. |
||||||||
|
|||||||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |