Задача: написать программу с локальной БД. Важно то, чтобы программа была полностью переносима с одной машины на другую. Никаких дополнительных серверов для поддержки БД на рабочую машину не должно быть установлено. При решении этой задачи я выбрал 3 варианта и в каждой возникли проблемы.
Работаю на MS Visual C# 2008 Express Edition. И так:
1) Sql server CE — здесь пошел на компромис, потому что надо будет установить сервер sql CE.
Проблема: при портировании программа не находит файл с БД. Приходится на отдельно взятой машине пересобирать программу.
Вопрос: как зарегестрировать в программе БД, чтобы независимо от того, где запускается программа, она находила бы файл БД в корневой папке программы?
2) SQLite
Проблема: в данном решении, при добавлении источника данных в программу (add new data source), после выбора провайдера SQLite Database File, выходит окно в котором надо пропистаь ConnectionString. Но что бы туда не было бы написано, программа всегда выдает ошибку: "Could not load file or assembly 'Microsoft.VisualStudio.Data, Version=8.0.0.0, Culture=neutral, PublicLeyToken=//тут 16й код//' or one of its dependencies. The located assembly's manifest defenition does not match the assembly reference. (Exception from HRESULT: 0x80131040)". При проверки соединения (Test Connection) все проходит успешно.
Вопрос: Как решить эту задачу, что я сделал не так?!
3) FireBird — сам север установил. Работает так, как надо. НО
Проблема: при установки провайдера IBProvider (и профессиональну версию и free версию), он не отображается при добавлении источника данных в программу (add new data source). При выборе провайдеров, он банально отсуствует в списке.
Вопрос: что надо сделать чтобы установить IBProvider правильно, или посоветуйте другой провайдер для FireBird под C#. В общем надо связать БД FireBird с программой.
ЗЫ возможно, мои вопросы просты и глупы, но начал работать под C# недавно. Если будете посылать меня читать маны и гайды, то будьте добры, давайте конкретные ссылки. Спасибо!
Здравствуйте, Аноним, Вы писали:
А>Задача: написать программу с локальной БД. Важно то, чтобы программа была полностью переносима с одной машины на другую. Никаких дополнительных серверов для поддержки БД на рабочую машину не должно быть установлено. При решении этой задачи я выбрал 3 варианта и в каждой возникли проблемы.
А>Работаю на MS Visual C# 2008 Express Edition. И так:
А>1) Sql server CE — здесь пошел на компромис, потому что надо будет установить сервер sql CE. А> Проблема: при портировании программа не находит файл с БД. Приходится на отдельно взятой машине пересобирать программу. А> Вопрос: как зарегестрировать в программе БД, чтобы независимо от того, где запускается программа, она находила бы файл БД в корневой папке программы?
SqlCe ставить не надо. Это две дллки, таскаемые с программой. Проблема с путём — это проблема с CurrentDirectory, а не с Sql Ce.
А>1) Sql server CE — здесь пошел на компромис, потому что надо будет установить сервер sql CE. А> Проблема: при портировании программа не находит файл с БД. Приходится на отдельно взятой машине пересобирать программу. А> Вопрос: как зарегестрировать в программе БД, чтобы независимо от того, где запускается программа, она находила бы файл БД в корневой папке программы?
В каком смысле не находит файл? Реализуйте хранение базы например в папке Documents and Settings\All Users\Application Data\{program_name}.
Здравствуйте, <Аноним>, Вы писали:
А>Задача: написать программу с локальной БД. Важно то, чтобы программа была полностью переносима с одной машины на другую. Никаких дополнительных серверов для поддержки БД на рабочую машину не должно быть установлено. При решении этой задачи я выбрал 3 варианта и в каждой возникли проблемы.
А>Работаю на MS Visual C# 2008 Express Edition. И так:
А>3) FireBird — сам север установил. Работает так, как надо. НО А> Проблема: при установки провайдера IBProvider (и профессиональну версию и free версию), он не отображается при добавлении источника данных в программу (add new data source). При выборе провайдеров, он банально отсуствует в списке. А> Вопрос: что надо сделать чтобы установить IBProvider правильно, или посоветуйте другой провайдер для FireBird под C#. В общем надо связать БД FireBird с программой.
Использую стандартный склиент для .NET Provider. Смотреть тут
Подключается библиотека FirebirdSql.Data.FirebirdClient.
Там все толклворазобрано на примерах. Вот только я не пробовал как Embeded вариант пользовать. Как утверждают гуру (для Builder'а) надо просто положить DLL -ку в папку с программой и все нормально работает без доп. установок.
Попробуещь — отпишись (оч. хотел бы узнать для общего развития)
Здравствуйте, Аноним, Вы писали:
А>при добавлении источника данных в программу (add new data source)
Какое окно? Какой connection string? Какой "new data source"?
Здравствуйте, Аноним, Вы писали:
А>Задача: написать программу с локальной БД. Важно то, чтобы программа была полностью переносима с одной машины на другую. Никаких дополнительных серверов для поддержки БД на рабочую машину не должно быть установлено. При решении этой задачи я выбрал 3 варианта и в каждой возникли проблемы.
[Skip]
А>ЗЫ возможно, мои вопросы просты и глупы, но начал работать под C# недавно. Если будете посылать меня читать маны и гайды, то будьте добры, давайте конкретные ссылки. Спасибо!
Попробуйте также MS Access. Если стоит ADO больше ничего на машину ставить не надо. База данных сидит в одном файле.
Здравствуйте, Аноним, Вы писали:
А>Задача: написать программу с локальной БД. Важно то, чтобы программа была полностью переносима с одной машины на другую. Никаких дополнительных серверов для поддержки БД на рабочую машину не должно быть установлено. При решении этой задачи я выбрал 3 варианта и в каждой возникли проблемы.
А мы вот тоже нечто похожее делаем: C# приложение с локальной БД, используем в качестве БД MS Access. Для этого случая как раз то что нужно и
не требует инсталяции дополнительных библиотек для работы с БД (даже офиса не надо ставить) — дотНет уже содержит OleDbProvider который поддерживает Access. Правда есть пара но: неизвестно как этот акцесс будет себя вести с большими наборами данных (у нас каких-то супер огромных таблиц не намечается так что это проигнорировали) и неприспособленность этого самого акцесса к многопользовательской работе (ну и тут повезло — с создаваемой софтиной должен работать только один человек)
Так что советую обратить внимание
Re: C# и встраиваемые БД
От:
Аноним
Дата:
13.08.09 15:49
Оценка:
Здравствуйте, Аноним, Вы писали:
А>3) FireBird — сам север установил. Работает так, как надо. НО А> Проблема: при установки провайдера IBProvider (и профессиональну версию и free версию), он не отображается при добавлении источника данных в программу (add new data source). При выборе провайдеров, он банально отсуствует в списке. А> Вопрос: что надо сделать чтобы установить IBProvider правильно, или посоветуйте другой провайдер для FireBird под C#. В общем надо связать БД FireBird с программой.
Доброе ...
Как вам тут уже подсказали — всё вам необходимое лежит тут (сам клиент и интеграция со студией).
Embedded dll взять тут (т.е. для встраиваемого решения сервер ставить необязательно).
Следующие dll необходимо подложить к вашему модулю, который будет использовать FirebirdSql.Data.FirebirdClient:
fbembed.dll
icudt30.dll
icuin30.dll
icuuc30.dll
Если будете делать интеграцию со студией (DDEX Provider for Visual Studio) — эти же либы нужно будет забросить в windows\system32 — в остальном процесс инсталяции написан подробно. Когда будете деплоить на клиента — тащите эти либы со своим приложением.