C# и встраиваемые БД
От: Аноним  
Дата: 11.08.09 12:26
Оценка:
Задача: написать программу с локальной БД. Важно то, чтобы программа была полностью переносима с одной машины на другую. Никаких дополнительных серверов для поддержки БД на рабочую машину не должно быть установлено. При решении этой задачи я выбрал 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# недавно. Если будете посылать меня читать маны и гайды, то будьте добры, давайте конкретные ссылки. Спасибо!
c# firebird sqlite sql ce
Re: C# и встраиваемые БД
От: Aen Sidhe Россия Просто блог
Дата: 11.08.09 12:38
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А>Задача: написать программу с локальной БД. Важно то, чтобы программа была полностью переносима с одной машины на другую. Никаких дополнительных серверов для поддержки БД на рабочую машину не должно быть установлено. При решении этой задачи я выбрал 3 варианта и в каждой возникли проблемы.


А>Работаю на MS Visual C# 2008 Express Edition. И так:


А>1) Sql server CE — здесь пошел на компромис, потому что надо будет установить сервер sql CE.

А> Проблема: при портировании программа не находит файл с БД. Приходится на отдельно взятой машине пересобирать программу.
А> Вопрос: как зарегестрировать в программе БД, чтобы независимо от того, где запускается программа, она находила бы файл БД в корневой папке программы?

SqlCe ставить не надо. Это две дллки, таскаемые с программой. Проблема с путём — это проблема с CurrentDirectory, а не с Sql Ce.
С уважением, Анатолий Попов.
ICQ: 995-908
Re: C# и встраиваемые БД
От: Хэлкар  
Дата: 11.08.09 12:39
Оценка:
А>1) Sql server CE — здесь пошел на компромис, потому что надо будет установить сервер sql CE.
А> Проблема: при портировании программа не находит файл с БД. Приходится на отдельно взятой машине пересобирать программу.
А> Вопрос: как зарегестрировать в программе БД, чтобы независимо от того, где запускается программа, она находила бы файл БД в корневой папке программы?

В каком смысле не находит файл? Реализуйте хранение базы например в папке Documents and Settings\All Users\Application Data\{program_name}.
Re: C# и встраиваемые БД
От: vodolas  
Дата: 11.08.09 13:02
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Задача: написать программу с локальной БД. Важно то, чтобы программа была полностью переносима с одной машины на другую. Никаких дополнительных серверов для поддержки БД на рабочую машину не должно быть установлено. При решении этой задачи я выбрал 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 -ку в папку с программой и все нормально работает без доп. установок.

Попробуещь — отпишись (оч. хотел бы узнать для общего развития)

Удачи.
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Re: C# и встраиваемые БД
От: HowardLovekraft  
Дата: 11.08.09 13:09
Оценка:
Здравствуйте, Аноним, Вы писали:

А>при добавлении источника данных в программу (add new data source)

Какое окно? Какой connection string? Какой "new data source"?
Re: C# и встраиваемые БД
От: Danchik Украина  
Дата: 11.08.09 13:19
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Задача: написать программу с локальной БД. Важно то, чтобы программа была полностью переносима с одной машины на другую. Никаких дополнительных серверов для поддержки БД на рабочую машину не должно быть установлено. При решении этой задачи я выбрал 3 варианта и в каждой возникли проблемы.


[Skip]

А>ЗЫ возможно, мои вопросы просты и глупы, но начал работать под C# недавно. Если будете посылать меня читать маны и гайды, то будьте добры, давайте конкретные ссылки. Спасибо!


Попробуйте также MS Access. Если стоит ADO больше ничего на машину ставить не надо. База данных сидит в одном файле.
Re: C# и встраиваемые БД
От: digor Украина  
Дата: 13.08.09 08:21
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Задача: написать программу с локальной БД. Важно то, чтобы программа была полностью переносима с одной машины на другую. Никаких дополнительных серверов для поддержки БД на рабочую машину не должно быть установлено. При решении этой задачи я выбрал 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 — в остальном процесс инсталяции написан подробно. Когда будете деплоить на клиента — тащите эти либы со своим приложением.

ConnectionString можно и без визарда получить:

    FbConnectionStringBuilder cs = new FbConnectionStringBuilder();
    cs.Database = _DATA_FILE; //путь до файла *
    cs.UserID = "dbuser"; //*
    cs.Password = "dbuser"; //*
    cs.Dialect = 3; 
    cs.ServerType = FbServerType.Embedded;
    FbConnection connection = new FbConnection(cs.ToString());
    connection.Open();
     ...
    connection.Close();

* — вынести в конфигурацию или получать извне.

--
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.