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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Access и С#, как управлять базой через C# 
V
    Опции темы
Aannttoonn
Дата 23.8.2006, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 7.12.2005
Где: г. Елабуга

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



Привет.
Подключаю к проекту базу из Access к DataGridView. Дальше с помощью testiDataSet создаю, или думаю, что создаю, SQL-запрос он обзывается как-нибудь, например InsertQuery(). А потом я не знаю что делать, а может я просто не правильно делал? Вообще нуно чтобы при нажатии кнопки этот запрос произошёл.

Спасибо.
PM MAIL ICQ   Вверх
marcusmae
Дата 23.8.2006, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


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

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



Кажется тема не в том разделе, да и без кода трудно понять, что Вы делаете.

Код

using System.Data;
using System.Data.OleDb;


1) Сначала нужно создать соединение с базой

Код

OleDbConnection connection = new OleDbConnection(connectionString);


connectionString - строка с настройками обращения к базе. Я делал такую функцию в зависимости от Excel/Access : 

Код

        using System.IO;

        public static String GetConnectionString(String Filepath)
        {
            if (Path.GetExtension(Filepath) == ".xls")
                return
                    String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};" +
                    "Extended Properties=\"Excel 8.0;HDR=No\";", Filepath);
            else
                if (Path.GetExtension(Filepath) == ".mdb")
                    return
                        String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Jet OLEDB:Engine Type=5",
                        Filepath);

            MessageBox.Show("Unknown format", "Error", MessageBoxButtons.OK,
                MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
            return null;
        }


2) затем создаётся строка с SQL-запросом к базе

Код

strCommand = "SELECT * FROM `Table 1` WHERE `Table 1`.`Drink` != `Table 2`.`Smoke`"


3) дальше можно поступить по-разному.

Первый простой для понимания способ медленнен в исполнении :

Код

// создаём адаптер
OleDbDataAdapter dataAdapter = new dataAdapter(strCommand, connection);
// заполняем таблицу данными, выбранными по команде strCommand через адаптер
// можно заполнить и DataSet тоже
DataTable dataTable = new dataTable("Table");
dataAdapter.Fill(dataTable);
// показываем таблицу в Вашем dataGridView
dataGridView.DataSource = dataTable;


Второй способ предусматривает более быстрый выбор данных, однако заполнение таблицы нужно будет делать вручную : 

Код

OleDbCommand сommand = new OleDbCommand(strCommand, connection);
OleDbDataReader reader = command.ExecuteReader();


далее, нужно будет в цикле считать данные читателем reader в таблицу, массив или куда-угодно ещё.

Добавлено @ 21:23 
Или я чего-то недопонял? ;)


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
Aannttoonn
Дата 24.8.2006, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 7.12.2005
Где: г. Елабуга

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



Нет, спасибо. Всё в порядке. Всё работает. Просто делал я, видимо, по-японски.
PM MAIL ICQ   Вверх
Aannttoonn
Дата 25.8.2006, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 7.12.2005
Где: г. Елабуга

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



Вот ещё не получается изменить строку. Делаю вот так:

Код

OleDbConnection connectUsdata = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=klassi.mdb");
                OleDbCommand cmd = new OleDbCommand(
                    "UPDATE Spisok SET Год=999, Класс='a', Имя='a' WHERE №Ученика=2", connectUsdata);
                connectUsdata.Open();
                // Не знаю
                connectUsdata.Close();


Может надо по другому?
PM MAIL ICQ   Вверх
marcusmae
Дата 25.8.2006, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


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

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



Изменить строку подключения или строку запроса?

В строке подключения можно изменить базу:
Код

connectUsdata.ChangeDatabase(string value);


Если нужно изменить и параметры подключения, то по-моему нужно создавать заново всё соединение.

Строку запроса тоже можно изменить :
Код

cmd.CommandText = "";


Кажется Вы собираетесь писать элементы в базу, а не читать (примеры, кот. я раньше привёл). Тогда нужно использовать ExecuteNonQuery(). Примерно так :

Код

OleDbConnection connectUsdata = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=klassi.mdb");
                OleDbCommand cmd = new OleDbCommand(
                    "UPDATE Spisok SET Год=999, Класс='a', Имя='a' WHERE №Ученика=2", connectUsdata);
                connectUsdata.Open();

                int affectedRows = cmd.ExecuteNonQuery();

                // потом можно изменить команду и снова делать запросы
                cmd.CommandText = "";

                connectUsdata.Close();


Советую не держать базу открытой всё-время, если это возможно. По умолчанию, она будет довольно часто запускать самообновление, что может плохо сказаться на общей производительности.

Это сообщение отредактировал(а) marcusmae - 25.8.2006, 23:36


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
Aannttoonn
Дата 27.8.2006, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 7.12.2005
Где: г. Елабуга

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



Всё поехало. Спасибо. Ну просто респект.

На самом деле всё оказывается так просто, когда узнаёшь smile 

Как кто-то сказал: "Теперь я програмер!"
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

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

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


 




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


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

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