Java Oracle JDBC SELECT 语句

问题描述 投票:0回答:2

我正在 Eclipse 中使用 Java 练习 Oracle JDBC。我了解了如何通过使用

SELECT * from product
迭代表格的每一行来输出
.next()
。我正在努力输出这个声明:

SELECT pid, pname 
FROM product 
WHERE price>20

这是我的代码:

import java.sql.*;

public class intro {

    /**
     * @param args
     */
    public static void main(String[] args)
    {
    //  throws SQLException
        
        //initiazlie the connection
        
        Connection con=null;
        
        try //try connection to database
        {
            //load driver
            Class.forName("oracle.jdbc.OracleDriver");
            System.out.println("Oracle JDBC driver loaded ok.");
            con=DriverManager.getConnection("jdbc:oracle:thin:test/123321@localhost:1521:orcl");
            System.out.println("Connect with @oracle:1521:orcl");
            
            //declaring statement
            Statement stmt = con.createStatement();
            
            String dropProductTable="drop table product cascade constraints";
            
            //create string
            String createProductTable="CREATE TABLE product(" +
             "pid number," +
             "pname CHAR(20)," +
             "price number," +
             "PRIMARY KEY (pid)" +
             ")"; //do not add the semicolon(;) after closing the parenthesis.
            
            
            /*drop table */
            stmt.executeUpdate(dropProductTable);
            
            
            //execute the create statement
            stmt.executeUpdate(createProductTable);//execure the create statement
            
            //create string that holds the insert statement
            String insertIntoProduct="INSERT INTO product VALUES (1,'Pepsi',10)";
            String insertIntoProduct1="INSERT INTO product VALUES (2,'Fanta',20)";
            String insertIntoProduct2="INSERT INTO product VALUES (3,'Mirinda',30)";
            String insertIntoProduct3="INSERT INTO product VALUES (4,'Gum',5)";
            String updatePrice="UPDATE product set price=55 where price=20";


            
            //stmt.executeUpdate(insertIntoProduct);
            stmt.executeUpdate(insertIntoProduct);
            stmt.executeUpdate(insertIntoProduct1);
            stmt.executeUpdate(insertIntoProduct2);
            stmt.executeUpdate(insertIntoProduct3);

           //update statement
            stmt.executeUpdate(updatePrice);
            

            
            //save the select statement in a string
            String selectStat="SELECT * FROM product";
            String selectProduct="SELECT pid, pname from product where price>20";
            //stmt.executeUpdate(selectStat);
            
            //create a result set
            ResultSet rows = stmt.executeQuery(selectStat);
            ResultSet rows1= stmt.executeQuery(selectProduct);
            
            //stmt.executeQuery(selectStat);
            
            
            int count=0;
            while (rows.next()) {
                count+=1;
                String productNumber = rows.getString("pid");
                String productName = rows.getString("pname");
                String productPrice = rows.getString("price");
                System.out.println("Row #:"+count);
                System.out.println("Product#: "+productNumber);
                System.out.println("Product Name: "+productName);
                System.out.println("Price: "+productPrice);
            
                }
            
            int count1=0;
            while (rows1.next()) {
                count1+=1;
                String productNumber = rows1.getString("pid");
                String productName = rows1.getString("pname");
                String productPrice = rows1.getString("price");
                System.out.println("Row #:"+count);
                System.out.println("Product#: "+productNumber);
                System.out.println("Product Name: "+productName);
                System.out.println("Price: "+productPrice);
            
                }
            
            con.close();
            
        }
                catch (Exception e)
                {
                    System.err.println("Exception:"+e.getMessage());
                }
                
        
        }
        
    }

当我尝试输出

selectProduct
变量时,出现此错误:

异常:列名无效

这是我得到的输出:

Oracle JDBC driver loaded ok.
Connect with @oracle:1521:orcl
Row #:0
Product#: 2
Product Name: Fanta               
Price: 55
Row #:0
Product#: 3
Product Name: Mirinda             
Price: 30
java sql oracle jdbc
2个回答
10
投票

在您的 SELECT 中,您只会得到“pid”和“pname”:

String selectProduct="SELECT pid, pname from product...

但是你试图使用一个不在你的 SELECT 中的字段:

String productPrice = rows1.getString("price");

尝试在您的 SELECT 子句中加入“价格”。


7
投票

你必须更换

SELECT pid, pname from product where price>20;

SELECT pid, pname, price from product where price>20;
© www.soinside.com 2019 - 2024. All rights reserved.