SoloCodigo

Programación General => Java => JSP/Servlets => Mensaje iniciado por: bertamax en Domingo 18 de Julio de 2010, 18:01

Título: Error SQL Server insert
Publicado por: bertamax en Domingo 18 de Julio de 2010, 18:01
Estoy ejecutando mi aplicación y me lanza la siguiente excepción:

java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]Error de inserción: el nombre de columna o los valores especificados no corresponden a la definición de la tabla.
Traza error [Microsoft][ODBC SQL Server Driver][SQL Server]Error de inserción: el nombre de columna o los valores especificados no corresponden a la definición de la tabla.

¿A qué puede ser debido?

Gracias y saludos
Título: Re: Error SQL Server insert
Publicado por: F_Tanori en Domingo 18 de Julio de 2010, 21:27
El error es en la consulta estas intentando insertar un numero diferente de valores

Ejemplo:

INSERT INTO TABLA (CAMPO1,CAMPO2,CAMPO3) VALUES (1,2) --Falta el valor del campo 3
INSERT INTO TABLA (CAMPO1,CAMPO2) VALUES (1,2,3) --Falta el nombre del campo 3 dentro de la lista de campos
INSERT INTO TABLA (CAMPO1,CAMPO2,CAMPO3) VALUES (1,2,3) --Misma cantidad de campos y valores

* campo = columna

revisa tu consulta.

Saludos
Título: Re: Error SQL Server insert
Publicado por: bertamax en Domingo 18 de Julio de 2010, 22:29
Pues sí que coinciden porque mi código es el siguiente

<%@page import="java.io.*,java.sql.*"%>
<%@page session="true" errorPage="Error.jsp"%>
<jsp:useBean id="miBean" scope="session" class="beanBalnearios.altbajamodver"/>


<html>
<head>
    <script LANGUAGE=JavaScript type="text/javascript">

function checkFields() {
missinginfo = "";
if (document.form.Nombre_usuario.value == "") {
missinginfo += "n     -  Nombre_usuario";
}
if (document.form.Apellidos_usuario.value == "") {
missinginfo += "n     - Apellidos_usuario";
}
if (document.form.Codigo_usuario.value == "") {
missinginfo += "n     - Codigo_usuario";
}
if (document.form.direccion.value == "") {
missinginfo += "n     - dirección";
}
if (document.form.Poblacion.value == "") {
missinginfo += "n     - Poblacion";
}
if (document.form.Provincia.value == "") {
missinginfo += "n     -  Provincia";
}
if (document.form.CodigoPostal.value == "") {
missinginfo += "n     - CodigoPostal";
}
if (document.form.Telefono.value == "") {
missinginfo += "n     -  Telefono";
}
if ((document.form.email_usuario.value == "") ||
(document.form.email_usuario.value.indexOf('@') == -1) ||
(document.form.email_usuario.value.indexOf('.') == -1)) {
missinginfo += "n     -  email_usuario";
}
if (document.form.Dni.value == "") {
missinginfo += "n     -  Dni";
}
if (document.form.Tarjeta.value == "") {
missinginfo += "n     -  Tarjeta";
}
if (document.form.CCV.value == "") {
missinginfo += "n     - CCV";
}


if (missinginfo != "") {
missinginfo ="_______________________________n" +
"Debe rellenar algunos campos yn" +
"escribir una dirección e-mail válida.n" +
"Revise los siguientes campos:n" +
missinginfo + "n_______________________________" +
"nPor favor inténtelo de nuevo. Gracias" +
"n";

alert(missinginfo);
return false;
}
else return true;
}


</script>
<title></title>
</head>

