hanu009 Ответов: 1

Создайте приложение, поддерживающее несколько баз данных, таких как 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 позаботится о синтаксисе запроса.

1 Ответов

Рейтинг:
2

RickZeeland

Взгляните на это Лучшие платформы для С[^]

И эта статья CodeProject: VITA – мощный и гибкий ORM и дополнительные строительные блоки для .NET-приложений[^]

Если вы не хотите использовать ORM, взгляните на: Не жесткий код DataProviders[^]