Страницы

Поиск по вопросам

воскресенье, 15 марта 2020 г.

C#. Как программе подключиться к БД access, если у пользователя microsoft access не установлен?

#c_sharp #база_данных #access


База данных в access, .mdb (97-2003г)
При подключении к базе данных использую следующую конструкцию

public OleDbConnection con1 = new OleDbConnection();
public OleDbCommand cmd1 = new OleDbCommand();
public void loadDb()
    {   
        con1.ConnectionString = Data.connectionString;
        cmd1.Connection = con1;
    }


где

Data.connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\db.mdb";


Проверяю, есть ли подключение таким способом:

    public bool checkCon(OleDbConnection con)
    {
        try
        {
            con.Open();
            con.Close();
            return true;
        }
        catch
        {
            return false;
        }
    }


На моем пк подключение работает исправно. У преподавателя пишет, что не может цепануться
к бд. (Но у него Access есть на компьютере, однако отсутствует visual)
У знакомых некоторых цепляется (у них тоже установлен acess, visual studio)
У других подключение не создается. (нет access"a, нет visual studio)

Собственно, как быть?
Быть может ConnectionString изменить? Использовать более старые драйвера или как.
    


Ответы

Ответ 1



Вроде как сам разрешил проблему, корявенько конечно, ну как умею %) Для начала воспользовался информацией про connectionString https://www.connectionstrings.com/access/ Затем, Data.connectionString у меня формируется таким способом: StreamReader s = File.OpenText(Application.StartupPath + "\\path.txt"); Data.connectionString = s.ReadLine(); s.Close(); Data.connectionString = Data.connectionString + Application.StartupPath + "\\db.mdb"; Где path.txt содержит одну строку: Provider=Microsoft.Jet.OLEDB.4.0;Data Source=

Ответ 2



Так у Вас в решении ответ на Ваш вопрос. Если Вы в первом случае измените "Provider=Microsoft.ACE.OLEDB.12.0" на "Provider=Microsoft.Jet.OLEDB.4.0" все должно работать. В первом случае вы указываете что у Вас Access 2012 (по-моему, если не ошибаюсь), а во-втором (Jet.OLEDB.4.0) Вы указываете на Access 97-2003. Начиная с Access 2007 там большие изменения произошли.... Я боюсь напутать в версиях, но Microsoft.ACE.OLEDB.12.0 ставится, по-моему, с Net.Framework 4.5..., а Microsoft.Jet.OLEDB.4.0 стоит даже на ХР.

Комментариев нет:

Отправить комментарий