Array
(
)

Como criar uma classe com todos os comandos MySql

Vinicius Biá
   - 20 set 2013

Olá Pessoal, vira e mexe eu posto quase que a mesma coisa aqui (rsrsrs), mas vamos lá a minha dúvida sem muitas delongas, bom, eu quero criar uma classe de banco de dados com o MySql, e estou apanhando para fazer esta classe, alguém poderia me dar alguma dica, quero fazer ela completa....

Vinicius Biá
   - 20 set 2013


Citação:
Olá Pessoal, vira e mexe eu posto quase que a mesma coisa aqui (rsrsrs), mas vamos lá a minha dúvida sem muitas delongas, bom, eu quero criar uma classe de banco de dados com o MySql, e estou apanhando para fazer esta classe, alguém poderia me dar alguma dica, quero fazer ela completa....


essa Conexão eu quero fazer com o C#

Joel Rodrigues
   - 20 set 2013

Creio que tenha outro post sobre o mesmo tema, não?

Joel Rodrigues
   - 20 set 2013

Mas de toda forma, qual é exatamente sua dificuldade?

Emanoel Deivison
   - 20 set 2013

Acho que ficaria mais fácil utilizar o Entity Framework para desenvolver o que está desejando!

Thiago Augusto
   - 21 set 2013


Citação:
Olá Pessoal, vira e mexe eu posto quase que a mesma coisa aqui (rsrsrs), mas vamos lá a minha dúvida sem muitas delongas, bom, eu quero criar uma classe de banco de dados com o MySql, e estou apanhando para fazer esta classe, alguém poderia me dar alguma dica, quero fazer ela completa....


Não sei se entendi direito, mas vou tentar.

Para trabalhar com banco de dados você pode utilizar o padrão DAO, isto é, pode criar uma classe que irá conter todo o seu código SQL.
Segue um exemplo:

Classe Model
#Código

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Contatos
{
    class ContatosMODEL
    {
        public int codigo { get; set; }
        public string nome { get; set; }
        public string email { get; set; }
        public string telefone { get; set; }
    }
}


Classe DAO
#Código
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Windows.Forms;
using System.Data;

namespace Contatos
{
    class ContatosDAO
    {
       // conexao com o banco de dados
      SqlConnection conn = new SqlConnection(@"Server =(LocalDB)\v11.0;Database = banco; Integrated Security = SSPI;");
      private SqlTransaction transacao;

public void Gravar(ContatosMODEL contato)
       {
           // abre a conexão;
           conn.Open();
          
           // inicia a transação
           transacao = conn.BeginTransaction(IsolationLevel.ReadCommitted);
           try
           {
               // instrução sql
               SqlCommand sql = new SqlCommand("Insert Into contatos (codigo, nome, " + 
                                               "email, telefone) Values (@codigo, " +
                                               "@nome, @email, @telefone)", conn, transacao);
               
               // parametros da instrução sql
               sql.Parameters.AddWithValue("@codigo", contato.codigo);
               sql.Parameters.AddWithValue("@nome", contato.nome);
               sql.Parameters.AddWithValue("@email", contato.email);
               sql.Parameters.AddWithValue("@telefone", contato.telefone);
               sql.ExecuteNonQuery(); // executa a instrução no banco
               transacao.Commit(); // commita a transação
               conn.Close();  // fecha a conexao
           }
           catch (SqlException ex)
           {
               // Rollback na transação
               transacao.Rollback();
               MessageBox.Show(ex.Message);
           }
       } 



Lembrando que este é apenas um exemplo.
Observe que eu instanciei um objeto do tipo SqlConnection na própria classe DAO apenas para te mostrar um exemplo. O ideal é você criar uma classe com métodos que retornam uma conexão, encerram a conexão, etc. Este tipo de classe é fácilmente encontrada na internet.

Espero ter ajudado.

Vinicius Biá
   - 21 set 2013

Então Thiago eu criei uma classe cliente e fiz como você referenciou no seu comentário, o problema é a tal classe com o banco MySql, fiz tudo direitinho, baixei o conector fiz sua referência, mas minha classe não funciona, olha ai :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;
using System.Data;
using System.Data.OleDb;

namespace Projeto.BD
{
class ConexaoMySql
{
private string Banco_Dados;
private string Servidor;
private string Usuario;
private string Senha;
private string Conexao;
private string MySql;

private MySqlConnection AbrirBanco()
{
Conexao = "DataSource=" + Servidor + ";Initial Catalog=" + Banco_Dados + ";Persist Security Info=True;User ID=" + Usuario + ";Password=" + Senha;
MySqlConnection con = new MySqlConnection(Conexao);
con.Open();

return con;

}

public void Executar()
{
MySqlConnection con = AbrirBanco();
MySqlCommand cmd = new MySqlCommand(MySql,con);
cmd.ExecuteScalar();
}

public MySqlDataReader RetornaDataReader()
{
MySqlConnection cmd = new MySqlConnection();
cmd = AbrirBanco();
MySqlCommand Comando = new MySqlCommand();
Comando.CommandText = MySql.ToString();
Comando.Connection = cmd;
MySqlDataReader MySqlReader = Comando.ExecuteReader();
return MySqlReader;
}

public DataSet RetornaDataSete()
{
MySqlConnection cmd = new MySqlConnection();
cmd = AbrirBanco();
MySqlCommand Comando = new MySqlCommand();
Comando.CommandText = MySql.ToString();
Comando.Connection = cmd;
MySqlDataReader MySqlReader = Comando.ExecuteReader();
MySqlDataAdapter dtAdapter = new MySqlDataAdapter();
DataSet dsDataSet = new DataSet();
dtAdapter.SelectCommand = Comando;
dtAdapter.Fill(dsDataSet);
return dsDataSet;

}
public DataTable RetornaDataTable()
{
MySqlConnection cmd = new MySqlConnection();
cmd = AbrirBanco();
MySqlCommand Comando = new MySqlCommand();
Comando.CommandText = MySql.ToString();
Comando.Connection = cmd;
MySqlDataReader MySqlReader = Comando.ExecuteReader();
MySqlDataAdapter dtAdapter = new MySqlDataAdapter();
DataSet dsDataSet = new DataSet();
dtAdapter.SelectCommand = Comando;
dtAdapter.Fill(dsDataSet);
return dsDataSet.Tables[0];

}
}
}

Gostei da ideia de usar o Entity Framework que o Deivison passou......

mas segue ai minha classe criada com o MySql, lembrando que me basei no Sql Server, só se for isso....rsrsrs

Thiago Augusto
   - 22 set 2013


Citação:
Então Thiago eu criei uma classe cliente e fiz como você referenciou no seu comentário, o problema é a tal classe com o banco MySql, fiz tudo direitinho, baixei o conector fiz sua referência, mas minha classe não funciona, olha ai :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;
using System.Data;
using System.Data.OleDb;

namespace Projeto.BD
{
class ConexaoMySql
{
private string Banco_Dados;
private string Servidor;
private string Usuario;
private string Senha;
private string Conexao;
private string MySql;

private MySqlConnection AbrirBanco()
{
Conexao = "DataSource=" + Servidor + ";Initial Catalog=" + Banco_Dados + ";Persist Security Info=True;User ID=" + Usuario + ";Password=" + Senha;
MySqlConnection con = new MySqlConnection(Conexao);
con.Open();

return con;

}

public void Executar()
{
MySqlConnection con = AbrirBanco();
MySqlCommand cmd = new MySqlCommand(MySql,con);
cmd.ExecuteScalar();
}

public MySqlDataReader RetornaDataReader()
{
MySqlConnection cmd = new MySqlConnection();
cmd = AbrirBanco();
MySqlCommand Comando = new MySqlCommand();
Comando.CommandText = MySql.ToString();
Comando.Connection = cmd;
MySqlDataReader MySqlReader = Comando.ExecuteReader();
return MySqlReader;
}

public DataSet RetornaDataSete()
{
MySqlConnection cmd = new MySqlConnection();
cmd = AbrirBanco();
MySqlCommand Comando = new MySqlCommand();
Comando.CommandText = MySql.ToString();
Comando.Connection = cmd;
MySqlDataReader MySqlReader = Comando.ExecuteReader();
MySqlDataAdapter dtAdapter = new MySqlDataAdapter();
DataSet dsDataSet = new DataSet();
dtAdapter.SelectCommand = Comando;
dtAdapter.Fill(dsDataSet);
return dsDataSet;

}
public DataTable RetornaDataTable()
{
MySqlConnection cmd = new MySqlConnection();
cmd = AbrirBanco();
MySqlCommand Comando = new MySqlCommand();
Comando.CommandText = MySql.ToString();
Comando.Connection = cmd;
MySqlDataReader MySqlReader = Comando.ExecuteReader();
MySqlDataAdapter dtAdapter = new MySqlDataAdapter();
DataSet dsDataSet = new DataSet();
dtAdapter.SelectCommand = Comando;
dtAdapter.Fill(dsDataSet);
return dsDataSet.Tables[0];

}
}
}

Gostei da ideia de usar o Entity Framework que o Deivison passou......

mas segue ai minha classe criada com o MySql, lembrando que me basei no Sql Server, só se for isso....rsrsrs


Vínicius no meu Github tem um exemplo completo de CRUD utilizando C# e ADO.NET que pode te ajudar.

Link: https://github.com/thiagoaugusto/Contatos

Thiago Augusto
   - 22 set 2013

Dê uma estudada no código e qualquer dúvida eu estou disponível no email: thiago.android88@gmail.com

Vinicius Biá
   - 22 set 2013


Citação:

Citação:
Então Thiago eu criei uma classe cliente e fiz como você referenciou no seu comentário, o problema é a tal classe com o banco MySql, fiz tudo direitinho, baixei o conector fiz sua referência, mas minha classe não funciona, olha ai :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;
using System.Data;
using System.Data.OleDb;

namespace Projeto.BD
{
class ConexaoMySql
{
private string Banco_Dados;
private string Servidor;
private string Usuario;
private string Senha;
private string Conexao;
private string MySql;

private MySqlConnection AbrirBanco()
{
Conexao = "DataSource=" + Servidor + ";Initial Catalog=" + Banco_Dados + ";Persist Security Info=True;User ID=" + Usuario + ";Password=" + Senha;
MySqlConnection con = new MySqlConnection(Conexao);
con.Open();

return con;

}

public void Executar()
{
MySqlConnection con = AbrirBanco();
MySqlCommand cmd = new MySqlCommand(MySql,con);
cmd.ExecuteScalar();
}

public MySqlDataReader RetornaDataReader()
{
MySqlConnection cmd = new MySqlConnection();
cmd = AbrirBanco();
MySqlCommand Comando = new MySqlCommand();
Comando.CommandText = MySql.ToString();
Comando.Connection = cmd;
MySqlDataReader MySqlReader = Comando.ExecuteReader();
return MySqlReader;
}

public DataSet RetornaDataSete()
{
MySqlConnection cmd = new MySqlConnection();
cmd = AbrirBanco();
MySqlCommand Comando = new MySqlCommand();
Comando.CommandText = MySql.ToString();
Comando.Connection = cmd;
MySqlDataReader MySqlReader = Comando.ExecuteReader();
MySqlDataAdapter dtAdapter = new MySqlDataAdapter();
DataSet dsDataSet = new DataSet();
dtAdapter.SelectCommand = Comando;
dtAdapter.Fill(dsDataSet);
return dsDataSet;

}
public DataTable RetornaDataTable()
{
MySqlConnection cmd = new MySqlConnection();
cmd = AbrirBanco();
MySqlCommand Comando = new MySqlCommand();
Comando.CommandText = MySql.ToString();
Comando.Connection = cmd;
MySqlDataReader MySqlReader = Comando.ExecuteReader();
MySqlDataAdapter dtAdapter = new MySqlDataAdapter();
DataSet dsDataSet = new DataSet();
dtAdapter.SelectCommand = Comando;
dtAdapter.Fill(dsDataSet);
return dsDataSet.Tables[0];

}
}
}

Gostei da ideia de usar o Entity Framework que o Deivison passou......

mas segue ai minha classe criada com o MySql, lembrando que me basei no Sql Server, só se for isso....rsrsrs


Vínicius no meu Github tem um exemplo completo de CRUD utilizando C# e ADO.NET que pode te ajudar.

Link: https://github.com/thiagoaugusto/Contatos


Olá Thiago, muito bom o link que me enviou....só gostaria de tirar algumas dúvidas..
1° Os Exemplos sitados são com SQL Server, no caso eu posso adapta-lo e colocar MySql ?
2° Para cada classe que eu tenho tipo, cliente, fornecedores, funcionários etc, eu tenho que criar uma classe de conexão ?

Desculpem a falta de conhecimento, é que sou novato rsrsrs

Thiago Augusto
   - 22 set 2013

Você pode adaptar o exemplo de SQL Server para MySQL sem problemas, é só importar o driver do MySQL para o seu projeto e alterar os nomes.
Por exemplo:
SqlConnection - MysqlConnection
SqlCommand - MysqlCommand

E assim por diante.

Você não precisa criar uma classe de conexão para cada tela. Você pode criar uma única classe e instanciá-la quando precisar.

Você possui Skype? Se sim me passe a sua conta que nós conversamos por ele.

Não se preocupe em perguntar. Eu mesmo quando comecei a programar pude contar com a ajuda de alguns amigos.
Aqui mesmo na DevMedia tem muitas pessoas com muito mais conhecimento que eu, que na medida do possível irão te ajudar em todas as suas dúvidas.

Vinicius Biá
   - 22 set 2013

Olá Thiago, fico feliz em poder contar com você assim como os demais amigos deste fórum, meu Skype é Vinicius Biá, viniciusbia@hotmail.com
fico grato pela ajuda, pessoas como você fazem a diferença...abraços.... e aguardo contato rsrs