Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/50: Рейтинг темы: голосов - 50, средняя оценка - 4.88
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315

Импорт данных из C# в Access 2007

24.07.2010, 15:03. Показов 10109. Ответов 52
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ помогите плз, уже голова не работает, запутался ппц, в общем, есть прога на C# (пока просто интерфейсик с обработкой пары ошибок) в ней куча всяких полей, например есть поля: имя, фамиилия, отчество,нужно следующее:
пишем ФИО в проге, нажимаем добавить и она должна добавиться в Акцесовскую БД, это нужно сделать с помощью ODBC API, сколько не искал, не нашел инфы для чайников на эти темы, запутался ппц, даже почитать негде, напишите плиз как должен выглядеть код для такой операции, и если не трудно то плз дайте ссылочки на книги или статьи посвященные этому, чтобы было написано на Понятном уровне, без особого применения заумных терминов и т.д, обычный читабельный текст с примерами ,скринами и т.д
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.07.2010, 15:03
Ответы с готовыми решениями:

Импорт данных в access 2007 из Excel через макрос
Доброе утро. нужно сделать импорт данных из Excel в access. сделал вот это: Dim FName As String Dim result As Integer With...

импорт в существующею БД Access, M.Office 2007
Доброе времени суток, появилось необходимость импортировать данные с Exсel в существующею БД Access! импортировал все это в 2007 Офисе,...

Импорт донных в access 2007 из HTML через макрос VBA
Доброе утро. У меня есть импорт данных из exsel, а мне нужен из файла html: FName = "F:\SC\Bykovo...

52
 Аватар для kirill29
2098 / 1263 / 173
Регистрация: 01.02.2009
Сообщений: 2,842
24.07.2010, 15:06
Вот тебе пример добавления записи в access с помощью odbc:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.Odbc;
 
namespace kr
{
    public partial class AddQstDialog : Form
    {
        OdbcConnection m_Connection;
 
