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

Поиск:

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


Шустрый
*


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

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



Можно так попробовать
Код

            string dbase = "dbname";
            string conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbase;
            DataSet dataSet = new DataSet();
            dataSet.Tables.Add("table1");
            dataSet.Tables.Add("table2");
            OleDbConnection connection = new OleDbConnection(conStr);
            OleDbDataAdapter adapter = new OleDbDataAdapter();
            connection.Open();
           
            OleDbCommand command1 = new OleDbCommand("SELECT * FROM   table1", connection);
            command1.ExecuteNonQuery();
            adapter.SelectCommand = command1;
            adapter.Fill(dataSet.Tables[0]);
            dataGridView1.DataSource = dataSet.Tables[0];

            OleDbCommand command2 = new OleDbCommand("SELECT * FROM   table2", 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();

Я написал для 2х таблиц, думаю сделать тоже самое для 4х, будет понятно.
Можно заполнять dataGridView в контексте не одного соедения, как я сделал в этом примере, а создавать новое подключение для каждого селекта.


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


Новичок



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

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



Спасибо. обязательно попробую.
PM MAIL ICQ Jabber   Вверх
Anddros
Дата 15.3.2012, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Данные из 2-х таблиц получилось увидеть на форме. Не с первого раза конечно. Пока не поместил пространстов имен using System.Data.OleDb; и не закинул файл БД в папку Bin\Debug  smile  . Думаю , тут необходимо будет сделать отображение master-detail для наглядности. 
А для редактирования тогда как быть? Что можете посоветовать? 

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


Шустрый
*


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

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



Цитата(Anddros @ 15.3.2012,  19:34)
... А для редактирования тогда как быть? Что можете посоветовать?

Читать MSDN,по ссылке которую я давал ранее (Практическое руководство. Обновление записей в базе данных). Там описано достаточно просто, подробно и с примерами.  Если что то не получится пишите - поможем-подскажем.
PM MAIL   Вверх
Anddros
Дата 15.3.2012, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



System.Data.SqlClient.SqlConnection sqlConnection1 = 
    new System.Data.SqlClient.SqlConnection("YOUR CONNECTION STRING ");

System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = "DELETE Region WHERE RegionID = 5 AND RegionDescription = 'NorthWestern'";
cmd.Connection = sqlConnection1;

sqlConnection1.Open();
cmd.ExecuteNonQuery();
sqlConnection1.Close();



Вот это вобще не понятно. просидел 4 часа и бес толку. 
Вычитал , что 
SqlConnection, SqlCommand, SqlDataAdapter соответствует
OleDbConnection,  OleDbCommand, OleDbDataAdapter. 
Сколько не менял, ничего не получилось. А System.Data.SqlClient это вообще наверное тоже относится к MS SQL Server.
Здесь нужно наверное как то производить подключение к Dataset и Dataadapter.

Прошу прощения за свою неразумность.
PM MAIL ICQ Jabber   Вверх
metis
Дата 16.3.2012, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

SqlConnection, SqlCommand, SqlDataAdapter соответствует
OleDbConnection,  OleDbCommand, OleDbDataAdapter. 

Все верно.  Если хотите выполнить хранимую процедуру (на пример),которая уже существует в БД, к вашему коду нужно добавить SqlDataAdapter

            
Код

            SqlConnection conn = new SqlConnection(connectionString);
            conn.Open();
            SqlCommand cmd = new SqlCommand("StoredProcedure_Name", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataSet dataSet = new DataSet();
            da.Fill(dataSet, tableName);
            conn.Close();


Если вы хотите формировать SQL запрос в клиенте советую почитать про SqlCommandBuilder.

P.S. А при чем тут вобще работа с БД SQL сервера, вы же кажется с БД Acces работаете?
PM MAIL   Вверх
Anddros
Дата 16.3.2012, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да . верно , что с Access. Но в примере , который в MSDN, ссылку на который Вы мне скинули , речь идёт о взаимодействии именно с SQL сервером. Вот у меня и возникли трудности по поводу того, как удалять из таблицы строки и как обновлять базу данных.

Добавлено через 2 минуты и 47 секунд
Поэтому я и не смог разобраться на основе того примера со своим случаем .

Добавлено через 7 минут и 16 секунд
А хранимые процедуры , к сожалению, БД Access не поддерживаются вроде. 
PM MAIL ICQ Jabber   Вверх
metis
Дата 16.3.2012, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

connection1.Open();
OleDbCommand command1 = new OleDbCommand("DELETE Region WHERE RegionID = 5 AND RegionDescription = 'NorthWestern", connection1);
command1.ExecuteNonQuery();



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


Новичок



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

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



Поэтому, всё же интересует вопрос как реализовать функции редактирования в СУБД Access с помощью C#.

Добавлено через 10 минут и 17 секунд
DELETE Region WHERE RegionID = 5 AND RegionDescription = 'NorthWestern", connection1

А что значит цифра пять? это удаление 5ой строки?

В моём случае значит должно быть 

DELETE Book WHERE ID_knigi  AND Nazv_knigi AND Avtor  AND ID_zhanr  AND ID_izdat AND Cena = Bookshop,  connection1
PM MAIL ICQ Jabber   Вверх
metis
Дата 16.3.2012, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Нужно вызвать метод Update  у датаадаптера
Код

dataAdapter.Update((DataTable)dataGridView.DataSource); 

или
Код

dataAdapter.Update(dataSet_Name); 


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


Новичок



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

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



>А что значит цифра пять? 
Так что она тут значит в этом запросе?

А метод Update это тоже относится к удалению строки или для обновления таблицы? 
PM MAIL ICQ Jabber   Вверх
metis
Дата 16.3.2012, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Что значит цифра 5 это вы должны знать, я просто скопировал ваз запрос и вставил его в свой пример.
Цитата

...
Метод TableAdapter.Update(DataTable)
Пытается сохранить все изменения DataTable в базе данных. (Это включает удаление всех строк, удаленных из таблицы, добавление вставленных в таблицу строк и обновление всех строк в таблице, которые были изменены.) 
...

Это все описано в руководстве по обновлению данных в БД, ссылку на которое я уже давал.
Читайте, вникайте, пробуйте...


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


Новичок



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

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



<Читайте, вникайте, пробуйте...

Надеюсь мне хватит времени ко времени "Ч".

Добавлено через 7 минут и 55 секунд
<Это все описано в руководстве по обновлению данных в БД, ссылку на которое я уже давал.

К сожалению, там описано касаемо MS SQL сервер.

Добавлено через 11 минут и 8 секунд
<DELETE Region WHERE RegionID = 5 

Это из того примера , что в MSDN. что Вы дали в ссылке.
PM MAIL ICQ Jabber   Вверх
metis
Дата 18.3.2012, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Касаемо MS SQL сервера, в руководстве описан метод обновления данных с помощью командных объектов, остальные примеры описаны вполне понятно и могут подойти для решения вашей задачи, если вы собираетесь изменять данные путем редактирования информации в datagridview.
Цитата

Сколько не менял, ничего не получилось

Код в "студию", что именно не получается?Какая ошибка?

А еще мне интересно, вы говорите про удаление и редактирование данных, а процедура добавления записи в БД у вас уже написана?

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


Новичок



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

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



Процедура удаления тоже не написана. Данные из БД вывел в datagridview и вот застрял на удалении. дальше не касался. Добавления  записей конечно тоже нет. Код есть тот , что Вы скинули остальные свои собственные разработки уже удалил, т.к. там бред.


PM MAIL ICQ Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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