RETORNAR MULTIPLAS CONEXOES
Prezados colaboradores,
Sabemos que para criar um objeto de conexao com banco de dados usamos a seguinte sintaxe:
Sql Server
SqlConnection cn = new SqlConnection();
return cn; // Retornara objeto //SqlConnection
Access
OleDbConnection cn = new OleDbConnection();
return cn; // Retornara objeto //OleDbConnection
Como então retornar uma dessas conexoes baseados, por exemplo em um numero qualquer: 1=Access e 2=Sql Server sendo que o nome do objeto [Ô]cn[Ô] não pode ser alterado. Exemplo:
public ????????? abreconexao(int Indice)
{
object cn
if(Indice==1)
{
OleDbConnection cn = new OleDbConnection();
return cn; // Retornara objeto //OleDbConnection
}
else
{
SqlConnection cn = new SqlConnection();
return cn; // Retornara objeto //SqlConnection
}
}
Sabemos que para criar um objeto de conexao com banco de dados usamos a seguinte sintaxe:
Sql Server
SqlConnection cn = new SqlConnection();
return cn; // Retornara objeto //SqlConnection
Access
OleDbConnection cn = new OleDbConnection();
return cn; // Retornara objeto //OleDbConnection
Como então retornar uma dessas conexoes baseados, por exemplo em um numero qualquer: 1=Access e 2=Sql Server sendo que o nome do objeto [Ô]cn[Ô] não pode ser alterado. Exemplo:
public ????????? abreconexao(int Indice)
{
object cn
if(Indice==1)
{
OleDbConnection cn = new OleDbConnection();
return cn; // Retornara objeto //OleDbConnection
}
else
{
SqlConnection cn = new SqlConnection();
return cn; // Retornara objeto //SqlConnection
}
}
Experimenta tirar o new
SqlConnection cn = new SqlConnection();
Tenta algo assim:
Em VBnet seria algo assim:
Dim cnn As SqlConnection
cnn = New SqlConnection
SqlConnection cn = new SqlConnection();
Tenta algo assim:
Em VBnet seria algo assim:
Dim cnn As SqlConnection
cnn = New SqlConnection
Basta você declarar o tipo do retorno desse método como IDbConnection que é a Interface padrão para o modelo de conexões do ADO.NET.
A melhor forma pra você trabalhar assim é através do conceito de ProviderFactories introduzido no .NET Framework 2.0. Não será necessário ficar alterando o código para suportar outros banco de dados e tudo pode ser tratado em arquivos de configuração.
Arquivo App.config:
Função que cria a conexão:
Utilizando a conexão:
Para alternar o banco de dados basta modificar no arquivo de configuração o atributo defaultDatabase para o valor com um dos nomes definidos em connectionStrings.
public IDbConnection abreconexao(int Indice)
{
IDbConnection connection = null;
if (Indice == 1)
{
connection = new OleDbConnection();
connection.ConnectionString = [Ô]OleDbConnectionString[Ô];
}
else
{
connection = new SqlConnection();
connection.ConnectionString = [Ô]SqlConnectionString[Ô];
}
return connection;
}
IDbConnection connection = abreconexao(1);
connection.Open();
A melhor forma pra você trabalhar assim é através do conceito de ProviderFactories introduzido no .NET Framework 2.0. Não será necessário ficar alterando o código para suportar outros banco de dados e tudo pode ser tratado em arquivos de configuração.
Arquivo App.config:
<configuration>
<connectionStrings>
<add name=[Ô]SqlServer[Ô] connectionString=[Ô]server=.;Initial Catalog=Northwind;[Ô]
providerName=[Ô]System.Data.SqlClient[Ô] />
<add name=[Ô]MySql[Ô] connectionString=[Ô]server=localhost;user id=root;password=pass;database=db;[Ô]
providerName=[Ô]MySql.Data.MySqlClient[Ô] />
</connectionStrings>
<appSettings>
<add key=[Ô]defaultDatabase[Ô] value=[Ô]MySql[Ô] />
</appSettings>
</configuration>
Função que cria a conexão:
using System.Configuration;
using System.Data;
using System.Data.Common;
public DbConnection CreateConnection()
{
string database = ConfigurationManager.AppSettings[[Ô]defaultDatabase[Ô]];
string connectionString = ConfigurationManager.ConnectionStrings[database].ConnectionString;
string providerName = ConfigurationManager.ConnectionStrings[database].ProviderName;
DbProviderFactory provider = DbProviderFactories.GetFactory(providerName);
DbConnection connection = provider.CreateConnection();
connection.ConnectionString = connectionString;
return connection;
}
Utilizando a conexão:
using (DbConnection connection = CreateConnection())
{
using (DbCommand command = connection.CreateCommand())
{
command.CommandText = [Ô]procName[Ô];
command.CommandType = CommandType.StoredProcedure;
connection.Open();
using (DbDataReader dr = command.ExecuteReader())
{
// Do Something...
}
}
}
Para alternar o banco de dados basta modificar no arquivo de configuração o atributo defaultDatabase para o valor com um dos nomes definidos em connectionStrings.
Sabia que podia contar com vcs!!!
Perfeito!!!!
DEUS abençõe todos.
Perfeito!!!!
DEUS abençõe todos.
Tópico encerrado , respostas não são mais permitidas