Foros del Web » Programación para mayores de 30 ;) » Java »

problema con insertar registro (por formulario)

Estas en el tema de problema con insertar registro (por formulario) en el foro de Java en Foros del Web. eso uso driver ms sql server 2000 Código: <%@ page import="java.io.*,java.util.*,java.net.*,java.sql.*" %> <% if(request.getParameter("GRABAR") != null) { // objetos de enlace Connection canal = null; ...
  #1 (permalink)  
Antiguo 16/07/2004, 11:08
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
problema con insertar registro (por formulario)

eso uso driver ms sql server 2000

Código:
<%@ page import="java.io.*,java.util.*,java.net.*,java.sql.*" %> 

<% 

if(request.getParameter("GRABAR") != null)

{

// objetos de enlace

Connection canal = null;
//ResultSet tabla= null; 
String host = "aguzman";
String db = "prueba";
int puerto = 1433;
Statement instruccion=null;
String usuario = "aguzman";
String contrasenia ="zsamer";
String strcon = "jdbc:microsoft:sqlserver://"+ host +":"+ puerto +";DatabaseName="+db+";";


// abriendo canal o enlace en su propio try-catch

try {

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();

canal=DriverManager.getConnection(strcon, usuario, contrasenia);

instruccion = canal.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); 

} catch(java.lang.ClassNotFoundException e){} catch(SQLException e) {}; 

//cargando los campos a grabar

// excepto clave porque en mysql es de tipo auto-increment


    
String userid =request.getParameter("userid");

String nombre =request.getParameter("nombre");
                                         
String apaterno =request.getParameter("apaterno");   

String q="insert into cliente(userid,nombre,apaterno) values(\"" +userid+"\","+nombre+","+apaterno+"); ";

try {

// agregando renglon (insert)

int n=instruccion.executeUpdate(q);

//avisando que se hizo la instruccion

out.println("REGISTRO INSERTADO");

} catch(SQLException e) {out.println(e);};

try{

// tabla.close(); 

instruccion.close(); 

canal.close();

} catch(SQLException e) {out.println(e);};

};

// construyendo forma dinamica

out.println("<FORM ACTION=insert.jsp METHOD=post>");

out.println("Usuario :<INPUT TYPE=TEXT NAME=userid><BR>");

out.println("Nombre :<INPUT TYPE=TEXT NAME=nombre><BR>");

out.println("Apellido:<INPUT TYPE=TEXT NAME=apaterno><BR>");

out.println("<INPUT TYPE=SUBMIT NAME=GRABAR VALUE=INSERTAR ><BR>");

out.println("</FORM>");

%>
el ensaje de error es el siguiente:

java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]El nombre 'xxxx' no es válido en este contexto. Sólo se permiten constantes, expresiones o variables. No se permiten nombres de columna.

Última edición por zsamer; 16/07/2004 a las 11:15
  #2 (permalink)  
Antiguo 16/07/2004, 11:20
 
Fecha de Ingreso: julio-2004
Mensajes: 26
Antigüedad: 19 años, 9 meses
Puntos: 0
Hola.. por que no pruebas asi tu INSERT es mas facil.. y mandas especificamente cada info a su campo.. igual y por ahi tienes alguna cosa mal..

PreparedStatement ps = null;

String userid =request.getParameter("userid");
String nombre =request.getParameter("nombre");
String apaterno =request.getParameter("apaterno");



StringBuffer stringbuffer = new StringBuffer();
stringbuffer = new StringBuffer();
stringbuffer.append("INSERT INTO TABLA ");
stringbuffer.append("VALUES (?,?,?)");
ps = c.prepareStatement(stringbuffer.toString());
ps.setString(1,userid);
ps.setString(2,nombre);
ps.setString(3,apaterno);
ps.executeUpdate();


saludos...
  #3 (permalink)  
Antiguo 16/07/2004, 11:56
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
e arroja un error :[Microsoft][SQLServer 2000 Driver for JDBC]Invalid parameter binding(s).
Código:
if(request.getParameter("GRABAR") != null)
{
// objetos de enlace
Connection canal = null;
//ResultSet tabla= null; 
String host = "aguzman";
String db = "prueba";
int puerto = 1433;
Statement instruccion=null;
String usuario = "aguzman";
String contrasenia ="zsamer";
String strcon = "jdbc:microsoft:sqlserver://"+ host +":"+ puerto +";DatabaseName="+db+";";
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
canal=DriverManager.getConnection(strcon, usuario, contrasenia);
instruccion = canal.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); 
} catch(java.lang.ClassNotFoundException e){} catch(SQLException e) {}; 
PreparedStatement ps = null;

String userid =request.getParameter("userid");
String nombre =request.getParameter("nombre");
String apaterno =request.getParameter("apaterno"); 



StringBuffer stringbuffer = new StringBuffer();
stringbuffer = new StringBuffer();
stringbuffer.append("INSERT INTO cliente");
stringbuffer.append("VALUES (userid,nombre,apaterno)");
ps = canal.prepareStatement(stringbuffer.toString());
ps.setString(1,userid);
ps.setString(2,nombre);
ps.setString(3,apaterno);
ps.executeUpdate();


// tabla.close(); 

instruccion.close(); 

canal.close();
  #4 (permalink)  
Antiguo 16/07/2004, 12:34
 
Fecha de Ingreso: julio-2004
Mensajes: 26
Antigüedad: 19 años, 9 meses
Puntos: 0
Pero ponlo dentro de tu TRY

saludos
  #5 (permalink)  
Antiguo 16/07/2004, 13:44
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
gracias, ahora no me tira ningun error, pero no inserta ningun dato, ingreso los datos en el formulario y reviso si quedó el registo en la base datos y nada.
  #6 (permalink)  
Antiguo 16/07/2004, 13:55
 
Fecha de Ingreso: julio-2004
Mensajes: 26
Antigüedad: 19 años, 9 meses
Puntos: 0
Ya estas ejecutando el query????

Deberias tener algo asi

Connection c = null;


y para ejecutar el query usas esto

c.commit();


saludos...
  #7 (permalink)  
Antiguo 16/07/2004, 13:59
 
Fecha de Ingreso: julio-2004
Mensajes: 26
Antigüedad: 19 años, 9 meses
Puntos: 0
Ahh tambien estaba viendo que pusiste los nombre directamentes dentro del StringBuffer asi:

stringbuffer.append("VALUES (userid,nombre,apaterno)");
si lo dejas asi lo unico k va a hacer es insertar los textos de "userid,nombre,apaterno"

en cambio si lo pones asi te va a poner el valor que tiene cada String

stringbuffer.append("VALUES ("+userid+","+nombre+","+apaterno+")");

saludos.... no olvides el COMMIT
  #8 (permalink)  
Antiguo 16/07/2004, 16:19
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
gracias viejo, funciono perfecto.


salu2.
  #9 (permalink)  
Antiguo 19/07/2004, 08:23
 
Fecha de Ingreso: julio-2004
Mensajes: 26
Antigüedad: 19 años, 9 meses
Puntos: 0
De que....
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:24.