Marc-IT Ответов: 2

C# миграция с SQL на базу данных access


Привет

У меня есть приложение winforms на c#, которое использует базу данных SQL.
Поскольку для запуска базы данных sql требуется SQLServer express, установленный на клиентской машине, я решил перейти на access.
Я создал базу данных и соответственно изменил строки подключения и источник данных.
Но я вам сейчас сообщение об ошибке :
An unhandled exception of type 'System.TypeInitializationException' occurred in app


подробности:
ключевое слово не поддерживается " провайдер"

Я не знаю, как я использовал sql, если мне нужно изменить еще какой-то код.
Вы знаете, что может быть не так?

Заранее спасибо

Что я уже пробовал:

моя связка такова:
public static SqlConnection con = new SqlConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\db.mdb;");

PIEBALDconsult

Это проще, если вы запрограммируете ADO.net интерфейсы, а не конкретные классы.
Я настоятельно советую не пользоваться доступом, но если вы используете его, используйте двигатель ACE, а не реактивный двигатель.
Рассматривали ли вы SQL Server CE?

2 Ответов

Рейтинг:
12

OriginalGriff

Когда вы переходите с SQL Server на Access, вам не просто нужно изменить строку подключения: Вам также нужно использовать OleDbConnection вместо SqlConnection, OleDbCommand вместо SqlCommand и так далее.
После этого, вообще говоря, большинство вещей будут работать без изменений, если вы не использовали ничего слишком экзотического - они довольно совместимы с точки зрения фактического SQL для их передачи.


Marc-IT

Что ж, в этом есть смысл.
Как же я этого не заметил :о
спасибо за помощь. нет, у меня есть еще одна связанная ошибка "поставщик" Microsoft.ACE.OLEDB.12.0 " не зарегистрирован на локальном компьютере."

OriginalGriff

Вы установили движок ACE DB engine? И установили ли вы правильную версию?
Если ваше приложение построено для 64-битной версии, то вам нужен 64-битный движок ACE. И вам нужно проверить, что вы установили версию 12.0, чтобы она соответствовала вашей строке подключения.
Но ваша оригинальная строка подключения ищет реактивный двигатель, который доступен только в 32 битах.

Рейтинг:
1

#realJSOP

Не мигрируйте назад. У доступа больше проблем, чем у Хиллари Клинтон с ФБР.

Все, что вам нужно сделать, это сделать SqlServer (в том или ином виде) обязательным условием использования вашего программного обеспечения. Ваш установщик может установить его для них.

Проверьте эту ссылку, которая сравнивает различные воплощения sql server:

Все компактные SQL-сервера: сравнение компактных SQL сервера, базы данных SQLite и SQL Server, Экспресс-выпуск и localdb[^]


Marc-IT

Поверьте, я пытался, но проблема в том, что у меня есть отчет ведьмы, работающей с crystal reports, и я не мог понять, как заставить их работать вместе

#realJSOP

Я бы сделал почти все, чтобы избежать использования доступа... и хрустальные отчеты. Crystal Reports будет подключаться к Sql Server (не знаю, волнует ли его, какой sql server).

Вы рассматривали MySql? Его синтаксис запросов очень похож на Sql Server, и я думаю, что он также поставляется в различных размерах - и это бесплатно.

kmoorevs

Для CR попробуйте использовать определения полей/ttx для вашего источника данных.