problema java - mysql
Publicado por carlos mario (5 intervenciones) el 27/06/2008 05:38:35
estoy aprovechando mis vacaciones para diseñar una base de datos en mysql con java para un negocio comercial, pero tengo un problemita
el sgte codigo es el que se ejecuta cuando ocurre el evento actionperformed de un boton
la intencion de este codigo es que se muestre en un Jtable unos productos dividios por categorias, en la base de datos se hallan almacenados todos los productos
la primera palabra del nombre del producto define la categoria a la que pertenece, es decir:
-arroz diana
-arroz roa
-arroz marfil
Conforman la categoria arroz, entonces cuando el usuario digite arroz en un jtextfield deberan aparecer en el Jtable los tres productos antes mencionados
para ello utilizo una instruccion en mysql: select * from Nombre_Base.Nombre_Schema where Nombre_Tabla Like "arroz%"
esta instruccion funciona cuando la uso en MySQL, pero cuando la trato de usar en java este lanza una excepcion de sintaxis
no se que hacer, por que funciona en MySQL y no en java?
aqui esta descrito el codigo(este fue hecho con el IDE NetBeans 5.5)
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
String url = "jdbc:mysql://127.0.0.1:3306/MySQL";
String user = "root";
String pass = "futbol";
//obtengo nombre de jtextfield en el frame
String nom = Entrada_BR.getText();
Connection con = DriverManager.getConnection(url, user, pass);
//la instruccion en comillas funciona directamente en MySQL pero no por medio de java
PreparedStatement st = con.prepareStatement("select * from digital_store.proudctos where Nombre Like arroz%");
ResultSet r = st.executeQuery();
int fila = 0;
//copiar cada fila de la tabla en el Jtable del frame
if(r.next()){
do{
Cuadro_Base.setValueAt(r.getString("Nombre"),fila,0);
Cuadro_Base.setValueAt(r.getString("Pcosto"),fila,1);
Cuadro_Base.setValueAt(r.getString("Pcontado"),fila,2);
Cuadro_Base.setValueAt(r.getString("Pfiado"),fila,3);
fila = fila + 1;
}while(r.next());
}else{
JOptionPane.showMessageDialog(null, "El Producto "+nom+" no se encontro "
+ "Asegurese de que lo ha escrito correctamente", "ADVERTENCIA", JOptionPane.WARNING_MESSAGE);
}
}catch(Exception e){
JOptionPane.showMessageDialog(null, "Conexion fallida" + " Servidor MySQL desconectado o"
+ " Ingreso mal los datos", "Error", JOptionPane.ERROR_MESSAGE);
System.out.print(e.toString());
Nombre_Prod.setText("");
}
La exepcion que este codigo genera es:
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%' at line 1
si pueden ayudarme les agradeceria mucho
gracias
el sgte codigo es el que se ejecuta cuando ocurre el evento actionperformed de un boton
la intencion de este codigo es que se muestre en un Jtable unos productos dividios por categorias, en la base de datos se hallan almacenados todos los productos
la primera palabra del nombre del producto define la categoria a la que pertenece, es decir:
-arroz diana
-arroz roa
-arroz marfil
Conforman la categoria arroz, entonces cuando el usuario digite arroz en un jtextfield deberan aparecer en el Jtable los tres productos antes mencionados
para ello utilizo una instruccion en mysql: select * from Nombre_Base.Nombre_Schema where Nombre_Tabla Like "arroz%"
esta instruccion funciona cuando la uso en MySQL, pero cuando la trato de usar en java este lanza una excepcion de sintaxis
no se que hacer, por que funciona en MySQL y no en java?
aqui esta descrito el codigo(este fue hecho con el IDE NetBeans 5.5)
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
String url = "jdbc:mysql://127.0.0.1:3306/MySQL";
String user = "root";
String pass = "futbol";
//obtengo nombre de jtextfield en el frame
String nom = Entrada_BR.getText();
Connection con = DriverManager.getConnection(url, user, pass);
//la instruccion en comillas funciona directamente en MySQL pero no por medio de java
PreparedStatement st = con.prepareStatement("select * from digital_store.proudctos where Nombre Like arroz%");
ResultSet r = st.executeQuery();
int fila = 0;
//copiar cada fila de la tabla en el Jtable del frame
if(r.next()){
do{
Cuadro_Base.setValueAt(r.getString("Nombre"),fila,0);
Cuadro_Base.setValueAt(r.getString("Pcosto"),fila,1);
Cuadro_Base.setValueAt(r.getString("Pcontado"),fila,2);
Cuadro_Base.setValueAt(r.getString("Pfiado"),fila,3);
fila = fila + 1;
}while(r.next());
}else{
JOptionPane.showMessageDialog(null, "El Producto "+nom+" no se encontro "
+ "Asegurese de que lo ha escrito correctamente", "ADVERTENCIA", JOptionPane.WARNING_MESSAGE);
}
}catch(Exception e){
JOptionPane.showMessageDialog(null, "Conexion fallida" + " Servidor MySQL desconectado o"
+ " Ingreso mal los datos", "Error", JOptionPane.ERROR_MESSAGE);
System.out.print(e.toString());
Nombre_Prod.setText("");
}
La exepcion que este codigo genera es:
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%' at line 1
si pueden ayudarme les agradeceria mucho
gracias
Valora esta pregunta


0