        public AddQstDialog(OdbcConnection Connection)
        {
            InitializeComponent();
            m_Connection = Connection;
        }
        //Обрабатываем нажатие кнопки btAdd
        private void btAdd_Click(object sender, EventArgs e)
        {
 
            if (!string.IsNullOrEmpty(tbQst.Text))
            {
                if (MessageBox.Show("Вы хотите добавить\nэтот вопрос?", "Добавить вопрос?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    //Отправляем БД sql запрос на добавление
                    using (OdbcCommand command = new OdbcCommand("insert into questions (question) values(\'" + tbQst.Text + "\');", m_Connection))
                    {
                        try
                        {
                            if (command.ExecuteNonQuery() > 0)
                            {
                                MessageBox.Show("Вопрос добавлен успешно", "Добавление", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                tbQst.Text = "";
                            }
                        }
                        catch (OdbcException error)
                        {
                            MessageBox.Show(error.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }
                }
            }
            else
                MessageBox.Show("Необходимо ввести текст вопроса", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
}
Вам нужно в access создать вашу базу, после в коде создать подключение к вашей базе и использовать пример, который выше (естественно, не с помощью CopyPaste). Код подключения:
C#
1
2
OdbcConnection Connection new OdbcConnection("Driver={Microsoft Access Driver (*.mdb)}; READONLY=FALSE; DBQ=" + путь к вашей базе);
Connection.Open();
1
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
24.07.2010, 15:33  [ТС]
А Литература есть по этому поводу? а то хочется разобраться хорошенько. И еще, мы же сначало открываем конекшн да? его закрывать надо???И это, в аксесе 2007 расширение accbd, в место мдб просто заменить или не нужно заменять?
0
 Аватар для kirill29
2098 / 1263 / 173
Регистрация: 01.02.2009
Сообщений: 2,842
24.07.2010, 15:38
Цитата Сообщение от 23Alex24 Посмотреть сообщение
А Литература есть по этому поводу? а то хочется разобраться хорошенько
Конкретно по поводу работы с ODBC не встречал, но посоветую вот эту книгу: Программирование на ADO.NET
1
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
24.07.2010, 15:48  [ТС]
tbQst это типа текст бокса да в который вводим текст, который хотим добавить в таблицу или как? и как прописать чтобы мы выбирали как бы из какого текстового поля программы в какую таблицу и колонку БД акцесс добавлять эту инфу?

Добавлено через 6 минут
OdbcConnection Connection=new OdbcConnection("Driver={Microsoft Access Driver (*.mdb)}; READONLY=FALSE; DBQ=" + "D:\\Alex\SDCalc.accbd"); здесь ругается на букву S в сдкалке: Unrecognized escape sequence
0
 Аватар для kirill29
2098 / 1263 / 173
Регистрация: 01.02.2009
Сообщений: 2,842
24.07.2010, 15:49
Да, tbQst - это текстбокс, в котором написан вопрос. Вот его мы и передаем в качестве значения на добавление в базу.
Почитайте про стандартные sql-команды: INSERT INTO - добавление, SELECT - выборка и т.д.
1
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
24.07.2010, 15:50  [ТС]
Ага, спасибо, а в конекшине почему ругается ? и главно запускаю кнопку не видно, это из-за этого?
0
 Аватар для kirill29
2098 / 1263 / 173
Регистрация: 01.02.2009
Сообщений: 2,842
24.07.2010, 15:51
D:\\Alex\SDCalc.accbd - Путь написан не правильно. Пропущен одна косая черта.
Вот: D:\\Alex\\SDCalc.accbd
+
При подключении используется Microsoft Access Driver (*.mdb). Рекомендую создать в access базу с таким же расширением.
1
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
24.07.2010, 16:22  [ТС]
Спасибо огромнейшее,если можете на драйвера одбц ссылочку дайте плз
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
28.07.2010, 10:11  [ТС]
Вот значит получился вот такой код:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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 SDCalc
{
    public partial class Form1 : Form
    {
        OdbcConnection m_Connection;
        public Form1()
        {
            InitializeComponent();
            m_Connection = Connection;
        }
        private void button4_Click(object sender, EventArgs e)
        {
            OdbcConnection Connection=new OdbcConnection("Driver={Microsoft Access Driver (*.mdb)}; READONLY=FALSE; DBQ=" + "D:\\Alex\\SDCalc.accdb");
            Connection.Open();
 
           
            if (!string.IsNullOrEmpty(textBox3.Text))
            {
                if (MessageBox.Show("Вы хотите добавить\nэтот вопрос?", "Добавить вопрос?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    //Отправляем БД sql запрос на добавление
                    using (OdbcCommand command = new OdbcCommand("insert into questions (question) values(\'" + textBox3.Text + "\');", m_Connection))
                    {
                        try
                        {
                            if (command.ExecuteNonQuery() > 0)
                            {
                                MessageBox.Show("Вопрос добавлен успешно", "Добавление", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                textBox3.Text = "";
                            }
                        }
                        catch (OdbcException error)
                        {
                            MessageBox.Show(error.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }
                }
            }
            else
                MessageBox.Show("Необходимо ввести текст вопроса", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        }
    }

Выдает такую ошибку при запуске: Error The type or namespace name 'OdbcConnection' could not be found (are you missing a using directive or an assembly reference?)

и кнопку батон 4 не видно в ехешнике.
В чем проблема и где именно нужно будет вставлять запросы на sql?
0
 Аватар для kirill29
2098 / 1263 / 173
Регистрация: 01.02.2009
Сообщений: 2,842
28.07.2010, 10:24
Естественно, будет ошибка. Вы используете
C#
1
OdbcConnection Connection
,
а пространство имен при этом подключено
C#
1
using System.Data.OleDb;
Необходимо подключить
C#
1
using System.Data.Odbc;
Добавлено через 2 минуты
Немного поправил код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
        public Form1()
        {
            InitializeComponent();
        }
        private void button4_Click(object sender, EventArgs e)
        {
            OdbcConnection Connection=new OdbcConnection("Driver={Microsoft Access Driver (*.mdb)}; READONLY=FALSE; DBQ=" + "D:\\Alex\\SDCalc.accdb");
            Connection.Open();
 
           
            if (!string.IsNullOrEmpty(textBox3.Text))
            {
                if (MessageBox.Show("Вы хотите добавить\nэтот вопрос?", "Добавить вопрос?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    //Отправляем БД sql запрос на добавление
                    using (OdbcCommand command = new OdbcCommand("insert into questions (question) values(\'" + textBox3.Text + "\');", Connection))
                    {
                        try
                        {
                            if (command.ExecuteNonQuery() > 0)
                            {
                                MessageBox.Show("Вопрос добавлен успешно", "Добавление", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                textBox3.Text = "";
                            }
                        }
                        catch (OdbcException error)
                        {
                            MessageBox.Show(error.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }
                }
            }
            else
                MessageBox.Show("Необходимо ввести текст вопроса", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        }
1
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
28.07.2010, 10:30  [ТС]
Во, теперь ошибок нет, а подскажите плиз куда вставлять запросы sql-ные?
0
 Аватар для kirill29
2098 / 1263 / 173
Регистрация: 01.02.2009
Сообщений: 2,842
28.07.2010, 10:36
SQL запросы используются с помощью OdbcCommand:
C#
1
OdbcCommand command = new OdbcCommand("insert into questions (question) values(\'" + textBox3.Text + "\');", Connection)
где: "insert into questions (question) values(\'" + textBox3.Text + "\');" - сам запрос;
Connection - соединение с базой, которой отправляем запрос.
1
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
28.07.2010, 10:45  [ТС]
Огромнейшее спасибо, попробую поработать с запросами )
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
01.08.2010, 12:41  [ТС]
Получилось добавить запись, теперь подскажите плиз, чтобы несколько команд делать мне каждый раз надо через этот юзинг делать и проверять все ?

Добавлено через 3 минуты
И еще вопросик, почему тестбокс.текст нужно в плюсы заключать? если убирать ошибки вылазяют, а вот почему?)
0
 Аватар для FireOwl
62 / 44 / 14
Регистрация: 01.07.2009
Сообщений: 145
01.08.2010, 15:14
Потому что TextBox.Text - строка.
И "text" - строка.
А конкатенация строк осуществляется при помощи плюса.

C#
1
2
3
string str="Hello ";
str+="world";
Console.WriteLine(str+"!");
1
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
01.08.2010, 15:16  [ТС]
Ну то что строки складывать то это понятно, но дело то в том что в текстбокс.текст вся строка и больше с ней же ничего складывать не нужно)))Ааа, или просто нужно сложить с двойными кавычками да?)
0
 Аватар для Terion
271 / 203 / 13
Регистрация: 18.06.2010
Сообщений: 491
01.08.2010, 20:57
Цитата Сообщение от 23Alex24 Посмотреть сообщение
Ну то что строки складывать то это понятно, но дело то в том что в текстбокс.текст вся строка и больше с ней же ничего складывать не нужно)))Ааа, или просто нужно сложить с двойными кавычками да?)
нужно сложить с одинарной ковычкой, если речь идет об sql-запросе
1
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
01.08.2010, 20:59  [ТС]
Я разобрался с этим)) Даже если мы хотим вытащить число из текст бокса,то нужно сложить с кавычками двойными)

НО ВОТ ВОПРОС: для каждого запроса заного юзинг использовать или как то через будевские объединить?)
0
 Аватар для Terion
271 / 203 / 13
Регистрация: 18.06.2010
Сообщений: 491
01.08.2010, 21:12
Цитата Сообщение от 23Alex24 Посмотреть сообщение
НО ВОТ ВОПРОС: для каждого запроса заного юзинг использовать или как то через будевские объединить?)
я что-то вас не пронимаю)
напишите юзинг в самом верху, где все юзинги перечислены,и все)

юзинг - это директива. в данном случае подключаете пространство имен, в котором определены классы для осуществления подключения к БД.это как Include в с++.

совет: если у вас начинает красным что-то подчеркиваться и в ошибках написано, что нет такого пространства - нажмите мышью на подчеркнутое слово, в его конце появится такая сносочка, нажав на которую вам будет предложено "добавить юзинг" и еще что-то) так вот, просто добавляйте таким образом юзинги,они сами добавятся наверх

