amsga Ответов: 3

Есть ли способ подключиться к любой базе данных без библиотек DLL компаний


Всем Привет,

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

Есть ли хоть что-то, что я могу сделать?
Без получения библиотек DLL, специфичных для типа базы данных?

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

Я просматриваю документацию для ODBC, но до сих пор они, похоже, указывают на то, что я редактирую источники данных ODBC на компьютере, которых я пытаюсь избежать.

Maciej Los

А как насчет этого ADO.NET OledDb?

amsga

Никогда раньше такого не пробовал. Я пойду почитаю немного об этом. Спасибо.

3 Ответов

Рейтинг:
25

OriginalGriff

Не совсем. Даже если вы используете OleDb, он нуждается в правильном движке БД, который будет установлен на машине (что означает, что DLL-файлы должны быть там).

Единственный способ избежать необходимости в "внешних" сборках какой - либо формы-это написать свой собственный код для интерфейса с каждым типом системы, что является огромной работой и, вероятно, никогда не будет закончено (поскольку функции постоянно добавляются или изменяются в БД).

Почему вы хотите избежать добавления библиотек DLL на компьютер, если они необходимы вашему приложению, когда пользователь устанавливает его? Возможно, вам придется установить его .В любом случае net (или ваш код C# не может работать), так в чем же проблема с зависимостями DLL в то же время?


amsga

Мне было интересно, есть ли в некотором смысле все-в-одном для подключения, чтобы я мог избежать написания дубликатов кодов для каждого типа.

OriginalGriff

Provided you stick to "basic" SQL commands, and don't try anything fancy, you *might* get away with it, by issuing the same SQL commands to a generic interface which selects which system type to connect to. But ... even then it's probably going to have problems with some systems, because (for example) parameterised queries - which you DO need to use at all times - aren't handled exactly the same by all systems. Some want named parameters, others are happy with '?' and order-based parameters. Some DB's support Stored Procedures, others don't. And there are big differences in the syntax once you move away from vanilla "SELECT * FROM MyTable" so you will need to know exactly what you are doing and may not get efficient queries to run at all. You may be able to get your generic interface to translate your SQL, but then you're back to having to write code specific to each system you might connect to.

Я думаю, что понимаю, почему ты хочешь это сделать, но ... .. это будет Пита, чтобы поддерживать его в хорошем состоянии! (Достаточно плохо иметь дело с двумя разными версиями SQL Server, не говоря уже о том, чтобы получить первые 10 строк только из MsSQL и MySQL ...)

Рейтинг:
2

RickZeeland

Вы также можете быть заинтересованы в использовании ОЗР что позволяет программировать базу данных независимо, смотрите здесь: Какой фреймворк/подход к доступу к данным является "лучшим" для C# и .NET? - переполнение стека[^]
Я пытался NHibernate, но не рекомендовал бы его, так как кривая обучения очень крутая.


Рейтинг:
16

Maciej Los

Я искренне верю, что А... "Универсальный поставщик баз данных" не существует, даже если Компания devart[^] заявляет, что получил его.

На мой взгляд, нет никаких шансов построить приложение, которое способно подключаться к любой базе данных, без сторонних провайдеров:
- Firebird: поставщик .NET[^],
- Поставщик данных Oracle для .NET (ODP.NET)[^] (Microsoft рекомендует использовать стороннего поставщика Oracle из-за типов в System.Data.OracleClient будет удален в будущем),
- MySQL Connector/NET[^],
- Npgsql - .NET доступ к документации PostgreSQL | Npgsql[^],
- прием.
Существует так много различных систем баз данных... Пожалуйста, посетите: ConnectionStrings.com[^] сайт, чтобы узнать.


jsc42

Даже если вы можете подключиться, вы должны знать, что существует много диалектов и версий SQL; поэтому вам придется кодировать варианты для разных систем.

Maciej Los

Хорошая мысль!