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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с базой даных Access, программа на С# 
:(
    Опции темы
alxxx
Дата 29.9.2007, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте товарищи программисты, у меня есть вопрос.

Нужно создать на C#  программу с возможностью создания и открытия базы данных Access, создания в ней таблиц (структура таблицы жестко задана в программе)  добавления, редактирования, удаления и просмотра записей.

 В С# равно как и в базах данных шарю пока очень слабо. 

Как создать базу я вроде понял, а вот как к ней подключиться и работать дальше (добавлять, редактировать, удалять записи)  не знаю. 

Прошу чем-нибудь помочь. Спасибо.
PM MAIL   Вверх
Smorodin
Дата 29.9.2007, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрейший
**


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

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



Код

 string connectionString = "provider=Microsoft.JET.OLEDB.4.0;" + "data source = c:\\db.mdb";
            string commandString = "select `id`, `name`, `name_tr` from vuzs ORDER BY `name`";
            OleDbDataAdapter DataAdapter = new OleDbDataAdapter(commandString, connectionString);

            DataSet DataSet = new DataSet();

            DataAdapter.Fill(DataSet, "vuzs");

            DataTable dataTable = DataSet.Tables[0];

          

            foreach (DataRow dataRow in dataTable.Rows)
            {
                listBox1.Items.Add(dataRow["name"]);
               
                label1.Text = dataRow["name"].ToString();
             
             
            }



Добавлено через 29 секунд
Код

 string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db.mdb";
            using (OleDbConnection connection = new OleDbConnection(connectionString))
            {
                connection.Open();



                // добавим строку в таблицу vuzs
                OleDbCommand command = new OleDbCommand("UPDATE vuzs SET `name`='" + textName.Text + "', `name_tr`='" + textName_tr.Text + "' WHERE `name_tr`='" + this.VuzNameTr + "'", connection);
                command.ExecuteNonQuery();


            }


Добавлено через 1 минуту и 3 секунды
Код

string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db.mdb";
            using (OleDbConnection connection = new OleDbConnection(connectionString))
            {
                connection.Open();

               

                // добавим строку в таблицу vuzs
                OleDbCommand command = new OleDbCommand("INSERT INTO vuzs(name, name_tr) VALUES('" + textBox1.Text + "', '" + textBox2.Text + "')", connection);
                command.ExecuteNonQuery();

                
            }



--------------------
Сделать можно все, только вопрос - когда?
PM MAIL Skype   Вверх
alxxx
Дата 30.9.2007, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо.
А как создавать таблицу в базе?
PM MAIL   Вверх
thomas
Дата 30.9.2007, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

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



alxxx
RTFM  smile 


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
Smorodin
Дата 30.9.2007, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрейший
**


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

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



Есть таблица. В ней поля:
id - Счетчик
name - Текстовый
vuz_id  - Числовой.

Есть код:
Код

        public Zvons(int vid)
        {
            InitializeComponent();
            //MessageBox.Show(vid.ToString());
            string connectionString = "provider=Microsoft.JET.OLEDB.4.0;" + "data source = c:\\db.mdb";
            string commandString = "select `id`, `name` from zvon WHERE `vuz_id`='" + vid + "'";
            OleDbDataAdapter DataAdapter = new OleDbDataAdapter(commandString, connectionString);

            DataSet DataSet = new DataSet();

            DataAdapter.Fill(DataSet, "zvon");

            DataTable dataTable = DataSet.Tables[0];

          
            foreach (DataRow dataRow in dataTable.Rows)
            {
               ...               
            }
        }



Ругается так:
Цитата
Таблица 'zvon' открыта с монопольным доступом пользователем 'Admin' на машине 'SMORODIN'.

и показывает на строку:
Код
DataAdapter.Fill(DataSet, "zvon");


В чем ошибка? Я еще только учусь...  :unsure:


--------------------
Сделать можно все, только вопрос - когда?
PM MAIL Skype   Вверх
thomas
Дата 30.9.2007, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

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



Smorodin
Закрой Access и потом юзай базу из своей программы.  smile 
и переименуй экаунт admin на что-нибуь другое, тогда тебя никто не хакнет через общепринятый экаунт admin.  smile 
Иди в политики и там переименовывай.

Это сообщение отредактировал(а) thomas - 30.9.2007, 21:28


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
Smorodin
Дата 1.10.2007, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрейший
**


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

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



Винда у меня временно, пока винчестер новый не купил. Обычно под никсом и никогда не юзал Ацес. ПРосто пользуясь моментом, решил пошаманить что нибудь под винд. smile

Спасибо за закрытие базы smile Я - ламер.

Добавлено через 53 секунды
Еще возник вопрос: а можно средствами C# узнать, открыта база или нет? smile

Добавлено через 9 минут и 1 секунду
Еще проблема:
Код

            string connectionString = "provider=Microsoft.JET.OLEDB.4.0;" + "data source = c:\\db.mdb";
            string commandString = "SELECT pars.id, pars.start, pars.end FROM pars WHERE (((pars.zvon_id)=2))";
            OleDbDataAdapter DataAdapter = new OleDbDataAdapter(commandString, connectionString);

            DataSet DataSet = new DataSet();

            DataAdapter.Fill(DataSet, "pars");

            DataTable dataTable = DataSet.Tables[0];

            int i = 0;


            foreach (DataRow dataRow in dataTable.Rows)
            {
            }

Ругается "IErrorInfo.GetDescription failed with E_FAIL(0x80004005)."
и показывает на "DataAdapter.Fill(DataSet, "pars");"


--------------------
Сделать можно все, только вопрос - когда?
PM MAIL Skype   Вверх
alxxx
Дата 1.10.2007, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Так, всем спасибо, кое что вроде уже раскурил.

Есть еще такой вопрос:
Как мне отобразить таблицу в DataGridView?
PM MAIL   Вверх
thomas
Дата 1.10.2007, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

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



alxxx

DataGridView.DataSource = MyDataSet
DataGridView.DataMember = "myTableName"



--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
alxxx
Дата 1.10.2007, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Так, отлично, с DataGridView разобрался. 
Осталась сделать последнюю фичу. 
Нужно последовательно просматривать записи таблицы, выводя их в текстбоксы
Как это лучше сделать?  Использовать bindingNavigator? Если да, то как его использовать?


Это сообщение отредактировал(а) alxxx - 1.10.2007, 23:07
PM MAIL   Вверх
Smorodin
Дата 2.10.2007, 07:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрейший
**


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

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



У меня такой вопрос: как узнать количество строк, которые бернул Ацесс по запросу?
код:
Код

 string connectionString = "provider=Microsoft.JET.OLEDB.4.0;" + "data source = c:\\db.mdb";
            string commandString = "SELECT ...............";
            OleDbDataAdapter DataAdapter = new OleDbDataAdapter(commandString, connectionString);

            DataSet DataSet = new DataSet();

            DataAdapter.Fill(DataSet, "pars");

            DataTable dataTable = DataSet.Tables[0];

            int i = 0;


            foreach (DataRow dataRow in dataTable.Rows)
            {
            }

Узнать количество строк нужно до вызова foreach


--------------------
Сделать можно все, только вопрос - когда?
PM MAIL Skype   Вверх
alxxx
Дата 2.10.2007, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Smorodin @  2.10.2007,  07:40 Найти цитируемый пост)
как узнать количество строк, которые бернул Ацесс по запросу?

