Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Acces + C# 
:(
    Опции темы
Anddros
Дата 19.3.2012, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 13.10.2009

Репутация: нет
Всего: нет



Наверное нужно заново производить подключение к БД  чтобы удалить и отдельно чтобы добавить данные. и по новому подкючать dataadapter и datatable 
PM MAIL ICQ Jabber   Вверх
metis
Дата 19.3.2012, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 29.1.2008

Репутация: нет
Всего: нет



Начинать, по крайней мере я так считаю, нужно все же с добавления данных в БД.
На пример, надо загрузить, обновить, удалить данные из таблицы ФИО, состоящей из 2 полей (столбцов) id числовое поле (автоинкремент) и fio текстовое поле.
Я бы сделал следующим образом:
1. Создал форму и разместил бы на ней несколько элементов управления (текстбокс и кнопка)
2. В текстбокс пишем фио и нажимаем кнопку сохранить
            
Код

            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();
            try
            {
                connection.Open();
                OleDbCommand command = new OleDbCommand("insert into " + table + "(fio)   values ('" +textBox1.Text + "')", connection);
                command.ExecuteNonQuery();
                connection.Close();
            }
            catch (Exception ex)
            { MessageBox.Show(ex.Message.ToString()); }



Для начала попробуйте сделать добавление данных, обновление и удаление выполняется аналогично, тут главное правильно написать SQL  запрос.



PM MAIL   Вверх
Anddros
Дата 19.3.2012, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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 ?
PM MAIL ICQ Jabber   Вверх
metis
Дата 19.3.2012, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 29.1.2008

Репутация: нет
Всего: нет



А если вы создаете строку в датагридвью, то нужно воспользоваться методом апдейт TableAdapter-а

PM MAIL   Вверх
Anddros
Дата 19.3.2012, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 13.10.2009

Репутация: нет
Всего: нет



Вот это да. опять што но новенькое

Добавлено через 8 минут и 59 секунд
TableAdapter.Update(DataSet) 
Это вот это?

PM MAIL ICQ Jabber   Вверх
Anddros
Дата 19.3.2012, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 13.10.2009

Репутация: нет
Всего: нет



или так dataAdapter.Update((DataTable)dataGridView1.DataSource);
PM MAIL ICQ Jabber   Вверх
metis
Дата 19.3.2012, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 29.1.2008

Репутация: нет
Всего: нет



Можете выложить ваш проект?
PM MAIL   Вверх
Anddros
Дата 19.3.2012, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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()); }
        }
        }
    }


   Я основываюсь на Вашем коде. 
PM MAIL ICQ Jabber   Вверх
metis
Дата 20.3.2012, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 29.1.2008

Репутация: нет
Всего: нет



Попробуйте такой вариант
Код

        private OleDbDataAdapter dataAdapter = new OleDbDataAdapter();
        private BindingSource bindingSource = new BindingSource();

        private void Form1_Load(object sender, System.EventArgs e)
        {
            dataGridView1.DataSource = bindingSource;
            GetData("select * from mytab");
        }


        //Обновляем записи в БД
        private void updateButton_Click(object sender, System.EventArgs e)
        {
             dataAdapter.Update((DataTable)bindingSource.DataSource);
        }
        //Процедура загрузки данных в dataGridView
        private void GetData(string selectCommand)
        {
            string dbase = "mydb.mdb";
            string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbase;
            dataAdapter = new OleDbDataAdapter(selectCommand, connectionString);
            OleDbCommandBuilder commandBuilder = new OleDbCommandBuilder(dataAdapter);
            DataTable table = new DataTable();
            dataAdapter.Fill(table);
            bindingSource.DataSource = table;
         }


Это сообщение отредактировал(а) metis - 20.3.2012, 20:07
PM MAIL   Вверх
Anddros
Дата 20.3.2012, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 13.10.2009

Репутация: нет
Всего: нет



Данные при редактирование обновились в в Базе Данных. а удаление не работает. 
На удаление надо что то другое?
PM MAIL ICQ Jabber   Вверх
Anddros
Дата 20.3.2012, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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
PM MAIL ICQ Jabber   Вверх
Anddros
Дата 20.3.2012, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 13.10.2009

Репутация: нет
Всего: нет



Хотя на удаление тоже работает и на добавление.
Просто там не удалялось  потому что не выделил всю строку. и ошибка выскакивала потому что таблицы же связанные.

А как тогда отобразить другие таблицы в остальных datagridview (datagridview2, datagridview3....)
все тот же вопрос с GetData.

PM MAIL ICQ Jabber   Вверх
metis
Дата 21.3.2012, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 29.1.2008

Репутация: нет
Всего: нет



Проще всего создать для каждой таблицы BindingSource и OleDbDataAdapter и отдельную процедуру получения данных.
PM MAIL   Вверх
Anddros
Дата 21.3.2012, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 13.10.2009

Репутация: нет
Всего: нет



А покажи пожалуйста как это сделать , у меня так и не получилось. 
Вроде  понятно, а на самом деле не получается сколько я не пытаюсь. Мне край надо. 
Я занимаюсь совсем недавно C#.
PM MAIL ICQ Jabber   Вверх
metis
Дата 21.3.2012, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 29.1.2008

Репутация: нет
Всего: нет



Ну если совсем по простому, то как то так:

Код

        private OleDbDataAdapter dataAdapter1 = new OleDbDataAdapter();
        private BindingSource bindingSource1 = new BindingSource();

        private OleDbDataAdapter dataAdapter2 = new OleDbDataAdapter();
        private BindingSource bindingSource2 = new BindingSource();
       // я делаю 2 у вас будет 4

Чтобы датагридвью заполнить 
Код

            dataGridView1.DataSource = bindingSource1;
            GetData1("select * from mytab1");
           //Для второй dataGridView
            dataGridView2.DataSource = bindingSource2;
            GetData2("select * from mytab2");

Чтобы изменения сохранить
Код

          dataAdapter1.Update((DataTable)bindingSource1.DataSource);
         //Для второй dataGridView
         dataAdapter2.Update((DataTable)bindingSource2.DataSource);

И на конец процедура получения данных
Код

           //GetDir1
            string dbase = "mydb.mdb";
            string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbase;
            dataAdapter1 = new OleDbDataAdapter(selectCommand, connectionString);
            OleDbCommandBuilder commandBuilder = new OleDbCommandBuilder(dataAdapter1);
            DataTable table = new DataTable();
            dataAdapter1.Fill(table);
            bindingSource1.DataSource = table;
            //GetDir2
            string dbase = "mydb.mdb";
            string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbase;
            dataAdapter2 = new OleDbDataAdapter(selectCommand, connectionString);
            OleDbCommandBuilder commandBuilder = new OleDbCommandBuilder(dataAdapter2);
            DataTable table = new DataTable();
            dataAdapter2.Fill(table);
            bindingSource2.DataSource = table;



Думаю принцип понятен. 


PM MAIL   Вверх
Страницы: (5) Все 1 2 [3] 4 5 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0564 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.