COMO PEGAR STRING PUBLICA DENTRO DE UMA CLASSE
Criei uma conexão com o banco Sql Express dentro da classe abaixo:
Citação:using System;
using System.Linq;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace Wm.Model
{
class ConexaoCrm
{
#region Declarações
public SqlConnection AbreBanco = new SqlConnection();
public bool BancoConectado = false;
#endregion Declarações
public void OpenBancoCrm()
{
try
{
AbreBanco.ConnectionString = [Ô]Data Source=.;Initial Catalog=BancoEnvio;User ID=sa;Password=1234;Language=Portuguese[Ô];
AbreBanco.Open();
BancoConectado = true;
}
catch
{
BancoConectado = false;
MessageBox.Show([Ô]Não foi PossÃvel Conectar ao Usuário Master Wm! Por Favor Verifique sua Conexão![Ô], [Ô]..:: Erro: Conexão de Dados ::..[Ô], MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return;
}
}
public void CloseBancoCrm()
{
AbreBanco.Close();
}
}
}
No formulário de login:
Citação:ConexaoCrm fechar = new ConexaoCrm();
fechar.CloseBancoCrm();
ConexaoCrm abrir = new ConexaoCrm();
abrir.OpenBancoCrm();
ConexaoCrm conecta = new ConexaoCrm();
conecta = ConexaoCrm.AbreBanco();
//cria um objeto command e altera registro no banco
string sql = [Ô]SELECT CodLogin, Login, Senha FROM Login WHERE (((Login.[Login])=[ô][Ô] + txtusuario.Text + [Ô][ô]))[Ô];
OleLogin = new SqlCommand(sql, [txt-color=#0000f0]AbreBanco[/txt-color]); // Aqui é o erro!!!
//define um data adapter
AdapterLogin = new SqlDataAdapter();
AdapterLogin.SelectCommand = OleLogin;
TbLogin = new DataTable();
AdapterLogin.Fill(TbLogin);
fechar.CloseBancoCrm();
Como faço para pegar a string publica AbreBanco?
Obrigado!
[txt-color=#e80000]public [/txt-color]class ConexaoCrm
Como esse atributo não foi declarado como estático, você terá que criar uma instância da classe para usa-lo.
ConexaoCrm abrir = new ConexaoCrm();
[txt-color=#e80000]string conn =[/txt-color] abrir.OpenBancoCrm().ConnectionString;
ou então tornar o seu atributo estático da seguinte maneira:
public static SqlConnection AbreBanco= new SqlConnection();
Na hora de chamar é só se basear no nome da classe:
[txt-color=#e80000]string con =[/txt-color] ConexaoCrm.AbreBanco[txt-color=#e80000].ConnectionString[/txt-color];
Obrigado pela resposta, instanciei e coloquei a classe como publica, fico assim:
Citação:using System;
using System.Linq;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace Wm.Model
{
public class ConexaoCrm
{
#region Declarações
// public SqlConnection AbreBanco = new SqlConnection();
public static SqlConnection AbreBanco = new SqlConnection();
public bool BancoConectado = false;
#endregion Declarações
public void OpenBancoCrm()
{
try
{
AbreBanco.ConnectionString = [Ô]Data Source=.;Initial Catalog=Wm_Envio;User ID=wm;Password=QaZ171281;Language=Portuguese[Ô];
AbreBanco.Open();
BancoConectado = true;
}
catch
{
BancoConectado = false;
MessageBox.Show([Ô]Não foi PossÃvel Conectar ao Usuário Master Wm! Por Favor Verifique sua Conexão![Ô], [Ô]..:: Erro: Conexão de Dados ::..[Ô], MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return;
}
}
public void CloseBancoCrm()
{
AbreBanco.Close();
}
}
}
Mas ainda não recebe o parametro do AbreBanco, ele não identificou o conn, veja abaixo:
Citação:ConexaoCrm fechar = new ConexaoCrm();
fechar.CloseBancoCrm();
ConexaoCrm abrir = new ConexaoCrm();
abrir.OpenBancoCrm();
string [txt-color=#0000f0]conn[/txt-color] = ConexaoCrm.AbreBanco.ConnectionString;
//cria um objeto command e altera registro no banco
string sql = [Ô]SELECT CodLogin, Login, Senha FROM Login WHERE (((Login.[Login])=[ô][Ô] + txtusuario.Text + [Ô][ô]))[Ô];
OleLogin = new SqlCommand(sql, [txt-color=#0000f0]conn[/txt-color]); // Erro aqui
//define um data adapter
AdapterLogin = new SqlDataAdapter();
AdapterLogin.SelectCommand = OleLogin;
TbLogin = new DataTable();
AdapterLogin.Fill(TbLogin);
fechar.CloseBancoCrm();
Obrigado!
Graças ao Jaba que deu 90% do caminho.
Obrigado a todos!