Java数据库和ResultSet

时间:2016-03-19 22:39:54

标签: java sql database class resultset

首先发布在这里,所以我希望我的礼仪是正确的。

在一个编程课程的项目上工作,我们已经给出了一些让事情变得有点尴尬的参数(因为我知道有更好的方法可以做到这一点)。

我创建了一个数据库,并填充了数据,我可以从中获取所需的数据,但我这样做的方式是笨重和垃圾。所以我正在寻找更好的方法。

我目前正在处理的两个类是StockData.class和CheckStock.class。

StockData.class是数据库处理程序......

我有以下内容:

    public static String getPrice(String key) {
        try {

            ResultSet res = stmt.executeQuery("SELECT * FROM StockDB WHERE stockID = '" + key + "'");
            if (res.next()) { // there is a result
                return res.getString(3);
            } else {
                return null;
            }
        } catch (SQLException e) {
            System.out.println(e);
            return null;
        }
    }

public static ResultSet getID() 
{
    try
        {
        ResultSet keyList = stmt.executeQuery("SELECT stockID FROM StockDB");
        {
        return keyList;
        }                
                    }
                catch (SQLException e)
            {
            System.out.println(e);
            return null;
            }

(每列还有其他类似的)

我在CheckStock中使用以下方法调用这些方法:

        key = "11";
        debug.append(" " + newline);
        debug.append("   " + StockData.getName(key));
        debug.append("   " + StockData.getPrice(key)); 
        debug.append("   " + StockData.getQuantity(key));

正如你所看到的那样,我正在输入我的stockID - 这是一个字符串..它不会使系统扩展(我必须手动添加一组全新的密钥用于任何新项目。

为了使用数据库提供我曾尝试使用以下

的密钥
          ResultSet stockIDList = StockData.getID();
          while (stockIDList.next())
               {
                key = (stockIDList.getNString(1));
                debug.append("   " + StockData.getName(key));
                debug.append("   " + StockData.getPrice(key)); 
                debug.append("   " + StockData.getQuantity(key));                  
               }

但是这会导致各种SQL错误。

我假设我错过了一些非常简单的事情,或者说有更好的方法。

我一直试图通过互联网和ResultSet上的oracle页面整天解决这个小问题,但我不能为我的生活解决为什么它不起作用。

提前感谢您的帮助。

Myranda

1 个答案:

答案 0 :(得分:0)

我(通过反复试验)找到了解决方法。

从我能看到的搜索结果来看,我应该使用最终的结果来结束查询,但是如果没有netBeans在整个地方投掷感叹号,我似乎无法让它们适合...... / p>

所以我为我查询的每个字段使用了一个单独的语句名称......

    public static double getPrice(String key) {
        try {
            Statement stmtPrice;
            stmtPrice = connection.createStatement();
            ResultSet res = stmtPrice.executeQuery("SELECT * FROM StockDB WHERE stockID = '" + key + "'");
            if (res.next()) { 
                return res.getDouble(3);
            } else {
                return 0;
            }
        } catch (SQLException e) {
            System.out.println(e);
            return 0;
        }
    }

    public static int getQuantity(String key) {
        try {
            Statement stmtQty;
            stmtQty = connection.createStatement();
            ResultSet res = stmtQty.executeQuery("SELECT * FROM StockDB WHERE stockID = '" + key + "'");
            if (res.next()) { 
                return res.getInt(4); 
                    } else {
                return 0;
            }
        } catch (SQLException e) {
            System.out.println(e);
            return 0;
        }
    }

然后使用以下

调用
        ResultSet stockIDList = StockData.getID();
        while (stockIDList.next())
            {
                key = (stockIDList.getString(1));
                stockID.append(" " + key + newline);
                stockDescription.append("   " + StockData.getName(key) + newline);
                stockPrice.append("   " + StockData.getPrice(key) + newline); 
                stockQuantity.append("   " + StockData.getQuantity(key) + newline);
                double price = StockData.getPrice(key);
                int quantity = StockData.getQuantity(key);
                double total = price * quantity;
                String stringTotal = String.valueOf(total);
                stockTotalValue.append(" " + stringTotal + newline);
            }

毫无疑问,有人会对我使用的笨重代码感到震惊,但它似乎正在完成这项工作,所以现在我会对非功能性笨重。

谢谢大家的时间。

Myranda