none
Como criar um classe que conecte ao banco oracle e depois nas telas eu a chame para conectar o banco ( VISUAL STUDIO 2010 ULTIMATE, C# ASP.NET E ORACLE 10G) RRS feed

  • Pergunta

  • Pessoal

    ESTOU USANDO VISUAL STUDIO 2010 ULTIMATE, C# ASP.NET E ORACLE 10G

    Gostaria de saber como fazer uma classe separada para conectar ao banco oracle e depois chama-la nas telas para abrir uma conexão e ai fazer select, insert e etc

    Obrigado desde já

    quarta-feira, 11 de julho de 2012 10:48

Respostas

  • Prezados

    Ninguem me explicou como faço abaixo, que claro, fica muito mais fácil.

    criei uma classe com o nome conectaBanco.cs dentro do APP_CODE. Na classe tem o código abaixo.

               

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Data;
    using System.Data.OracleClient;

    namespace Persistencia // este namespace tem entrar no using dos forms que quiser usar a conexao (using Persistencia);

    {
        public static class Banco
        {

            public static OracleConnection conexao = new OracleConnection("uid=COBRANCA;pwd=COBRANCA;server=DESENV");
            public static void AbrirConexao()
            {

                conexao.Open();
            }

            public static void FecharConexao()
            {
                if (conexao.State == ConnectionState.Open)
                {
                    conexao.Close();
                    conexao.Dispose();
                }
            }
        }
    }

    Na pagina que quer a conexao fica assim, reparem que fiz a conexao da classe acima no page load_Abaixo.

    O que está em negrito é o que está na classe acima.

    using System;
    using System.Collections.Generic;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data.OracleClient;  // required for oracle
    using Persistencia; // fundamental para usar a classe acima

    public partial class Cliente_Cliente : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
               TxtApelido.Text= Session["APELIDO"].ToString();
               Banco.AbrirConexao(); // ta na classe acima e funciona porque pus o using persistencia.
               OracleCommand Cmd = Banco.conexao.CreateCommand(); // banco.conexao esta na classe acima tambem
               Cmd.Connection = Banco.conexao; // classe acima tambem
               Cmd.CommandText = "SELECT C.*,Gr.CD_GRUPO FROM CLIEN C,GRUPO_CLIENTE_02 Gr WHERE C.APELIDO_1=GR.APELIDO_1(+)  AND C.APELIDO_1="+"'"+TxtApelido.Text+"'";
               OracleDataReader reader = Cmd.ExecuteReader();
         
                while (reader.Read()) // loop para preencher os textbox do form
                {  // if (reader["CD_GRUPO"] !=null)
                    TxtGrupo.Text = reader["CD_GRUPO"].ToString();
                    TxtDtCadastro.Text =reader["DTCADAST_1"].ToString(); ;
                    TxtCnpj.Text =reader["CNPJ_1"].ToString();
                    TxtInscEst.Text =reader["INCREST_1"].ToString();
                    TxtRazaoSocial.Text =reader["NOME_1"].ToString();
                    TxtFilial.Text =reader["FILIAL_1"].ToString();
                    TxtNFunc.Text =reader["N_FUNC_1"].ToString();
                    TxtVlrMedio.Text =reader["VMTITULO_1"].ToString();
                    DrpImportancia.Text =reader["IMPORT_1"].ToString();
                    DrpCdAtiv.Text =reader["CODATIV_1"].ToString();
                    TxtAssessor.Text =reader["ACESSOR_1"].ToString();
                    TxtPerioc.Text =reader["PERIODICIDADE_1"].ToString();
                    RdbStatus.Text =reader["STATUS_1"].ToString();
                    RdbEstrang.Text =reader["ESTRANGE_1"].ToString();
                    RdbImpRenda.Text =reader["DESC_IMPOSTO_1"].ToString();
                    RdbInternet.Text =reader["PC_BX_WEB_1"].ToString(); 
                }
            }
      
        }   
    }

    Funcionou 100%

    Tomara que ajude a todos

    Abraços 

    Miguel

    • Marcado como Resposta MiguelReis quarta-feira, 11 de julho de 2012 13:32
    quarta-feira, 11 de julho de 2012 13:31