<body bgcolor="#669933"><center>
        <%@include file="cabeceras.html"%></center>
       
       
       
       
         <form name=form method=POST action=compras.jsp onSubmit="return checkFields()">  
        <table border=0>
            <%--     <center>   --%>
       
                <tr>
                    <td><b>Nombre:</b></td>
                    <td><input type=text name="Nombre_usuario"size="20" ></td>
                </tr>
               
                <tr>
                    <td><b>Apellidos:</b></td>
                    <td><input type=text name="Apellidos_usuario"size="20" ></td>
                </tr>
                 <tr>
                     <td><b>C&oacute;digo cliente:</b></td>
                  <td> <input name="Codigo_usuario" type=text id="Codigo_usuario"size="20" >
                    </td>
                  </tr>
                <tr>
                    <td><b>Dirección:</b></td>
                    <td><input type=text name="direccion"size="20" ></td>
                </tr>
               
               
                <tr>
                    <td><b>Población:</b></td>
                    <td><input type=text name="Poblacion" size="20"></td>
                </tr>
               
                <tr>
                    <td><b>Provincia:</b></td>
                    <td><input type=text name="Provincia" size="20"></td>
                   
                </tr>
         
       
     
                <tr>
                <td><b>C&oacute;digo Postal:</b></td>
              <td><input type=text name="CodigoPostal"size="20" ></td>
                <tr>
                <td><b>N&uacute;mero Tel&eacute;fono:</b></td>
                  <td><input type=text name="Telefono" size="20"></td>
                </tr>
                <tr>
                    <td><b>E-Mail:</b></td>
                    <td><input type=text name="email_usuario"size="20" ></td>
                   
                </tr>
                <tr>
                <td><b>Dni:</b></td>
                   <td><input type=text name="Dni" size="20" ></td>
                </tr>
         
       
       
       
         
                <tr>
                <td><b>Nº Tarjeta:</b></td>
                  <td><input type=text name="Tarjeta" size="20"></td>
                </tr>
                <tr>
                    <td><b>CCV:</b></td>
                    <td><input type=text name="CCV" size="20"></td>
                </tr>
                <tr>
                    <td><br>
                        <br><center>
                            <input name="button" type=button class=botones onClick=print() value=IMPRIMIR>
                           
                            <input type=submit class=botones value=ENVIAR>
                        </center>
                    </td>
                  </tr>
           
        </table>
         </form>
         <% String q="";
             
              if(request.getParameter("Codigo_usuario")!=null && request.getParameter("Codigo_usuario")!=""){
               String a=request.getParameter("Nombre_usuario");
               String b=request.getParameter("Apellidos_usuario");
               String c=request.getParameter("Codigo_usuario");
               String d=request.getParameter("direccion");
               String e=request.getParameter("Poblacion");
               String f=request.getParameter("Provincia");
               String g=request.getParameter("CodigoPostal");
               String h=request.getParameter("Telefono");
               String i=request.getParameter("email_usuario");
               String j=request.getParameter("Dni");
               String k=request.getParameter("Tarjeta");
               String l=request.getParameter("CCV");
               
               
               
                 
               
                 q+="insert into compras values('"+a+"','"+b+"','"+c+"','"+d+"','"+e+"','"+f+"','"+g+"','"+h+"','"+i+"','"+j+"','"+k+"','"+l+"')";
               
                 if(miBean.Update(q)>0){%>
                 <br><h1 align=center>
                     <jsp:forward page="confirmacion.jsp"/></h1>
                 <%}else{%>
                 <br><h1 align=center>NO SE HA REALIZADO EL ALTA CORRECTA</h1>
               
                <% }
               
              }%>
                 
       
       
       
   
</body>
</html>
Título: Re: Error SQL Server insert
Publicado por: F_Tanori en Martes 20 de Julio de 2010, 02:56
Eso no podemos saberlo, porque no conocemos la estructura de tu tabla.

muestra la estructura de tu tabla

Saludos
Título: Re: Error SQL Server insert
Publicado por: bertamax en Martes 20 de Julio de 2010, 18:28
Codigo_usuario   varchar(50)   Checked
Codigo_compra   varchar(50)   Unchecked
Nombre_usuario   varchar(50)   Checked
Apellidos_usuario   varchar(50)   Checked
Telefono   varchar(50)   Checked
email_usuario   varchar(50)   Checked
direccion   varchar(MAX)   Checked
Tarjeta   varchar(50)   Checked
CCV   varchar(50)   Checked
Poblacion   varchar(50)   Checked
Provincia   varchar(50)   Checked
CodigoPostal   varchar(50)   Checked
Dni   varchar(50)   Checked

