Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.99/119: Рейтинг темы: голосов - 119, средняя оценка - 4.99
7 / 7 / 1
Регистрация: 29.05.2011
Сообщений: 45

Подключение к БД-access через ADO.

18.06.2011, 12:24. Показов 24094. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, у меня есть БД в виде access файла, как мне в С# сделать к нему подключение через ADO?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.06.2011, 12:24
Ответы с готовыми решениями:

Подключение к базе данных MS Access через ADO
Добрый вечер! У меня следующий вопрос - почему, когда пытаюсь подключиться к БД через ADO появляется следующая ошибка, указанная в...

Подключение Access через ADO Conection
Здравствуйте подскажите как подключить базу данных microsoft office access через ADO Conection.По шагам если можно.

Подключение к базе MS Access 2003 из кода через ADO
Люди, разъясните, pls, начинающему, как же все-таки подключиться к базе данных MS Access из кода через ADO Adodc1.ConnectionString =...

11
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
18.06.2011, 13:07
C#
1
2
3
4
5
6
public static string catBD = "путь\\BD.mdb";
        public static string conBD = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + catBD + ";Jet OLEDB:Database Password=\"тут пароль\"";
 
        static void Main(string[] args)
        {
        OleDbConnection connection = new OleDbConnection(conBD);
Вот так
2
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
18.06.2011, 13:55
Если БД Access 2007, то строка подключения:
C#
1
2
3
4
5
6
7
8
9
10
11
    public partial class MainWindow : Window
    {
        String database = @"Путь/Database.accbd";
        String connectionString;
 
        public MainWindow()
        {
              connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + database + ";Persist Security Info=True";
        }
        //.........................
        //.........................
Создать таблицу:
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
        //.........................
        //.........................
        private void CreateTable()
        {
            OleDbConnection connection = null;
            OleDbCommand command1 = null;
            OleDbCommand command2 = null;
            try
            {
                connection = new OleDbConnection(connectionString);
                connection.Open();
 
                command1 = new OleDbCommand("CREATE TABLE ProgramStart(Id AUTOINCREMENT, FirstStart DATETIME NOT NULL, LastStart DATETIME  NOT NULL)", connection);
                command2 = new OleDbCommand("CREATE INDEX PrimaryKey ON ProgramStart(Id) WITH PRIMARY", connection);
 
                command1.ExecuteNonQuery();
                command2.ExecuteNonQuery();
            }
            catch (Exception exc)
            {
                MessageBox.Show(this, exc.Message, "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
            }
            finally
            {
                connection.Close();
                connection.Dispose();
                if (command1 != null)
                    command1.Dispose();
                if (command2 != null)
                    command2.Dispose();
            }
        }
        //.........................
1
7 / 7 / 1
Регистрация: 29.05.2011
Сообщений: 45
18.06.2011, 13:59  [ТС]
А чем Access 2007 так специфичен? Я ещё хочу данные отображать в DataGrid и мне же в DataSourse этого объекта нужно указать источник данных, который нужно отобразить в этом объекте, и раньше там указывали ADODC1 к примеру, а сейчас мне там писать conBD?
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
18.06.2011, 14:03
Цитата Сообщение от goodwen053 Посмотреть сообщение
А чем Access 2007 так специфичен?
Не знаю. У меня просто установлен 2007, я в нём создал базу и добавил в ресурсы WPF приложения, далее при первом старте проги копирую из ресурсов БД. Просто мало ли у кого-то будет 2007 также, вот ему и ответ выше.
0
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
18.06.2011, 14:19
Через conBD полюбому! Вот полный пример, но он не выводит в DataGrid:
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
54
55
56
57
58
59
60
61
62
63
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using System.IO;
using System.Data;
 
namespace ConsoleApplication5
{
    class Program
    {
 
        public static string catBD = Application.StartupPath + "\\NewMDB.mdb";
        public static string conBD = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + catBD + ";Jet OLEDB:Database Password=\"\"";
 
        static void CreateOleDbCommand(string query1, string conBD)
        {
            using (OleDbConnection connection = new OleDbConnection(conBD))
            {
                OleDbCommand cmd1 = new OleDbCommand(query1,connection);
                cmd1.Connection.Open();
                cmd1.ExecuteNonQuery();
                cmd1.Connection.Close();
            }
        }
 
        static void Main(string[] args)
        {
        //------------------------Вносим запись в таблицу----------------------------
            // Строка SQL - запроса
            string query1 = "INSERT INTO Table1 (Column1,Column2) VALUES (1,\"Record1\")";
            // Выполняем метод
            CreateOleDbCommand(query1, conBD);
 
            //------------------------Выводим записи из таблицу----------------------------
            string query3 = "SELECT Column1, Column2, Column3 FROM Table1 WHERE Column2 = 'Hel'";
 
            OleDbConnection myOleDbConnection2 = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + catBD + ";Jet OLEDB:Database Password=\"\"");
            // создаем объект OleDbCommand
            OleDbCommand myOleDbCommand = myOleDbConnection2.CreateCommand();
            // Результатом запроса должны быть данные
            myOleDbCommand.CommandText = (query3);
            // открываем соединение
            myOleDbConnection2.Open();
            // создаем объект OleDbDataReader и вызываем метод ExecuteReader() для выполнения введенного SQL-запроса
            OleDbDataReader myOleDbDataReader = myOleDbCommand.ExecuteReader();
            // запускаем OleDbDataReader методом Read()
            myOleDbDataReader.Read();
             // отображаем результат запроса
            Console.WriteLine("myOleDbDataReader[\"Column1\"] = " + myOleDbDataReader["Column1"]);
            Console.WriteLine("myOleDbDataReader[\"Column2\"] = " + myOleDbDataReader["Column2"]);
            Console.WriteLine("myOleDbDataReader[\"Column3\"] = " + myOleDbDataReader["Column3"]);
            Console.ReadKey();
            // закрываем OleDbDataReader методом Close()
            myOleDbDataReader.Close();
            // закрываем соединение с БД
            myOleDbConnection2.Close();
 
        }
    }
}
Тут через консоль выводит, но смысл подключения понятен
И не забудь ADO библиотеку подключить!
0
7 / 7 / 1
Регистрация: 29.05.2011
Сообщений: 45
18.06.2011, 23:21  [ТС]
У меня не получается в DataGrid отображать данные, не пойму как в DataSourse нужно прописать, в свойствах там вручную не пропишешь, там только создавать подключение, а в коде так и не понял, как это прописывается? У меня ещё вопрос, вот грубо говоря есть приложение, написанное на С# подключённое к БД, и я хочу перенести на другой компьютер, где нету Visual Studio, нужно ли прикреплять какую либо определ1нную библиотеку для ADO, чтобы она работала, или Компилятор сам вставляет всё необходимое в исполняемый файл?
0
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
18.06.2011, 23:25
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
DataSet ds = new DataSet();
string sql = "SELECT * FROM FOO";
try
{
using (SQLiteConnection conn = new SQLiteConnection(connstr))
{
using (SQLiteDataAdapter da = new SQLiteDataAdapter(sql, conn))
{
da.Fill(ds);
dataGridView1.DataSource = ds.Tables[0].DefaultView;
}
}
}
catch (Exception err)
{
}
}
Это говорят работает! Смотри если что сюда: sqlite и datagridview
1
7 / 7 / 1
Регистрация: 29.05.2011
Сообщений: 45
19.06.2011, 00:26  [ТС]
Я пишу вот такой код:

C#
1
2
3
4
5
6
7
8
9
10
11
public static string catBD = Application.StartupPath + "\\database.mdb";
        public static string conBD = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + catBD + ";Jet OLEDB:Database Password=\"1234\"";
 
        private void Form1_Load(object sender, EventArgs e)
        {
            OleDbConnection con = new OleDbConnection(conBD);
            con.Open();
            string zp = "SELECT * FROM albom";
            OleDbCommand vb = new OleDbCommand(zp, con);
            dataGridView1.DataSource = zp;
        }
Выдаёт вот такую ошибку:
"Ошибка 1 "database.Form1" не содержит определения для "dataGridView1_CellContentClick" и не был найден метод расширения "dataGridView1_CellContentClick", принимающий тип "database.Form1" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку) C:\Users\Сергей\Documents\Visual Studio 2010\Projects\database\database\Form1.De signer.cs 42 111 database"

В чём может быть дело?
0
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
19.06.2011, 00:41
Ну во всяком случае в этом куске нету ошибки!
А походу ошибка у тебя из-за не определенного метода (логично ). У тебя есть какой - нибудь метод с названием dataGridView1_CellContentClick?
0
7 / 7 / 1
Регистрация: 29.05.2011
Сообщений: 45
19.06.2011, 11:47  [ТС]
Нет нету, я даже не подозревал, что он нужен, я же это пишу в Form1_Load, по идее при загрузке формы должно происходить подключение, а что писать внутри dataGridView1_CellContentClick?
0
29 / 58 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
19.06.2011, 13:33
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public static string catBD = Application.StartupPath + "\\database.mdb";
        public static string conBD = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + catBD + ";Jet OLEDB:Database Password=\"1234\"";
 private void Form1_Load(object sender, EventArgs e)
        {
DataSet ds = new DataSet();
string sql = "SELECT * FROM albom";
try
{
using (SQLiteConnection con = new SQLiteConnection(conBD))
{
using (SQLiteDataAdapter da = new SQLiteDataAdapter(sql, con))
{
da.Fill(ds);
dataGridView1.DataSource = ds.Tables[0].DefaultView;
}
}
}
catch (Exception err)
{
}
}
}
Попробуй так!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.06.2011, 13:33
Помогаю со студенческими работами здесь

Что лучше: работа с Access через ADO.NET или силами самого Access?
Считаю, что лучше работать с регулярно поступающим в Access объемом данных, разработав приложение Windows Forms C# и управляя процессом...

Проблема с подключение БД Access средствами ADO
Подскажите в чем дело. Не получается никак открыть recordset. Постоянно вылезает ошибка: "ядро базы данных Microsoft Jet не может...

Подключение через ADO
Когда то уже создавал такую тему, решения проблемы не нашел и по сей день. Как подключить БД в Builder`e. Через ADO пытался, результат...

Открытое подключение к БД через ADO
Имеется проект из множества форм, каждая из которых формирует запрос к базе данных. Каким образом создать открытое подключение к БД...

Подключение Excel файла через ADO
Подключаю файл через АДО. Файлы могут быть разные, структура тоже. Так вот, когда я выгружаю данные в DBGrid, поля, содержащие спецсимволы...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru