Hola buenas, tengo un problemilla con un programa de Java que como estoy aun aprendiendo no consigo sacarlo.
El problema es que tengo una base de datos en MySQL y quiero recoger informacion, agregar y quitar cosas de la base de datos desde Java, pero el problema viene cuando intento consultar los datos de la base de datos que tengo las siguientes columnas:
Codigo Descripcion Precio Stock
y yo quiero que me busque una descripcion que le ponga yo y me devuelva el precio y el stock pero nose pq la parte donde pongo que lo busque en la tabla solo funciona con numeros no con caracteres, solo funciona si le pongo que me busque "codigo" y me devuelve el precio y stock y nose como solucionarlo para que pueda meterle yo la descripcion, tal como pongo en el la parte del programa.
Consultar = new JButton("Consultar");
Consultar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
Resultado.setText("");
tf2.setText("No existe dicho Articulo"); // Articulo
tf3.setText("0"); // Precio
tf4.setText("0"); // Stock
try {
Connection conexion=DriverManager.getConnection("jdbc:mysql://localhost/tienda","root" ,"");
Statement comando=conexion.createStatement();
ResultSet registro = comando.executeQuery("SELECT `Descripcion`, `Precio`, `Stock` FROM `articulos` WHERE `Descripcion`="+tf1.getText());
if (registro.next()==true) {
tf2.setText(registro.getString("Descripcion"));
tf3.setText(registro.getString("Precio"));
tf4.setText(registro.getString("Stock"));
Resultado.setText("Articulo encontrado");
} else {
Resultado.setText("No existe un artículo con dicha descripcion");
}
conexion.close();
} catch(SQLException ex){
setTitle(ex.toString());
}
}
});
El codigo completo es el siguiente:
package Tienda;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Tienda extends JFrame
{
private JPanel contenido;
private JTextField tf1; // tf1 es texto a consultar
private JTextField tf2; // tf2 es articulo consultado
private JTextField tf3; // tf3 es precio consultado
private JTextField tf4; // tf4 es stock consultado
private JTextField tf5; // tf5 es el articulo a agregar
private JTextField tf6; // tf6 es el precio a agregar
private JTextField tf7; // tf7 es la cantidad a agregar
private JTextField tf8; // tf8 es el articulo a eliminar
private JTextField tf9; // tf10 es la cantidad a eliminar
private JButton Consultar;
private JButton Agregar;
private JLabel ConsultarCodigo;
private JLabel AgregarCodigo;
private JLabel EliminarCodigo;
private JLabel Resultado;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Tienda frame = new Tienda();
frame.setSize(570, 450);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public Tienda() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
contenido = new JPanel();
contenido.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contenido);
contenido.setLayout(null);
// tf1.setEditable(false); para decir que el texto no se puede editar
//
// CONSULTAR
//
ConsultarCodigo = new JLabel("Ingrese el articulo a Consultar:");
ConsultarCodigo.setBounds(60, 30, 243, 14);
contenido.add(ConsultarCodigo);
JLabel DescripcionDelArtculo = new JLabel("Consultar artículo:");
DescripcionDelArtculo.setBounds(23, 65, 193, 14);
contenido.add(DescripcionDelArtculo);
tf1 = new JTextField();
tf1.setBounds(140, 63, 120, 20);
contenido.add(tf1);
tf1.setColumns(10);
// Articulo
JLabel Articulo = new JLabel("Artículo:");
Articulo.setBounds(293, 37, 95, 14);
contenido.add(Articulo);
tf2 = new JTextField();
tf2.setBounds(380, 32, 150, 20);
contenido.add(tf2);
tf2.setColumns(10);
tf2.setEditable(false);
// Precio
JLabel Precio = new JLabel("Precio:");
Precio.setBounds(293, 77, 95, 14);
contenido.add(Precio);
tf3 = new JTextField();
tf3.setBounds(380, 72, 150, 20);
contenido.add(tf3);
tf3.setColumns(10);
tf3.setEditable(false);
// Stock
JLabel Stock = new JLabel("Stock:");
Stock.setBounds(293, 117, 95, 14);
contenido.add(Stock);
tf4 = new JTextField();
tf4.setBounds(380, 112, 150, 20);
contenido.add(tf4);
tf4.setColumns(10);
tf4.setEditable(false);
//
// AGREGAR
//
AgregarCodigo = new JLabel("Agregar nuevo Artículo:");
AgregarCodigo.setBounds(60, 170, 243, 14);
contenido.add(AgregarCodigo);
// Agregar Articulo
JLabel ArticuloAdd = new JLabel("Artículo:");
ArticuloAdd.setBounds(23, 210, 95, 14);
contenido.add(ArticuloAdd);
tf5 = new JTextField();
tf5.setBounds(110, 210, 150, 20);
contenido.add(tf5);
tf5.setColumns(10);
// Agregar Precio
JLabel PrecioAdd = new JLabel("Precio:");
PrecioAdd.setBounds(23, 250, 95, 14);
contenido.add(PrecioAdd);
tf6 = new JTextField();
tf6.setBounds(110, 250, 150, 20);
contenido.add(tf6);
tf6.setColumns(10);
// Agregar Stock
JLabel CantidadAdd = new JLabel("Cantidad:");
CantidadAdd.setBounds(23, 290, 95, 14);
contenido.add(CantidadAdd);
tf7 = new JTextField();
tf7.setBounds(110, 290, 150, 20);
contenido.add(tf7);
tf7.setColumns(10);
//
// ELIMINAR
//
EliminarCodigo = new JLabel("Eliminar Artículo:");
EliminarCodigo.setBounds(360, 170, 243, 14);
contenido.add(EliminarCodigo);
// Eliminar Articulo
JLabel ArticuloDel = new JLabel("Artículo:");
ArticuloDel.setBounds(293, 225, 95, 14);
contenido.add(ArticuloDel);
tf8 = new JTextField();
tf8.setBounds(380, 225, 150, 20);
contenido.add(tf8);
tf8.setColumns(10);
// Eliminar Cantidad
JLabel CantidadDel = new JLabel("Cantidad:");
CantidadDel.setBounds(293, 275, 95, 14);
contenido.add(CantidadDel);
tf9 = new JTextField();
tf9.setBounds(380, 275, 150, 20);
contenido.add(tf9);
tf9.setColumns(10);
Resultado = new JLabel("");
Resultado.setBounds(150, 380, 400, 14);
contenido.add(Resultado);
cargarDriver();
// Boton Consultar
Consultar = new JButton("Consultar");
Consultar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
Resultado.setText("");
tf2.setText("No existe dicho Articulo");
tf3.setText("0");
tf4.setText("0");
try {
Connection conexion=DriverManager.getConnection("jdbc:mysql://localhost/tienda","root" ,"");
Statement comando=conexion.createStatement();
ResultSet registro = comando.executeQuery("SELECT `Descripcion`, `Precio`, `Stock` FROM `articulos` WHERE `Descripcion`="+tf1.getText());
if (registro.next()==true) {
tf2.setText(registro.getString("Descripcion"));
tf3.setText(registro.getString("Precio"));
tf4.setText(registro.getString("Stock"));
Resultado.setText("Articulo encontrado");
} else {
Resultado.setText("No existe un artículo con dicha descripcion");
}
conexion.close();
} catch(SQLException ex){
setTitle(ex.toString());
}
}
});
Consultar.setBounds(45, 100, 193, 30);
contenido.add(Consultar);
// Boton de Agregar
Agregar = new JButton("Añadir articulo/s");
Agregar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
Resultado.setText("");
try {
Connection conexion=DriverManager.getConnection("jdbc:mysql://localhost/tienda","root" ,"");
Statement comando=conexion.createStatement();
comando.executeUpdate("insert into articulos(Descripcion,Precio,Stock) values ('"+tf5.getText()+"',"+tf6.getText()+","+tf7.getText()+")");
conexion.close();
Resultado.setText("Se ha/n añadido el/los articulo/s");
tf5.setText("");
tf6.setText("");
tf7.setText("");
} catch(SQLException ex){
setTitle(ex.toString());
}
}
});
Agregar.setBounds(40, 330, 193, 30);
contenido.add(Agregar);
// Boton de Eliminar
JButton Eliminar = new JButton("Eliminar articulo");
Eliminar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
Resultado.setText("");
try {
Connection conexion=DriverManager.getConnection("jdbc:mysql://localhost/tienda","root" ,"");
Statement comando=conexion.createStatement();
int cantidad = comando.executeUpdate("delete from articulos where descripcion="+tf8.getText());
if (cantidad==1) {
tf8.setText("");
tf9.setText("");
Resultado.setText("Se borro el artículo con dicha descripción");
} else {
Resultado.setText("No existe un artículo con dicha descripción");
}
conexion.close();
} catch(SQLException ex){
setTitle(ex.toString());
}
}
});
Eliminar.setBounds(320, 330, 193, 30);
contenido.add(Eliminar);
cargarDriver();
}
private void cargarDriver() {
try {
Class.forName("com.mysql.jdbc.Driver");
}catch(Exception ex) {
setTitle(ex.toString());
}
}
}
(recordar agregar mysql connector java si lo probais)
Gracias