Ambayi Abhijith Namboodiri Ответов: 3

получаю сообщение Системы об ошибке.Данных.OleDb.OleDbException (0x80004005): недопустимое имя файла.


Я очень новичок в программировании на C#. Использование .NET Framework 4.5,32-разрядной и 64-разрядной ОС Microsoft Access 2010. Мне нужна помощь.
Я получаю ошибку при написании кода C# для подключения к access.Пожалуйста,помогите, спасибо.
ошибка заключается в следующем:-
Система.Данные.OleDb.OleDbException (0x80004005): недопустимое имя файла.


а мой код таков:-

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        private OleDbConnection obj = new OleDbConnection();
        public Form1()
        {
            InitializeComponent();
            obj.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=‪C:\Users\ABHIJITH\Documents\prelims.accdb;Persist Security Info=False;";
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                obj.Open();
                MessageBox.Show("CONNECTION SUCCESSFULL");
                OleDbCommand com = new OleDbCommand();
                com.Connection = obj;
                string query = "select * from test";
                com.CommandText = query;
                OleDbDataReader read = com.ExecuteReader();
                while(read.Read())
                {
                    label1.Text = read["question"].ToString();
                }
                obj.Close();
            }
            catch(Exception ex)
            { MessageBox.Show("Error\n " + ex); }
        }
    }
}



Пожалуйста, помогите кому-нибудь, почему он не подключается. Спасибо

Kornfeld Eliyahu Peter

Досье 'C:\Users\ABHIJITH\Documents\prelims.accdb-а разве есть? Это файл доступа?

3 Ответов

Рейтинг:
2

Dave Kreskowiak

В дополнение к ответу OG, поскольку вы используете 32-разрядный доступ, вам также нужно скомпилировать свой проект только как 32-разрядный. Перейдите в свойства проекта, перейдите на вкладку сборка и измените целевую платформу на x86.


Kornfeld Eliyahu Peter

Я думаю, что достаточно установить 32-битный драйвер на 64-битную ОС...

Dave Kreskowiak

Не совсем. Если его проект скомпилирован AnyCPU и работает на 64-битной машине, он не может использовать 32-битный драйвер ACE, так как его код будет работать на 64-битной машине. Если он еще не установлен, ему нужно будет установить 64-битный ACE или скомпилировать свой проект до 32-битного.

Но я слышал о проблемах с запуском 64-битного драйвера в системах, где установлен 32-битный Office. Вот почему рекомендуется вместо этого принудительно установить приложение на 32-разрядную версию.

Ambayi Abhijith Namboodiri

теперь я перешел на ms access 64 bit..
но все равно происходит ошибка...
об ошибке выглядит следующим образом:-
system.invalidoperationexception: поставщик "microsoft.ace.oledb.12.0" не зарегистрирован на локальном компьютере

Dave Kreskowiak

Обычно вы получаете это, потому что у вас не установлен 64-битный движок ACE.

Вот почему я сказал, что лучше изменить целевую платформу вашего приложения на x86.

Ambayi Abhijith Namboodiri

Я установил 64 битный движок ACE также по этой ссылке:-
https://www.microsoft.com/en-in/download/details.aspx?id=13255
Но и получать тот же результат:-
system.invalidoperationexception: поставщик "microsoft.ace.oledb.12.0" не зарегистрирован на локальном компьютере
Спасибо..

Dave Kreskowiak

Я повторяю: "ut, я слышал о проблемах с запуском 64-битного драйвера в системах, где установлен 32-битный Office. Вот почему рекомендуется вместо этого принудительно установить приложение на 32-разрядную версию."

Рейтинг:
1

OriginalGriff

Посмотрите на сообщение об ошибке: "неверное имя файла" - это довольно ясно, на самом деле.

Поэтому посмотрите на строку подключения и путь к файлу:

Source=‪C:\Users\ABHIJITH\Documents\prelims.accdb
Затем посмотрите на свой жесткий диск и проверьте, существует ли файл в этом месте...


Ambayi Abhijith Namboodiri

да, он находится в правильном месте. я скопировал адрес из свойств(вкладка безопасность) базы данных

Ambayi Abhijith Namboodiri

Сэр, пожалуйста, помогите...
та же ошибка повторяется, когда я устанавливаю 64-битный access и database Engine....

Рейтинг:
0

Member 13744849

Привет. Сегодня у меня была та же проблема. Я думаю, что имя файла (имя вашей БД), скорее всего, зарезервировано или ключевое слово. Измените имя файла на что - то другое, например на свое имя, фамилию или составное имя. Тогда попробуйте еще раз. Вот как я решил свой сегодняшний вызов.

Дай мне знать, если это сработает. Спасибо.


CHill60

Я серьезно сомневаюсь, что ОП все еще пытается решить эту проблему через 3 года!