Todas as Respostas

  • Acredito que isso ajude, a classe está prontinha:

    http://code.google.com/p/cs-dotnetnuke/source/browse/trunk/CS_Library/Components/ApplicationBlocks/OracleHelper.cs?r=37

    http://www.koders.com/csharp/fidDA38503BC16C71A9B61EABEC7A18F24C25C97243.aspx

    Conseguiu resolver sua dúvida?

    Se sim, marque uma resposta, caso não poste sua dúvida aqui.


    É possível sim! Ponha isso na sua cabeça. É possível. "Steve Jobs"

    Eduardo Pires
    www.eduardopires.net.br

           

    quarta-feira, 11 de julho de 2012 12:03
  • Prezado

    eu agradeço

    Sou iniciante e quero uma coisa simples. O que você me mandou é para experts, não entendi nada. 

    Somente quero deixar a string de conexão ao oracle numa classe apenas para que depois se tiver que mudar não saia mudando em todos os lugares.


    Entendeu ?

    Me ajudei por favor

    quarta-feira, 11 de julho de 2012 12:17
  • Mas por que numa classe?

    Usa o app.config (Forms) ou o web.config (Web).

    Muito mais simples.

    Ex:

    <add name="OracleConnectionString" connectionString="Data Source=OracleServer1;Persist Security Info=True;Password="******";User ID=User1" providerName="System.Data.OracleClient" />


    É possível sim! Ponha isso na sua cabeça. É possível. "Steve Jobs"

    Eduardo Pires
    www.eduardopires.net.br

           

    quarta-feira, 11 de julho de 2012 12:48
  • Prezados

    Ninguem me explicou como faço abaixo, que claro, fica muito mais fácil.

    criei uma classe com o nome conectaBanco.cs dentro do APP_CODE. Na classe tem o código abaixo.

               

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Data;
    using System.Data.OracleClient;

    namespace Persistencia // este namespace tem entrar no using dos forms que quiser usar a conexao (using Persistencia);

    {
        public static class Banco
        {

            public static OracleConnection conexao = new OracleConnection("uid=COBRANCA;pwd=COBRANCA;server=DESENV");
            public static void AbrirConexao()
            {

                conexao.Open();
            }

            public static void FecharConexao()
            {
                if (conexao.State == ConnectionState.Open)
                {
                    conexao.Close();
                    conexao.Dispose();
                }
            }
        }
    }

    Na pagina que quer a conexao fica assim, reparem que fiz a conexao da classe acima no page load_Abaixo.

    O que está em negrito é o que está na classe acima.

    using System;
    using System.Collections.Generic;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data.OracleClient;  // required for oracle
    using Persistencia; // fundamental para usar a classe acima

    public partial class Cliente_Cliente : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
               TxtApelido.Text= Session["APELIDO"].ToString();
               Banco.AbrirConexao(); // ta na classe acima e funciona porque pus o using persistencia.
               OracleCommand Cmd = Banco.conexao.CreateCommand(); // banco.conexao esta na classe acima tambem
               Cmd.Connection = Banco.conexao; // classe acima tambem
               Cmd.CommandText = "SELECT C.*,Gr.CD_GRUPO FROM CLIEN C,GRUPO_CLIENTE_02 Gr WHERE C.APELIDO_1=GR.APELIDO_1(+)  AND C.APELIDO_1="+"'"+TxtApelido.Text+"'";
               OracleDataReader reader = Cmd.ExecuteReader();
         
                while (reader.Read()) // loop para preencher os textbox do form
                {  // if (reader["CD_GRUPO"] !=null)
                    TxtGrupo.Text = reader["CD_GRUPO"].ToString();
                    TxtDtCadastro.Text =reader["DTCADAST_1"].ToString(); ;
                    TxtCnpj.Text =reader["CNPJ_1"].ToString();
                    TxtInscEst.Text =reader["INCREST_1"].ToString();
                    TxtRazaoSocial.Text =reader["NOME_1"].ToString();
                    TxtFilial.Text =reader["FILIAL_1"].ToString();
                    TxtNFunc.Text =reader["N_FUNC_1"].ToString();
                    TxtVlrMedio.Text =reader["VMTITULO_1"].ToString();
                    DrpImportancia.Text =reader["IMPORT_1"].ToString();
                    DrpCdAtiv.Text =reader["CODATIV_1"].ToString();
                    TxtAssessor.Text =reader["ACESSOR_1"].ToString();
                    TxtPerioc.Text =reader["PERIODICIDADE_1"].ToString();
                    RdbStatus.Text =reader["STATUS_1"].ToString();
                    RdbEstrang.Text =reader["ESTRANGE_1"].ToString();
                    RdbImpRenda.Text =reader["DESC_IMPOSTO_1"].ToString();
                    RdbInternet.Text =reader["PC_BX_WEB_1"].ToString(); 
                }
            }
      
        }   
    }

    Funcionou 100%

    Tomara que ajude a todos

    Abraços 

    Miguel

    • Marcado como Resposta MiguelReis quarta-feira, 11 de julho de 2012 13:32
    quarta-feira, 11 de julho de 2012 13:31
  • Miguel,

    Você se sente justo ao afirmar que ninguém te ajudou?

    A string de conexão que lhe passei é para justamente você não precisar ter que recompilar o código e publicar uma versão a cada troca de senha por ex.

    Persistencia não é abrir / fechar banco de dados, Persistencia é persistir dados.
    Seu namespace vai confundir qualquer desenvolvedor que pegar o código.

    A classe que lhe passei era para justamente você não se preocupar em abrir e fechar a conexão (muito provavelmente todos tiveram problema com esse tipo de falha).

    Se você tivesse alguma dúvida com a classe e a connection string que lhe passei eu lhe ajudaria mas você se recusou a entender algo mais complexo e praticar algo que não é recomendavel. Deixamos de ser iniciantes quando encaramos nossos desafios.


    É possível sim! Ponha isso na sua cabeça. É possível. "Steve Jobs"

    Eduardo Pires
    www.eduardopires.net.br

           

    quarta-feira, 11 de julho de 2012 16:13
  • Prezado Eduardo Pires

    Mas claro que tentou ajudar. Eu falei que não me ajudaram do jeito simples que fiz acima.

    Entenda que coloquei persistência por que copiei o codigo de uma cara na internet  e estava mais preocupado em fazer funcionar do que ver o nome. 

    Então fica o recado aqui:

    Pessoal, usei PERSISTENCIA para o namespace erradamente porque nesta classe eu só estou usando para abrir conexao e fechar conexão ao banco. Usem outro nome de namespace.

    Pergunto, se nesse namespace eu usar insert. updates e deletes o mesmo pode ficar com esse nome ?


    Obrigado a todos e peço desculpa se usei termos errados.

    Miguel

    quarta-feira, 11 de julho de 2012 21:05
  • Se você fizer CRUD na mesma classe que conecta no banco de dados além de se afastar mais ainda do conceito de persistência vai ficar um horror.

    Use o conceito de entidades, classes abstratas (entidade), classe DAO, classes de negócio.

    E frisando novamente:

    Do jeito que fez, a manutenção desse código será muito complicada, fora as possíveis falhas na performance do banco de dados devido conexões abertas.


    É possível sim! Ponha isso na sua cabeça. É possível. "Steve Jobs"

    Eduardo Pires
    www.eduardopires.net.br

           

    quinta-feira, 12 de julho de 2012 13:50