【发布时间】:2022-01-07 12:53:19
【问题描述】:
我在 MySQL 工作台上创建了一个查询,它运行良好,但是当我尝试在 Java 上显示该查询时它不起作用。我是新手,并且使用的是经典模型 Db。以下查询适用于工作台:
select c.customerNumber, c.customerName,
o.orderNumber,
d.productCode, d.quantityOrdered, d.priceEach, (d.quantityOrdered * d.priceEach) as totalPrice,
e.employeeNumber, e.lastName, ((d.quantityOrdered * d.priceEach)*0.01) as commission
from customers as c inner join orders as o on c.customerNumber=o.customerNumber inner join
orderdetails as d on o.orderNumber=d.orderNumber
inner join employees as e on c.salesRepEmployeeNumber=e.employeeNumber group by productCode;
'486', 'Motor Mint Distributors Inc.', '10109', 'S18_1129', '26', '117.48', '3054.48', '1323', 'Vanauf', '30.5448'
这是我的 Java 代码:
public void query() {
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(urlConn, user, passWord);
pdState = conn.prepareStatement("SELECT c.customerNumber, c.customerName,o.orderNumber,"
+ " d.productCode, d.quantityOrdered, d.priceEach,(d.quantityOrdered * d.priceEach) as totalPrice,"
+ " e.employeeNumber, e.lastName,((d.quantityOrdered * d.priceEach)*0.01) as commission"
+ " FROM customers as c inner join orders as o on c.customerNumber=o.customerNumber"
+ " inner join orderdetails as d on o.orderNumber=d.orderNumber"
+ " inner join employees as e on c.salesRepEmployeeNumber=e.employeeNumbergroup by productCode");
rSet = pdState.executeQuery();
ResultSetMetaData rsmd = rSet.getMetaData();
c = rsmd.getColumnCount();
DefaultTableModel dtModel = (DefaultTableModel) tblQuery.getModel();
dtModel.setRowCount(0);
while (rSet.next()) {
@SuppressWarnings("UseOfObsoleteCollectionType")
Vector vector = new Vector();
for (int i = 1; i <= c; i++) {
vector.add(rSet.getString("customerNumber"));
vector.add(rSet.getString("customerName"));
vector.add(rSet.getString("orderNumber"));
vector.add(rSet.getString("productCode"));
vector.add(rSet.getString("quantityOrdered"));
vector.add(rSet.getString("priceEach"));
vector.add(rSet.getString("totalPrice"));
vector.add(rSet.getString("employeeNumber"));
vector.add(rSet.getString("lastName"));
vector.add(rSet.getString("commission"));
}//end of for loop
dtModel.addRow(vector);
}//end of while loop
} catch (ClassNotFoundException | SQLException e) {
e.getMessage();
}//end of try and catch block
}//end of query
【问题讨论】:
-
e.getMessage();没有做任何有用的事情。它从堆栈跟踪中得到一个缩写的String然后 .. 绝对 nothing 用它。最好使用e.printStackTrace();- 这将为System.err流提供有用的堆栈跟踪。