Inquiridor
Conexão com "Banco de Dados" MySql (!)

Pergunta
-
Boa noite,
Após várias pesquisas e não obter a resposta, com a ajuda de um amigo estamos elaborando um software que trabalhe com o banco de dados do MySql através do C#.
Está divido em três camadas(class).
DataMySql.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConexaoMySql { public class DataMySql { public int id { get; set; } public string nome { get; set; } public string email { get; set; } public string login { get; set; } public string senha { get; set; } } }
ConfigMySql.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data; using System.Data.Odbc; using ConexaoMySql; namespace ConexaoMySql { public class ConfigMySql { public void incluir(DataMySql Data) { ConectarMySql objeto = new ConectarMySql(); string MySqlCod = "INSERT INTO tbcadusuario VALUES (null," + "'"; MySqlCod += Data.nome + "','"; MySqlCod += Data.email + "','"; MySqlCod += Data.login + "','"; MySqlCod += Data.senha + "','"; objeto.executarcommand(MySqlCod); } } }
ConexaoMySql.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data; using System.Data.Odbc; using ConexaoMySql; using System.Windows.Forms; namespace ConexaoMySql { public class ConectarMySql { OdbcConnection connect; OdbcCommand command = new OdbcCommand(); public ConectarMySql() { connect = new OdbcConnection(); connect.ConnectionString = "Driver={Mysql ODBC 5.1 driver};server=localhost;database=bdzaratech;user=root;password=;"; } public void executarcommand(string comandoSql) { try { command.CommandText = comandoSql; command.Connection = connect; connect.Open(); command.ExecuteNonQuery(); MessageBox.Show("Cadastro realizado com sucesso!"); } catch (Exception ex) { MessageBox.Show("O seguinte erro ocorreu: "+ex); } finally { connect.Close(); connect.Dispose(); } } } }
E o botão do formCadUsuario.cs para cadastrar o usuário.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using ConexaoMySql; namespace RadioHelp { public partial class frmCadUsuario : Form { public frmCadUsuario() { InitializeComponent(); } private void btCadastrar_Click(object sender, EventArgs e) { DataMySql _data = new DataMySql(); _data.nome = txtNome.Text; _data.email = txtEmail.Text; _data.login = txtUsuario.Text; _data.senha = txtSenha.Text; ConfigMySql _config = new ConfigMySql(); _config.incluir(_data); } private void frmCadUsuario_Load(object sender, EventArgs e) { } } }
Onde está o erro? Pois quando clico em cadastrar, a seguinte mensagem é retornada;
--------------------------- --------------------------- O seguinte erro ocorreu: System.Data.Odbc.OdbcException (0x80131937): ERROR [IM002] [Microsoft][ODBC Driver Manager] Nome da fonte de dados não encontrado e nenhum driver padrão especificado em System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode) em System.Data.Odbc.OdbcConnectionHandle..ctor(OdbcConnection connection, OdbcConnectionString constr, OdbcEnvironmentHandle environmentHandle) em System.Data.Odbc.OdbcConnectionOpen..ctor(OdbcConnection outerConnection, OdbcConnectionString connectionOptions) em System.Data.Odbc.OdbcConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) em System.Data.ProviderBase.DbConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) em System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions) em System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) em System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) em System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) em System.Data.ProviderBase.DbConnectionInternal.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) em System.Data.Odbc.OdbcConnection.Open() em ConexaoMySql.ConectarMySql.executarcommand(String comandoSql) na c:\Users\Guilherme\Documents\Programas\RadioHelp\RadioHelp\ConexaoMySql.cs:linha 30 --------------------------- OK ---------------------------
Obrigado à todos e desculpe o tamanho da pergunta.
Att,
Guilherme Zaramella.
Todas as Respostas
-
Boa noite,
Você fez o download do arquivo .dll do MySQL?
É necessário baixar este pequeno arquivo e adicionar a referência na camada DAL.
Logo após, você faz a referência de namespace, se eu não me engano é:
using MySql.Data.MySqlClient;
Sobre a string de conexão, tenta desta forma:
private mySQLConexao = "Data Source=localhost; Initial Catalog=MEUBANCODADOS; user id=NOME; password=SENHA";
Espero ter ajudado,
Victor Oliveira.
-
Ele não ta achando o Driver para funcionar!
Você instalou isso: http://www.enduserguides.com/software/db/mysqlapps/eug_mysql_odbc_install.html
Vou te dar uma diga ... usa o Mysql.Data que é melhor: http://dev.mysql.com/downloads/connector/net/
Baixe o pacote e adicione a referencia e use
Assim: http://www.macoratti.net/08/08/c_mysql1.htm