COMO PEGAR STRING PUBLICA DENTRO DE UMA CLASSE

KELVINBETHO 15/02/2017 18:10:12
#471667
Boa tarde, pessoal.
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!
JABA 15/02/2017 19:09:01
#471672
Resposta escolhida
Você esqueceu de colocar um public na declaração da classe. Faça assim:

[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];

KELVINBETHO 15/02/2017 19:25:40
#471673
Boa noite, Jaba

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!
JABA 15/02/2017 19:49:51
#471675
Qual erro que deu?
KELVINBETHO 15/02/2017 20:22:28
#471678
Na verdade não deu erro fica sublinhado, tipo que não foi encontrado.
KERPLUNK 15/02/2017 20:27:09
#471679
SqlConnection, já é uma classe e já tem todas as propriedades que você está querendo. O que você está fazendo se chama retrabalho. Admiro a sua iniciativa de começar a estudar OOP, mas acho que você está indo pelo caminho errado.
KELVINBETHO 15/02/2017 20:35:17
#471680
Boa noite Kerplunk, o que você sugere?
KERPLUNK 15/02/2017 20:50:24
#471682
O objeto SqlConnection, já faz tudo que você está pretendendo com essa classe, ele não precisa ser [Ô]reescrito[Ô]. Chegou a dar uma olhadinha nos vídeos do meu canal?
KELVINBETHO 17/02/2017 19:58:57
#471780
Consegui realizar as rotinas.
Graças ao Jaba que deu 90% do caminho.

Obrigado a todos!
Tópico encerrado , respostas não são mais permitidas