Xuan 1 Denunciar post Postado Março 25, 2013 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
quintelab 91 Denunciar post Postado Março 25, 2013 Já olhou o resultado da sua query para ver se é o que realmente quer?Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Xuan 1 Denunciar post Postado Março 25, 2013 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
quintelab 91 Denunciar post Postado Março 26, 2013 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
Xuan 1 Denunciar post Postado Março 26, 2013 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
pedro rodrigues 4 Denunciar post Postado Março 26, 2013 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
Xuan 1 Denunciar post Postado Março 26, 2013 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
pedro rodrigues 4 Denunciar post Postado Março 26, 2013 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
Xuan 1 Denunciar post Postado Março 27, 2013 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
pedro rodrigues 4 Denunciar post Postado Março 27, 2013 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
KhaosDoctor 242 Denunciar post Postado Março 27, 2013 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
Xuan 1 Denunciar post Postado Março 28, 2013 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