Цитата Сообщение от 23Alex24 Посмотреть сообщение
Я разобрался с этим)) Даже если мы хотим вытащить число из текст бокса,то нужно сложить с кавычками двойными)
sql-запрос - это некая строка. то есть "...".
вы можете написать:
"SELECT * FROM table1" или "SELECT * FROM table1 WHERE a='aaaa' "
если какое-то значение заведомо не прописано, вы добавляете его к этой строке. конкатенация и преобразование типов происходит автоматически через +.

но синтаксис sql-запроса необходимо соблюдать.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.08.2010, 21:12
Помогаю со студенческими работами здесь

Выгрузка данных из полей формы Access 2007 в Word 2007 шаблон dot 1997-2003 гг
Прошу помощи с примером из protokol10. Он завязан на генерацию doc-документа со вставкой содержимого из полей БД в doc-файл при помощи...

Импорт данных из Excel в Access - MS Access
Добрый день, очень нужна помощь. Поля в таблице access: Name - текстовый Surname - текстовый Father name - текстовый Birth...

Импорт данных из Access в Excel (вставка данных в лист)
Добрый день Уважаемые Гуру VBA. Выгружаю данные из Access в Excel, для анализа загружаю таблицы Access в разные листы Excel. ...

Импорт данных из одной базы данных Access в другую
Здравствуйте уважаемые господа Программисты. Столкнулся с проблемой. ответ на которую нигде не могу найти. Суть проблемы в...

Схема данных в MS Access 2007
Здравствуйте, помогите, пожалуйста со схемой данных. Чувствую, что неправильно сделала и вроде как есть избыточность данных. В данной БД...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru