Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Xuan

Erro ao atualizar dados no banco de dados Mysql

Recommended Posts

Eu estou criando uma classe pra mim manipular com dados do DB, fiz metodo para SELECTs e funcionam normalmente, mas não sei porque o UPDATE não funciona

 

Pra mim saber se esta dando exception ou não, fiz ele retornar String e mostrar no textbox, mas ele não dah exception nenhum

 

Chamando metodo com essa linha

Email1.Text=bdOp.alterContent(Email1.Text, "ContatoEmail");

 

 

Metodo 'alterContent':

public String alterContent(String value, String whereValue)
{
	String query = "update conteudo set conteudo = '" + value + "' where nome='" + whereValue + "'";

	try
	{
		conn.Open();
		cmd.CommandText = query;
		cmd.ExecuteNonQuery();
		conn.Close();
		return "Sucesso.";
	}
	catch (Exception erro) { return erro.ToString(); }
}

 

 

Consigo fazer SELECT nessa mesma tabela tranquilo, também ja possui alguns testes de UPDATE com sucesso, mas esse codigo não esta dando certo

 

O teste de UPDATE com sucesso que eu falo, é quando eu deixo o query com tudo configurado, sem ter variaveis no meio

 

Não consigo achar onde esta o erro, por favor, me ajudem

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim sim, eu ja tentei faze ele retorna query, ele retorna exatamente o query que eu quero, mas nao funciona

Compartilhar este post


Link para o post
Compartilhar em outros sites

Precisava ver todo seu código, por exemplo onde estão declaradas essas variáveis. De qualquer forma, de uma olhada, nesse código e veja se esta esquecendo de algo:

 

 


con = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = c:\\mdb\\testmdb.mdb");
cmd = new OleDbCommand();
cmd.Connection = con;
cmd.CommandText = "update Table1 set [Info] = '123' where ID = 123;";
con.Open();
cmd.ExecuteNonQuery();
con.Close();

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hummm eu estou usando a biblioteca do Mysql mesmo

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using MySql.Data.MySqlClient;

namespace MasterPages
{
    public class BDOperation
    {
        private String strCon;
        private String user = "root";
        private String password;
        private String server = "127.0.0.1";
        private String database;

        private MySqlConnection conn;
        private MySqlCommand cmd;
        private MySqlDataReader reader;

        public void connect()
        {
            try
            {
                strCon = "server=" + server + "; User Id=" + 
                         user + "; password=" + password + "; database=" + database;
                conn = new MySqlConnection();
                cmd = new MySqlCommand();
                conn.ConnectionString = strCon;
                cmd.Connection = conn;
            }
            catch (Exception erro)
            {
            }
        }

        public String alterContent(String valor, String nome)
        {

            String query = "update conteudo set conteudo = @valor where nome=@nome";

            cmd.Parameters.Clear();
            cmd.Parameters.AddWithValue("@valor", valor);
            cmd.Parameters.AddWithValue("@nome", nome);

            try
            {
                conn.Open();
                cmd.CommandText = query;
                cmd.ExecuteNonQuery();
                conn.Close();
                return "Sucesso.";
            }
            catch (Exception erro) { return erro.ToString(); }
        }
    }
}

 

 

Aqui esta a classe toda que estou tentando fazer, com algumas alteracoes na parte de editar query

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Pode parecer besteira, mas o registro que está tentando alterar existe na tabela?

 

O valor passado no segundo parâmetro do seu método estabelece a condição para encontrar o registro que será alterado.

Então, segundo o exemplo de chamado do método a seguir, deve existir um registro na tabela que o valor do campo "nome" seja "ContatoEmail".

Pode acontecer até do banco de dados estar configurado para ser CaseSensitive.

 

Acho que vale a pena ver isso.

Email1.Text=bdOp.alterContent(Email1.Text, "ContatoEmail");
public String alterContent(String value, String whereValue)
{
	String query = "update conteudo set conteudo = '" + value + "' where nome='" + whereValue + "'";

	try
	{
		conn.Open();
		cmd.CommandText = query;
		cmd.ExecuteNonQuery();
		conn.Close();
		return "Sucesso.";
	}
	catch (Exception erro) { return erro.ToString(); }
}

 

 

Abraço,

 

Pedro

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Pode parecer besteira, mas o registro que está tentando alterar existe na tabela?

 

O valor passado no segundo parâmetro do seu método estabelece a condição para encontrar o registro que será alterado.

Então, segundo o exemplo de chamado do método a seguir, deve existir um registro na tabela que o valor do campo "nome" seja "ContatoEmail".

Pode acontecer até do banco de dados estar configurado para ser CaseSensitive.

 

Acho que vale a pena ver isso.

Email1.Text=bdOp.alterContent(Email1.Text, "ContatoEmail");
public String alterContent(String value, String whereValue)
{
	String query = "update conteudo set conteudo = '" + value + "' where nome='" + whereValue + "'";

	try
	{
		conn.Open();
		cmd.CommandText = query;
		cmd.ExecuteNonQuery();
		conn.Close();
		return "Sucesso.";
	}
	catch (Exception erro) { return erro.ToString(); }
}

 

 

Abraço,

 

Pedro

 

 

O registro existe sim, e tambem o ContatoEmail tambem foi pelo copiar e colar da tabela

Compartilhar este post


Link para o post
Compartilhar em outros sites

O nome da tabela é "conteudo" e o nome do campo que você quer atualizar também é "conteudo"?

String query = "update conteudo set conteudo = '" + value + "' where nome='" + whereValue + "'";

 

Exemplo de instrução UPDATE:

UPDATE <nome_da_tabela> SET 
    <nome_do_campo_que_recebe_o_valor> = <valor_a_ser_definido> 
[WHERE <nome_do_campo_de_condicao> = <valor_do_campo_de_condicao>]

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

O nome da tabela é "conteudo" e o nome do campo que você quer atualizar também é "conteudo"?

String query = "update conteudo set conteudo = '" + value + "' where nome='" + whereValue + "'";

 

Exemplo de instrução UPDATE:

UPDATE <nome_da_tabela> SET 
    <nome_do_campo_que_recebe_o_valor> = <valor_a_ser_definido> 
[WHERE <nome_do_campo_de_condicao> = <valor_do_campo_de_condicao>]

 

Exato, ambos se chama 'conteudo'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que embaçado hein cara...

 

Você já postou duas versões do seu código.

Está um pouco confuso pra mim.

Posta o código todo (métodos e utliização deles).

 

Não vi em que momento você chama o método "connect()".

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, isso pode ser problema do comando mysql, ao invés de usar o comando global cmd, crie um comando novo nesta forma:

 

 

 

MySqlCommand com = new MySqlCommand("Query",Conexao);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gente, Problema resolvido!!

 

O problema era que eu nao tinha colocado if(!isPostBack) no Page_Load

Entao o meu código estava funcionando direito, problema é que ele estava carregando novamente os dados do banco antes de salvar, por isso que eu achei que não estava salvando e também não retornava exception

 

Obrigado pela ajuda de todos!!

 

Principalmente do Guilherme Matanza, que resolveu isso pra mim!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.