DADOS DA CONEXAO EM OUTRO BANCO

ROGERIOAZEVEDO 09/05/2013 22:07:49
#423224
Boa Noite!

Senhores, estou reestruturando a minha aplicação e preciso da ajuda de vocês.

Minha aplicação possui um banco próprio, que chamarei de Banco_1. Minha aplicação utiliza dados de outros 2 bancos de dados (Banco_2 e Banco_3, pensei em fazer da seguinte forma:

1) O acesso ao Banco_1 utilizarei um arquivo *.txt.

2) O acesso aos demais bancos pensei da seguinte forma, criei um FORM com o nome conexão conforme imagem em anexo, os dados para conectar nos Bancos_2 e Banco_3 são gravados no Banco_1.

Criei 3 classes de conexão na minha aplicação.

A primeira classe contem a sintaxe para conectar no Banco_1

As outras 2 classes seriam as conexões ao Banco_2 e ao Banco_3 mas não consegui escrever o código para essas classes, há como fazer do jeito que eu pensei? Criar uma classe de conexão do os dados: IP, nome banco, user e senha dentro de outro banco?

Conto com o apoio de vocês. Um forte abraço.

F001E 10/05/2013 08:37:49
#423230
Resposta escolhida
A Classa para o Banco 2 e 3 é identica ao do Banco 1, mas dai voce muda o Nome da Classe..
ClasseBanco1, ClasseBanco2 e ClasseBanco3..ficando assim :

class ClasseBanco1
{
public static SqlConnection conn;

public static void ConectaBanco(string LocalBanco, string BaseDados, string Usuario, string Senha)
{
try
{
string connString = [Ô]Data Source = [Ô] + LocalBanco.Trim() + [Ô];[Ô] +
[Ô]Initial Catalog = [Ô] + BaseDados.Trim() + [Ô];[Ô] +
[Ô]User ID = [Ô] + Usuario.Trim() + [Ô];[Ô] +
[Ô]Password= [ô][Ô] + Senha.Trim() + [Ô][ô][Ô];
conn = new SqlConnection(connString);
conn.Open();
}
catch (Exception ex)
{
ClasseGeral.ErroBanco = true;
Funcoes.TrataErro([Ô]class ConectaBancoDados[Ô], [Ô]ConectaBanco[Ô], ex.Message);
}
}
}

class ClasseBanco2
{
public static SqlConnection conn;

public static void ConectaBanco(string LocalBanco, string BaseDados, string Usuario, string Senha)
{
try
{
string connString = [Ô]Data Source = [Ô] + LocalBanco.Trim() + [Ô];[Ô] +
[Ô]Initial Catalog = [Ô] + BaseDados.Trim() + [Ô];[Ô] +
[Ô]User ID = [Ô] + Usuario.Trim() + [Ô];[Ô] +
[Ô]Password= [ô][Ô] + Senha.Trim() + [Ô][ô][Ô];
conn = new SqlConnection(connString);
conn.Open();
}
catch (Exception ex)
{
ClasseGeral.ErroBanco = true;
Funcoes.TrataErro([Ô]class ConectaBancoDados[Ô], [Ô]ConectaBanco[Ô], ex.Message);
}
}
}

class ClasseBanco3
{
public static SqlConnection conn;

public static void ConectaBanco(string LocalBanco, string BaseDados, string Usuario, string Senha)
{
try
{
string connString = [Ô]Data Source = [Ô] + LocalBanco.Trim() + [Ô];[Ô] +
[Ô]Initial Catalog = [Ô] + BaseDados.Trim() + [Ô];[Ô] +
[Ô]User ID = [Ô] + Usuario.Trim() + [Ô];[Ô] +
[Ô]Password= [ô][Ô] + Senha.Trim() + [Ô][ô][Ô];
conn = new SqlConnection(connString);
conn.Open();
}
catch (Exception ex)
{
ClasseGeral.ErroBanco = true;
Funcoes.TrataErro([Ô]class ConectaBancoDados[Ô], [Ô]ConectaBanco[Ô], ex.Message);
}
}
}

Dai para voce escolhar as Conexões voce faria um if naquela tela que voce criou com o Banco Sistema assim:
if (Sistema == [Ô]Banco1[Ô])
{
ClasseBanco1.ConectaBanco(ClasseGeral.Servidor, ClasseGeral.BancoDados, ClasseGeral.Us, ClasseGeral.Pwp);
}
else if (Sistema == [Ô]Banco2[Ô])
{
ClasseBanco2.ConectaBanco(ClasseGeral.Servidor, ClasseGeral.BancoDados, ClasseGeral.Us, ClasseGeral.Pwp);
}
else
{
ClasseBanco3.ConectaBanco(ClasseGeral.Servidor, ClasseGeral.BancoDados, ClasseGeral.Us, ClasseGeral.Pwp);
}
ROGERIOAZEVEDO 11/05/2013 18:02:30
#423336
Só pra ter certeza que eu consegui dizer o que eu preciso.

A minha aplicação possui 3 bancos de dados. O banco 1 é onde estão armazenados os usuários, e onde conterá 2 tabelas com os dados de conexão ao Banco_2 e ao Banco_3.

Assim o que eu preciso....

A string de conexão ao Banco_1 está em uma classe, que pretendo colocar para acessar por um arquivo txt, abaixo o que seria esse classe...

  using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace Jedi.Classe
{
class Conexao
{
// vamos nos conectar ao SQL Server Express e à base de dados
// locadora usando Windows Authentication
private static string connString = ([Ô]Data Source= 192.168.0.52; Initial Catalog= Banco_1; User= sa; Password= 12345[Ô]);


// representa a conexão com o banco
private static SqlConnection conn = null;

// método que permite obter a conexão
public static SqlConnection obterConexao()
{
// vamos criar a conexão
conn = new SqlConnection(connString);

// a conexão foi feita com sucesso?
try
{
// abre a conexão e a devolve ao chamador do método
conn.Open();
}
catch (SqlException sqle)
{
conn = null;
// ops! o que aconteceu?
// uma boa idéia aqui é gravar a exceção em um arquivo de log
}

return conn;
}

public static void fecharConexao()
{
if (conn != null)
{
conn.Close();
}
}
}
}


Assim, para chamar essa conexão como no acesso ao usuário tenho o seguinte código...

  //Busca os dados da conexão na classe
SqlConnection conn = Classe.Conexao.obterConexao();

//Mostra erro no caso de conexão não sucedida
if (conn == null)
{
MessageBox.Show([Ô]Não foi possível conectar com o banco de dados[Ô]);
}


Hoje, tenho tem classes iguais, conforme postei os códigos acima.

O que eu queria....

Criei 2 tabelas no Banco_1 que contem os dados para a conexão dos Bancos_2 e Banco_3. Manterei por enquanto uma Classe igual a descrita acima para acesso ao Banco_1, mas para acessar os outros 2 queria criar duas classe que buscassem as informações para conexão nas tabelas que estão contidas no Banco_1 isso é possível?

Aquela tela que criei, serve para escrever ou alterar os dados para conexão aos Banco_2 e Banco_3. A resposta postada acima atende à essa necessidade? Desde já agradeço.

Tópico encerrado , respostas não são mais permitidas