Ir ao conteúdo
  • Cadastre-se

Erro de Inserção


Visitante: aldeyf

Posts recomendados

Visitante: aldeyf
 

Olá pessoal, eu fiz uma procedure no mysql para inserir dados:

CREATE DEFINER=`root`@`localhost` PROCEDURE `cadastra_usuario`(IN v_nome VARCHAR(15), IN v_email VARCHAR(40), IN v_senha VARCHAR(20), IN v_sobrenome VARCHAR(30), IN v_aniversario DATE, IN v_tipo VARCHAR(15))

BEGIN

INSERT INTO tbusuario(strnome, stremail, strsenha, strsobrenome, dtmaniversario, strtipo) VALUES (v_nome, v_email, v_senha, v_sobrenome, v_aniversario, v_tipo);

END

e na hora de salvar no cadastro do formulario q eu fiz em asp.net(aspx) deu o seguinte erro:

Column 'strsobrenome' cannot be null

alguém pode me ajudar?

Link para o comentário
Compartilhar em outros sites

Acho que no seu sistema, você está passando um valor NULO para o quarto parâmetro, aí dá erro no SQL quando executa a procedure.

Tente ver se é isso, mas creio que sim.

EDIT----------

Poderia não estar dando erro, se o campo strsobrenome tivesse sido criado como

NULL YES

mas acho que você criou como NOT NULL, que creio ser melhor, realmente.

Link para o comentário
Compartilhar em outros sites

Ae DIF, se interessar, segue trecho de um DOC que eu faço para não esquecer comandos ^^

nesse "DOC" está como criar uma procedure simplesinha que fiz de teste com valor NULL, os comando para pesquisar, alterar, excluir um procedure


*-------------------------------------------------------------------------
STORE PROCEDURE
*-------------------------------------------------------------------------
DELIMITER $$

DROP PROCEDURE IF EXISTS ECOECO $$

CREATE PROCEDURE ECOECO( IN teste DECIMAL( 12,2 ) )

BEGIN
DECLARE VAR_TESTE DECIMAL( 10,2 );

SET VAR_TESTE:=10;

IF (TESTE = 0) THEN
BEGIN
SELECT 2;
END;
ELSEIF TESTE IS NULL THEN
BEGIN
SELECT 3;
END;
END IF;

SELECT var_teste,teste,var_teste+teste;
END$$

DELIMITER ;

CALL sp_name([parameter[,...]]) // O comando CALL é usado para chamar uma rotina que foi definida anteriormente com CREATE PROCEDURE.

SHOW PROCEDURE|FUNCTION STATUS [LIKE pattern] //Exibe as procedures ou funções criadas

SHOW CREATE PROCEDURE|FUNCTION sp_name //Exibe estrutura da procedure ou função que se deseja

ALTER PROCEDURE|FUNCTION sp_name [characteristic ...] //usado para alterar o nome de uma SP ou func
characteristic:
NAME newname
| SQL SECURITY {DEFINER | INVOKER}
| COMMENT string

DROP PROCEDURE|FUNCTION [IF EXISTS] sp_name //Excluir SP ou func

Link para o comentário
Compartilhar em outros sites

Visitante: aldeyf
 
Acho que no seu sistema, você está passando um valor NULO para o quarto parâmetro, aí dá erro no SQL quando executa a procedure.

Tente ver se é isso, mas creio que sim.

EDIT----------

Poderia não estar dando erro, se o campo strsobrenome tivesse sido criado como

NULL YES

mas acho que você criou como NOT NULL, que creio ser melhor, realmente.

Cara valeu você me ajudou pra caramba:)

Link para o comentário
Compartilhar em outros sites

estou com um problema parecido para salvar no banco de dados da erro veja as páginas são bem basicas

cadastro.htm

<html>

<head>

<title>Cadastro</title>

</head>

<body>

<h3>Formulário de cadastro</h3>

<form action="insere.php" method="post">

Nome: <input type="text" name="nome" />

<br />

Username: <input type="text" name="user" />

<br />

Email: <input type="text" name="email" />

<br />

<input type="submit" value="Cadastrar" />

</form>

</body>

</html>

agora esse arquivo insere.php é o comando para conexão com o banco de dados mas aparece o seguinte "Erro, não possível inserir no banco de dados" veja arquivo

<?php

//verifica se existe conexão com bd, caso não tenta criar uma nova

$conexao = mysql_connect("localhost","marcos","120510") //porta, usuário, senha

or die("Erro na conexão com banco de dados"); //caso não consiga conectar mostra a mensagem de erro mostrada na conexão

$select_db = mysql_select_db("marcos_victoria"); //seleciona o banco de dados

//Abaixo atribuímos os valores provenientes do formulário pelo método POST

$nome = $_POST["nome"];

$user = $_POST["user"];

$email = $_POST["email"];

$string_sql = "INSERT INTO pessoa (id,nome,user,email) VALUES (null,'$nome','$user','$email')"; //String com consulta SQL da inserção

mysql_query($string_sql,$conexao); //Realiza a consulta

if(mysql_affected_rows() == 1){ //verifica se foi afetada alguma linha, nesse caso inserida alguma linha

echo "<p>Cadastro feito com sucesso</p>";

echo '<a href="cadastro.htm">Voltar para formulário de cadastro</a>'; //Apenas um link para retornar para o formulário de cadastro

} else {

echo "Erro, não possível inserir no banco de dados";

}

mysql_close($conexao); //fecha conexão com banco de dados

?>

se puder me ajudar??? agradeço

Link para o comentário
Compartilhar em outros sites

  • Moderador

amigo você esta na seção errada.. mas tudo bem.. vejo que seu arquivo php nao esta bem organizado.. faça desta forma:

conexao.php


<?php
$conexao = mysql_connect("localhost","marcos","120510") or die("Erro na conexão com banco de dados");
$banco = mysql_select_db("marcos_victoria", $conexao);
?>


<?php

//Abaixo atribuímos os valores provenientes do formulário pelo método POST

$nome = $_POST["nome"];
$user = $_POST["user"];
$email = $_POST["email"];

//inclui o arquivo conexao.php responsável por conectar no seu banco de dados
include 'conexao.php';

//String com consulta SQL da inserção
$string_sql = "INSERT INTO pessoa (nome,user,email) VALUES ('$nome','$user','$email')";

//executa a instruçao SQL
$dados = mysql_query($string_sql);

//verifica se foi afetada alguma linha, nesse caso inserida alguma linha
if($dados){

echo"<script>
alert('Cadastro feito com sucesso');
window.location='cadastro.htm';
</script>";
} else {

echo"<script>
alert('Erro, não possível inserir no banco de dados');
history.go(-1);
</script>";

}
//fecha conexão com banco de dados
mysql_close($conexao);

?>

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois...
Nossa cara funcionou, e eu me matando alterei meus arquivos como voce disse e parece que foi como magica!!!!!!!!!!

muito obrigado........

vou dar uma estudada nesse tutorial que mandou para entender aonde estava errando!!!

até mais

"aldeyf" Não sei se já resolveu seu problema, mas se não, pelo que eu vi do erro o problema é que a consulta que você definiu pra o insert está trazendo o campo strsobrenome com valor null, quando criamos as tabelas o padrão é que os registros não poderão estar nulos.

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...