Может это глупо, и профессионалы так не делают, но я тупо посчитал в цикле foreach.
PM MAIL   Вверх
Mr_Smith
Дата 2.10.2007, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(alxxx @  2.10.2007,  15:05 Найти цитируемый пост)
Может это глупо, и профессионалы так не делают, но я тупо посчитал в цикле foreach. 

профессионалы юзают 
dataTable.Rows.Count  )))

еще можно так:

int table_count = myDataAdapter.Fill(MyDataSet) //когда несколько таблиц заполняешь за раз

int rows_count = myDataAdapter.Fill(MyDataSet,"mytable1") //когда конкретную

int rows_count = command.ExecuteNonQuery();


Это сообщение отредактировал(а) Mr_Smith - 2.10.2007, 16:56
PM MAIL ICQ   Вверх
alxxx
Дата 2.10.2007, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Подскажите еще пожалуйста, как извлечь данные из  dataTable. То есть мне надо из конкретной строки взять конкретное поле чтобы использовать данные из  него.
PM MAIL   Вверх
Smorodin
Дата 3.10.2007, 03:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрейший
**


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

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



Код

            string connectionString = "provider=Microsoft.JET.OLEDB.4.0;" + "data source = c:\\db.mdb";
            string commandString = "SELECT ...............";
            OleDbDataAdapter DataAdapter = new OleDbDataAdapter(commandString, connectionString);

            DataSet DataSet = new DataSet();

            DataAdapter.Fill(DataSet, "pars");

            DataTable dataTable = DataSet.Tables[0];

            int i = 0;


            foreach (DataRow dataRow in dataTable.Rows)
            {
                      textBox1.Text = dataRow["column_name"].ToString();
            }


alxxx, это?


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

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

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

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


 




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


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

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