Fala galera!
Brincando com o C#, encontrei algumas dificuldades para conectar com o Oracle database express de casa.
Pesquisando em fontes nacionais e internacionais, achei a solução (metade numa parte, metade em outra). Resolvi compartilhar aqui no blog a “minha versão”.
Estou trabalhando com ASP.NET. Um simples web form, com um botão e uma label, para exibir o resultado.

Interface do aplicativo (falei que era simples)
Nota importante: Você vai precisar do namespace Oracle. Para que funcione, você precisa adicionar referência ao dito cujo.
Basta dar um clique com o botão direito sobre o projeto (pelo solution explorer) e, na aba .net, escolha Oracle.DataAcess. Finalize com um OK.
O Text serve para o string builder.
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
using System.Text;
E abaixo, o código fonte. Ele fica no onClick do botão.
//limpo a label de debug
lblRead.Text = "";
//string de conexão para oracle XE
string connection = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)" +
"(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=xe)));" +
"User Id=MEU_USUARIO; Password=MINHA_SENHA";
//crio o objeto de conexão, o parâmetro é minha string de conexão
OracleConnection con = new OracleConnection(connection);
//abro a conexão
con.Open();
//objeto de comando
OracleCommand cmd = new OracleCommand();
//frescura-bônus: string builder pode ser substituída por uma string normal,
// é útil quando se deseja construir comandos muito grandes
StringBuilder sb = new StringBuilder();
//construo o comando
sb.Append("SELECT A.COD,A.NOME FROM CLIENTE A");
//passo o comando (aqui poderia ser o comando diretamente)
cmd.CommandText = sb.ToString();
//informo que é do tipo texto
cmd.CommandType = CommandType.Text;
//a conexão do meu comando é o objeto con
cmd.Connection = con;
//crio meu leitor de dados
OracleDataReader dr = cmd.ExecuteReader();
//enquanto houver dados para ler...
while (dr.Read())
{
//o nome entre [] é o nome da coluna
lblRead.Text += dr["cod"] + " - " + dr["nome"] + "<br />";
}
//libero a memória ocupada pela conexão
con.Dispose();
Fontes:
Até mais!





