Intenté hacer que un componente de interfaz de usuario swing que tiene dos TextField uno tome el nombre del producto para el que devuelve el precio del producto presente en la base de datos. Hay algunos errores en el código, consulte alguna solución. el código es el siguiente:

       import javax.swing.*;
       import java.sql.*;
       import java.sql.*;
       import java.awt.event.*;
       import java.awt.*;
       class Swingui implements ActionListener
       {
       JFrame jf=new JFrame("PRODUCT DETAILS");
       JLabel jl1=new JLabel("Product:");
       JTextField jtf1=new JTextField();
       JTextField jtf2=new JTextField();
       JLabel jl2=new JLabel("Price:");
       JButton jb=new JButton("enter");
       Swingui()
       {
       jf.setSize(500,500);
       jf.setVisible(true);
       jf.setLayout(null);
       jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
       jl1.setBounds(50,70,100,30);
       jf.add(jl1);
       jtf1.setBounds(50,100,100,30);
       jf.add(jtf1);
       jl2.setBounds(50,150,100,30);
       jf.add(jl2);
       jb.setBounds(50,250,100,30);
       jf.add(jb);
       jtf2.setBounds(50,200,100,30);
       jf.add(jtf2);
       jb.addActionListener(this);}
       public static void main(String arg[])
       {new Swingui();}
       public void actionPerformed(ActionEvent ae){
       try 
       {
       Class.forName("com.mysql.cj.jdbc.Driver");
       String url="jdbc:mysql://localhost/product";
       Connection con=DriverManager.getConnection(url,"root","");
       Statement stmt=con.createStatement();
       String qry="select price from price where good='"+jtf1.getText().toString()+"'";
       ResultSet resultSet= stmt.executeQuery(qry);
         int price = resultSet.getInt("price");
       JLabel jl3=new JLabel();
       String str;
       str=String.valueOf(price);
       jl3.setText(str);
       jl3.setBounds(50,300,100,50);
       jf.add(jl3);
       }
       catch(Exception e)
       {e.printStackTrace();}
       }
       }

Los detalles de la base de datos MySQL son:

         database: product
         table : price
         columns are 
         good      price
         ==============
         gold10gm   35000
         dollar       78
-1
Om Khard 24 jun. 2020 a las 18:59

2 respuestas

Agregue el número de puerto localhost en la URL. ResultSet mantiene un cursor a la fila actual de datos recuperados. E inicialmente, el cursor apuntará antes de la fila actual, por lo que no puede obtener directamente los resultados del conjunto de resultados. Intenta iterarlo antes de acceder a los valores.

ResultSet rs = stmt.executeQuery(query);
while(rs.next())
    rs.getInt("price");
0
AISHWARYA M 24 jun. 2020 a las 16:44
   String qry="select * from price where good= ? ";
   PreparedStatement stmt=con.prepareStatement(qry);
   stmt.SetString(jtf1.getText().toString);
   stmt.execute();
   
   ResultSet resultSet= stmt.getResultSet();
   while (resultSet.next()) {
     int price = resultSet.getInt("price");
   }

   JLabel jl3=new JLabel();
   String str;
   str=Integer.toString(price);
   jl3.setText(str);
   stmt.close(); // close the prepare statement if you don't need it further
0
Ngnotchoue Tiam 24 jun. 2020 a las 17:12