Gracias
Título: Re: Error SQL Server insert
Publicado por: arielb en Jueves 29 de Julio de 2010, 16:23
Según la estructura que muestras conté 13 campos
Código: SQL
  1. Codigo_usuario VARCHAR(50) Checked
  2. Codigo_compra VARCHAR(50) Unchecked
  3. Nombre_usuario VARCHAR(50) Checked
  4. Apellidos_usuario VARCHAR(50) Checked
  5. Telefono VARCHAR(50) Checked
  6. email_usuario VARCHAR(50) Checked
  7. direccion VARCHAR(MAX) Checked
  8. Tarjeta VARCHAR(50) Checked
  9. CCV VARCHAR(50) Checked
  10. Poblacion VARCHAR(50) Checked
  11. Provincia VARCHAR(50) Checked
  12. CodigoPostal VARCHAR(50) Checked
  13. Dni VARCHAR(50) Checked
  14.  

y según la cadena que tienes solo conté 12, por lo que veo que no coiciden.
Código: SQL
  1.  
  2. q+="insert into compras values('"+a+"','"+b+"','"+c+"','"+d+"','"+e+"','"+f+"','"+g+"','"+h+"','"+i+"','"+j+"','"+k+"','"+l+"')";
  3.  

Si deseas hacer un insert con todos los campos de la tabla, lo puedes hacer con la sintaxis como la estás haciendo. Pero si los valores que quieres guardar son menos que la cantidad de campos que tiene la tabla, debes especificar los campos a utilizar que corresponda al valor (como lo explicó el amigo f_tanori).

Código: SQL
  1. INSERT INTO tabla(campos) VALUES(valores);
  2.  
Título: Re: Error SQL Server insert
Publicado por: bertamax en Sábado 31 de Julio de 2010, 19:35
Gracias.

He hecho esta modificación y me sigue dando error.

q+="insert into compras(Nombre_usuario, Apellidos_usuario, Codigo_usuario, direccion, Poblacion, Provincia, CodigoPostal, email_usuario, Dni, Tarjeta, CCV) values('"+a+"','"+b+"','"+c+"','"+d+"','"+e+"','"+f+"','"+g+"','"+h+"','"+i+"','"+j+"','"+k+"','"+l+"')";
Título: Re: Error SQL Server insert
Publicado por: arielb en Domingo 1 de Agosto de 2010, 03:58
usa la opción debug para que veas el resultado final de la variable cuando se arma, y si no sabes usar el debug puedes imprimir la variable con
Código: Java
  1. System.out.println(q)
  2.  
y el resultado lo pones acá. para ver como se terminando de construir la variable.

Por otro lado al momento de asignar a la variable q no es necesario que uses el signo más, ya que no estás acumulando.
Título: Re: Error SQL Server insert
Publicado por: arielb en Domingo 1 de Agosto de 2010, 04:16
en la parte de los campos te faltó teléfono
Código: SQL
  1.  
  2. INSERT INTO compras(Nombre_usuario, Apellidos_usuario, Codigo_usuario, direccion, Poblacion, Provincia, CodigoPostal, email_usuario, Dni, Tarjeta, CCV) VALUES('Nombre_usuario','Apellidos_usuario','Codigo_usuario','direccion','Poblacion','Provincia','CodigoPostal','Telefono','email_usuario','Dni','Tarjeta','CCV')
  3.  
Título: Re: Error SQL Server insert
Publicado por: bertamax en Lunes 2 de Agosto de 2010, 20:28
Muchas gracias

He echo la siguiente modificación:

q="insert into compras(Nombre_usuario, Apellidos_usuario, Codigo_usuario, direccion, Poblacion, Provincia, CodigoPostal, Telefono, email_usuario, Dni, Tarjeta, CCV) values('"+a+"','"+b+"','"+c+"','"+d+"','"+e+"','"+f+"','"+g+"','"+h+"','"+i+"','"+j+"','"+k+"','"+l+"')";
System.out.println(q);

El resultado es el siguiente:

Note: C:Documents and SettingsmariaMis documentosredesbuildgeneratedsrcorgapachejspcompras_jsp.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.