Não consigo editar registro do MySql usando C-sharp e asp.net

27/01/2014

0

Quando edito um registro, não há mensagem de erro, porem nada é alterado no banco de dados. Estou usando um web form com um botão salvar ( ver código abaixo:) Agradeço qualquer ajuda. Já verifiquei que diretamente no MySql, a procedure funciona, Mas utilizando asp.net,os campos não saõ alterados, . Ou seja, dentro do asp.net não funciona. No entanto não ocorre um erro também. Isso é o pior, pois não sei o que esta ocorrendo. Alguem já passou por esse tipo de erro e pode me ajudar?

protected void btnSalvar_Click(object sender, EventArgs e)
{
String sql = "SERVER = localhost; DATABASE = ddssitepessoal; UID=wolfalone; PASSWORD = ''752168''";
try
{
con = new MySqlConnection(sql);
MySqlCommand cmd = new MySqlCommand("altera_perfil",con);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("nmlogin", txtNome_Login.Text);
cmd.Parameters.AddWithValue("senh", txtSenha.Text);
cmd.Parameters.AddWithValue("nmreal", txtNome_Real.Text);
cmd.Parameters.AddWithValue("mail", txtEmail.Text);
cmd.Parameters.AddWithValue("curs", txtCurso.Text);
cmd.Parameters.AddWithValue("esco", txtEscola.Text);
cmd.Parameters.AddWithValue("disc", txtDisciplina.Text);
cmd.Parameters.AddWithValue("modu", txtModulo.Text);
cmd.Parameters.AddWithValue("peri", txtPeriodo.Text);
cmd.Parameters.AddWithValue("moti", txtMotivo.Text);
cmd.Parameters.AddWithValue("ID", Convert.ToInt32(txtAluno_ID.Text));
cmd.Connection = con;
con.Open();
cmd.Prepare();
cmd.ExecuteNonQuery();
cmd.Dispose();
lblMensagem.Text = "Registro atualizado com sucesso";
}
catch (Exception ex)
{
lblMensagem.Text = string.Format("Erro : ", "Houve um erro inexperado!" + ex.Message);
}
finally
{
con.Close();
con.Dispose();
}
}
Sergio Silva

Sergio Silva

Responder

Posts

28/01/2014

Leandro Chiodini

Bom dia,

Você poderia colocar a procedure para gente dar uma olhada,
o fato dela executar certo no banco, pode ser a passagem dos parametros,
ele da algum erro na execução, ou ele executa com sucesso apenas na grava no banco?

o comando .ExecuteNonQuery(); retorna quantas linhas foram afetdas, caso execute 100%
voce pode fazer o teste,

int linhasAfetadas = cmd.ExecuteNonQuery();

e veja se o banco retorna alguma.



att,
Chiodini
Responder

28/01/2014

Wilson Junior

Bom, se considerar a seguinte estrutura de tabela:
CREATE TABLE `perfil` (
  `nmlogin` varchar(50) NOT NULL,
  `senh` varchar(50) NOT NULL,
  `nmreal` varchar(75) NOT NULL,
  `mail` varchar(200) NOT NULL,
  `curs` varchar(50) NOT NULL,
  `esco` varchar(75) NOT NULL,
  `disc` varchar(50) NOT NULL,
  `modu` varchar(50) NOT NULL,
  `peri` varchar(50) NOT NULL,
  `moti` varchar(50) NOT NULL,
  `ID` int(6) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;


E considerar a seguinte procedure:
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `altera_perfil`(
	mnlogin  varchar(50), 
	senh    varchar(50),
	nmreal  varchar(75),
	mail   varchar(200), 
	curs    varchar(50), 
	esco    varchar(75),
	disc    varchar(50),
	modu    varchar(50), 
	peri    varchar(50), 
	moti    varchar(50),   
	NUMBER1      int(6)
)
begin
	UPDATE `test`.`perfil`
		SET
		`nmlogin` = mnlogin,
		`senh` = senh,
		`nmreal` = nmreal,
		`mail` = mail,
		`curs` = curs,
		`esco` = esco,
		`disc` = disc,
		`modu` = modu,
		`peri` = peri,
		`moti` = moti
	WHERE `ID` = NUMBER1;

/* select * from `test`.`perfil` where `ID` = NUMBER1; */
END$$
DELIMITER ;


Tive problemas com o nome do campo ID, então mudei para number (só pra não ficar com o mesmo nome do da tabela) e deu tudo certo.
Responder

31/01/2014

Sergio Silva

A procedure que eu utilizei esta abaixo: Espero que ajude a determinar o problema.

DELIMITER $$

CREATE DEFINER=`wolfalone`@`localhost` PROCEDURE `altera_perfil`(IN nmlogin VARCHAR(30), IN senh VARCHAR(12), IN nmreal VARCHAR(50),
IN mail VARCHAR(80), IN curs VARCHAR(40), IN esco VARCHAR(40), IN disc VARCHAR(40), IN modu CHAR(3), IN peri VARCHAR(10), IN moti TEXT, IN id INT)
BEGIN
DECLARE excessao SMALLINT DEFAULT 0;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET excessao = 1;

IF ( (nmlogin != '') && (senh != '') && (nmreal != '') && (mail != '') && (curs != '') && (esco != '') && (disc != '') && (modu != '') && (peri != '') && (id > 0)) THEN
START TRANSACTION;
UPDATE Login SET nome_login = nmlogin, senha_login = senh, nome_real = nmreal, email = mail, curso = curs,
escola_tecnica = esco, disciplina = disc, modulo = modu, periodo = peri, motivo = moti WHERE aluno_ID =id;
IF excessao = 1
THEN
SELECT 'Erro ao inserir registro no perfil do usuário' AS Msg;
ROLLBACK;
ELSE
SELECT 'Cadastro alterado com sucesso' AS Msg;
COMMIT;
END IF;
END IF;
END
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar