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

Problema con executeUpdate

Estas en el tema de Problema con executeUpdate en el foro de Java en Foros del Web. Bueno, cuando intento realizar una simple consulta me da error: Cita: st.executeUpdate("INSERT INTO videos (nombre, direccion, comentario) VALUES ('" + nombre + "','" + direccion ...
  #1 (permalink)  
Antiguo 16/12/2007, 13:39
 
Fecha de Ingreso: diciembre-2007
Mensajes: 194
Antigüedad: 16 años, 4 meses
Puntos: 5
Problema con executeUpdate

Bueno, cuando intento realizar una simple consulta me da error:
Cita:
st.executeUpdate("INSERT INTO videos (nombre, direccion, comentario) VALUES ('" + nombre + "','" + direccion + "','"+ comentario +"')");
Contexto de la consulta:
Cita:
import servlets.*;
import jbs.*;
import java.io.*;
import java.sql.*;

public class modificar_datos implements Serializable {

conexion con = new conexion();
Statement st;

public void insertVideos(String login, String password, String nombre, String direccion, String comentario)throws SQLException{
con.conectar(login, password);
st = con.miConexion().createStatement();
st.executeUpdate("INSERT INTO videos (nombre, direccion, comentario) VALUES ('" + nombre + "','" + direccion + "','"+ comentario +"')");
}
Error que escupe el log de Apache Tomcat:
Cita:
16-dic-2007 20:38:23 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() para servlet jsp lanzó excepción
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorEx ception: INSERT command denied to user 'admin'@'localhost' for table 'videos'
at sun.reflect.NativeConstructorAccessorImpl.newInsta nce0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInsta nce(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newI nstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Construc tor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:40 6)
at com.mysql.jdbc.Util.getInstance(Util.java:381)
at com.mysql.jdbc.SQLError.createSQLException(SQLErro r.java:1031)
at com.mysql.jdbc.SQLError.createSQLException(SQLErro r.java:957)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.ja va:3376)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.ja va:3308)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:18 37)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java :1961)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionIm pl.java:2537)
at com.mysql.jdbc.StatementImpl.executeUpdate(Stateme ntImpl.java:1564)
at com.mysql.jdbc.StatementImpl.executeUpdate(Stateme ntImpl.java:1485)
at jbs.modificar_datos.insertVideos(modificar_datos.j ava:24)
at org.apache.jsp.inserccion_jsp._jspService(insercci on_jsp.java:81)
at org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:803)
at org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:393)
at org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:803)
at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:206)
at org.netbeans.modules.web.monitor.server.MonitorFil ter.doFilter(MonitorFilter.java:390)
at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invo ke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invo ke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invok e(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.servic e(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(H ttp11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11Conn ectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run( JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
Si alguien me puede ayudar se lo agradeceria.
  #2 (permalink)  
Antiguo 16/12/2007, 22:00
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 10 meses
Puntos: 24
Re: Problema con executeUpdate

Cita:
INSERT command denied to user 'admin'@'localhost' for ...
Creo que esa línea del error es clara. No tienes permisos de inserción sobre la tabla videos.
Primero tienes que darle permisos al usuario admin sobre esa tabla para poder ejecutar la instrucción SQL que indicás.

GRANT INSERT ON videos TO admin@localhost;

Con esa instrucción obtendrás los permisos necesarios para hacer un insert en la tabla videos.

Si quieres tener control total sobre la base de datos en la que estas trabajando, deberías ejecutar la siguiente instrucción.

GRANT ALL ON nombre_bd TO admin@localhost;

Ambas instrucciones deberías ejecutarlas como root.
  #3 (permalink)  
Antiguo 17/12/2007, 04:37
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 7 meses
Puntos: 51
Re: Problema con executeUpdate

Por cierto que si alguien te pasa un comentario escrito adecuadamente, puede hacer lo que le de la gana en tu base de datos. No muestro como para no dar ideas . Es mejor usar un PreparedStatement en vez de concatenar los parametros como cadenas, ya que te hace vulnerable a lo que se conoce como "SQL injection".

S!
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 06:15.