Não consigo editar registro do MySql usando C-sharp e asp.net
27/01/2014
0
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
Posts
28/01/2014
Leandro Chiodini
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
28/01/2014
Wilson Junior
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.
31/01/2014
Sergio Silva
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
Clique aqui para fazer login e interagir na Comunidade :)