首先发布在这里,所以我希望我的礼仪是正确的。
在一个编程课程的项目上工作,我们已经给出了一些让事情变得有点尴尬的参数(因为我知道有更好的方法可以做到这一点)。
我创建了一个数据库,并填充了数据,我可以从中获取所需的数据,但我这样做的方式是笨重和垃圾。所以我正在寻找更好的方法。
我目前正在处理的两个类是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
答案 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