Создайте приложение, поддерживающее несколько баз данных, таких как SQL server, ORACLE и т. д
Всем привет,
Я пытаюсь создать приложение с ODBC совместимым кодом для БД
бизнес-логика находится в c#
БД для использования являются oracle 12c и 11g и MSSQL
Я использую
ADO.NET, OLEDB, ODP.NET , ODBC и т. д.
Проблема заключается в том, когда я пытаюсь использовать код ODBC с oracle 12C, где я получаю ошибки приведения и другие ошибки,
Я уже пробовал
IDbConeection, IDbCommand и т.д. Но у них есть проблема в случае Oracle (Ref Cursor) и типов данных различных баз данных, а также есть проблема с типами DBTypes
потому что они перечисляются по-разному с разными поставщиками данных.
например,
для boolean ссылки ниже показывают, что я могу использовать SQL_BIT в качестве типа ODBC, но это даже не так
в технологии IntelliSense
чтобы добиться этого?https://docs.oracle.com/cd/E15817_01/server.111/e10311/apa.htm
https://docs.oracle.com/cd/B19306_01/server.102/b14232/apb.htm
Могу ли я использовать тот же код для базы данных Oracle без изменения кода?
Потому что некоторые типы данных в Oracle и SQL Server совершенно разные, и код также выдает ошибку.
Есть ли способ достичь этого? Некоторые ссылки или руководства будут оценены по достоинству.
Что я уже пробовал:
вот ниже пример, он работает в MSSQL, но не работает с базой данных oracle . это дает мне ошибку типа данных invid boolean.
string strQuery = "SELECT remember_me, forgot_password, throttle_auth, maximum_attempts, company_name FROM tbl_settings"; var ds = dbManager.GetDataSet(strQuery, CommandType.Text,null); ds = DataControl.GetDataSet(strQuery); if (ds.Tables[0].Rows.Count > 0) { if (bool.Parse(ds.Tables[0].Rows[0]["remember_me"].ToString()) == true) { divRememberMe.Visible = true; rememberMe = true; } else { divRememberMe.Visible = false; rememberMe = false; } }
Anurag Gandhi
Я предлагаю использовать ORM или Micro ORM, такие как EntityFramework или Dapper для связи с базой данных. Таким образом, вы можете избежать рукописного запроса, и ваш инструмент ORM позаботится о синтаксисе запроса.