none
Conexão oracle no web.config e chamada no webform RRS feed

  • Pergunta

  • Não sei como eu faço uma conexão com Oracle, mas no Web.Config e chamadas no WebForm. Uso C#/Web. Não uso WindowsForm. Gostaria de criar um método único de conexão, para todos os formulários meus, eu chamasse esse método e estaria conectado. Só preciso depois saber como fazer após a conexão, carregar os valores do select, no meu caso em um array, mas essa parte já sei.
    domingo, 29 de abril de 2012 00:06

Todas as Respostas

  • Olá pnet,

    Existem diferentes formas de vc acessar o Oracle em projetos ASP.Net. Vc pode fazer isso utilizando ADO.Net, Entity Framework, NHibernate, e outros frameworks.

    Talvez o método que vc esteja procurando (de acordo com a sua descrição) seria utilizando ADO.Net. Com o ADO.Net vc pode utilizar dois providers para acessar o Oracle: ODBC e o próprio da Oracle. O ODBC já é nativo do .Net Framework, enquanto que o da Oracle é feitos pelos caras da Oracle e esta disponível neste link: http://www.oracle.com/technetwork/topics/dotnet/index-085163.html

    Para configurar sua connection string no Web.Config, faça assim:

        <connectionStrings>
          <add name="OracleConnection" connectionString="... sua connection string ..."/>
        </connectionStrings>


    Para fazer um ponto único de acesso, pode criar uma classe Façade que encapsule seus comandos, faça algo como isto: (vou mostrar como fazer utilizando ODBC)

        public class DbConnectionFacade
        {
            public static OdbcConnection GetConnection()
            {
                string connectionString = ConfigurationManager.ConnectionStrings["oracleConnection"].ConnectionString;
    
                OdbcConnection conn = new OdbcConnection(connectionString);
    
                return conn;
            }
    
            public static object ExecuteScalar(string commandSql)
            {
                object result = null;
                OdbcConnection conn;
                OdbcCommand command;
    
                using (conn = GetConnection())
                {
                    command = conn.CreateCommand();
    
                    command.CommandType = CommandType.Text;
                    command.CommandText = commandSql;
    
                    try
                    {
                        conn.Open();
                        result = command.ExecuteScalar();
                    }
                    catch (DbException ex)
                    {
                        throw ex;
                    }
                    finally
                    {
                        conn.Close();
                    }
                }
    
                return result;
            }
    
            public static int ExecuteNonQuery(string commandSql)
            {
                int result = 0;
                OdbcConnection conn;
                OdbcCommand command;
    
                using (conn = GetConnection())
                {
                    command = conn.CreateCommand();
                    
                    command.CommandType = CommandType.Text;
                    command.CommandText = commandSql;
    
                    try
                    {
                        conn.Open();
                        result = command.ExecuteNonQuery();
                    }
                    catch (DbException ex)
                    {
                        throw ex;
                    }
                    finally
                    {
                        conn.Close();
                    }
                }
    
                return result;
            }
        }

    E sempre que vc precisar executar algum tipo de comando, bastará vc fazer o seguinte:

    int result = DbConnectionFacade.ExecuteNonQuery("Insert Into Tabela ...");

    Acredito que este código lhe ajude a atingir seu objetivo. Pois vc irá concentrar todos os seus comandos em uma única classe que irá padronizar e gerenciar todos seus acessos a base de dados.

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    domingo, 29 de abril de 2012 12:55
    Moderador