使用java从mysql数据库读取数据

使用java从mysql数据库读取数据,java,mysql,sql,swing,netbeans-7,Java,Mysql,Sql,Swing,Netbeans 7,首先,我使用jTextFields从用户那里读取产品名称和产品数量。对于该产品,我使用sql查询从数据库中读取产品id和价格。但在下面的代码中,我在jtextField中显示了产品价格,但在运行tha文件时,我成功地执行了查询,但在jtextField中没有得到任何结果 请检查sql查询和结果集使用, 表名为“item”,数据库名为“myshop”, 我全局声明了变量,这段代码在jButton的“ActionPeformed”部分中 这条线应该是 String sql="SELECT id,pr

首先,我使用jTextFields从用户那里读取产品名称和产品数量。对于该产品,我使用sql查询从数据库中读取产品id和价格。但在下面的代码中,我在jtextField中显示了产品价格,但在运行tha文件时,我成功地执行了查询,但在jtextField中没有得到任何结果

请检查sql查询和结果集使用, 表名为“item”,数据库名为“myshop”, 我全局声明了变量,这段代码在jButton的“ActionPeformed”部分中

这条线应该是

String sql="SELECT id,price FROM item WHERE item.name='item_name'";
像这样

String sql="SELECT id,price FROM item WHERE item.name='"+item_name+"'";

您需要将item_name作为参数并加引号

String sql="SELECT id,price FROM item WHERE item.name='"+ item_name+"'";

使用
PreparedStatement
,这样您就不必担心对所有变量进行定界:

String sql="SELECT id, price FROM item WHERE item.name = ?";
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setString( 1, item_name);
ResultSet rs = stmt.executeQuery();

然后,准备好的语句将用正确的引号替换变量。

尝试使用

使用PreparedStatement也可以尝试以下代码

Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/myshop","root","mysql");
            PreparedStatement pt=con.prepareStatement("SELECT id,price FROM item WHERE item.name=?");
            pt.setString(1,"item_name");
          ResultSet rs;
           if(pt.execute())
           {
                rs=pt.getResultSet();
               JOptionPane.showMessageDialog(this, "succes","executed query",JOptionPane.PLAIN_MESSAGE);
          }
           else {
    System.err.println("select failed");
           }

        while(rs.next()){
    item_id=rs.getInt(1);
    item_price=rs.getInt(2);
    jTextField1.setText(""+item_price);//displaying product price in a jTextField1
    jTextField2.setText(""+item_id);//displaying product id in a jTextField2    

        }

String sql=“SELECT id,price FROM item WHERE id=“+item\u no;请尝试在没有sql注入的情况下提供答案item.name=”“+item\u name+””这将导致sql注入,也可以看到Aniket关于sql注入的回答。尽管他问我做错了什么。但是您仍然需要提供更好的代码,以便OP也能理解编码的良好实践-1,这个答案是在3分钟前给出的。没有必要在论坛上重复回答。
String sql="SELECT id,price FROM item WHERE item.name=?";  
PreapredStatement ps = con.prepareStatement(sql);
ps.setString(1,item_name); 
ResultSet rs = ps.executeQuery(); 
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/myshop","root","mysql");
            PreparedStatement pt=con.prepareStatement("SELECT id,price FROM item WHERE item.name=?");
            pt.setString(1,"item_name");
          ResultSet rs;
           if(pt.execute())
           {
                rs=pt.getResultSet();
               JOptionPane.showMessageDialog(this, "succes","executed query",JOptionPane.PLAIN_MESSAGE);
          }
           else {
    System.err.println("select failed");
           }

        while(rs.next()){
    item_id=rs.getInt(1);
    item_price=rs.getInt(2);
    jTextField1.setText(""+item_price);//displaying product price in a jTextField1
    jTextField2.setText(""+item_id);//displaying product id in a jTextField2    

        }