如何将sql数据库中的列总和显示到Java应用程序中?

如何将sql数据库中的列总和显示到Java应用程序中?,java,mysql,sql,swing,netbeans,Java,Mysql,Sql,Swing,Netbeans,我有一个数据库,它将我的项目记录存储在一个名为“数量”的列中,我希望能够检索这个“数量”数量并显示在我的java应用程序中。如果你看到我下面的代码,你可以看到我正试图从我的数据库中打印出那个金额,但它不起作用。当我运行应用程序时,运行的总是捕获,而不是尝试。我不确定我是否没有正确地编写SQL代码,但这只是我的猜测,如果您知道如何解决此问题,请务必让我知道,谢谢 private void initComponents() { private String sum; try {

我有一个数据库,它将我的项目记录存储在一个名为“数量”的列中,我希望能够检索这个“数量”数量并显示在我的java应用程序中。如果你看到我下面的代码,你可以看到我正试图从我的数据库中打印出那个金额,但它不起作用。当我运行应用程序时,运行的总是捕获,而不是尝试。我不确定我是否没有正确地编写SQL代码,但这只是我的猜测,如果您知道如何解决此问题,请务必让我知道,谢谢

private void initComponents() {
private String sum;


try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con1 = DriverManager.getConnection("jdbc:mysql://localhost/restock", "root", "password");
            String template = "SELECT SUM(quantity) as sumquantity FROM buysupply WHERE itemtype IN ('Disposable mask', 'Clothed mask', 'N95 mask')";
            PreparedStatement pst = con1.prepareStatement(template);
            ResultSet rs = pst.executeQuery();
            sum = rs.getString("sumquantity");
            System.out.print("############################" + sum);
                  
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(stock.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(stock.class.getName()).log(Level.SEVERE, null, ex);
        }




}
关于您的信息,错误如下:

Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
Aug 06, 2020 1:22:03 AM pleasework.stock initComponents
SEVERE: null
java.sql.SQLException: Before start of result set
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)
    at com.mysql.cj.jdbc.result.ResultSetImpl.checkRowPos(ResultSetImpl.java:492)
    at com.mysql.cj.jdbc.result.ResultSetImpl.getString(ResultSetImpl.java:845)
    at com.mysql.cj.jdbc.result.ResultSetImpl.getString(ResultSetImpl.java:863)
    at pleasework.stock.initComponents(stock.java:92)
    at pleasework.stock.<init>(stock.java:30)
    at pleasework.stock$16.run(stock.java:823)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
加载类'com.mysql.jdbc.Driver'。这是不赞成的。新的驱动程序类是'com.mysql.cj.jdbc.driver'。驱动程序通过SPI自动注册,通常不需要手动加载驱动程序类。
2020年8月6日凌晨1:22:03 pleasework.stock.com
严重:空
java.sql.SQLException:在结果集开始之前
位于com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
位于com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
位于com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
位于com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)
位于com.mysql.cj.jdbc.result.ResultSetImpl.checkRowPos(ResultSetImpl.java:492)
位于com.mysql.cj.jdbc.result.ResultSetImpl.getString(ResultSetImpl.java:845)
位于com.mysql.cj.jdbc.result.ResultSetImpl.getString(ResultSetImpl.java:863)
在pleasework.stock.initComponents上(stock.java:92)
在pleasework.stock.(stock.java:30)
在pleasework.stock$16.run(stock.java:823)
在java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)中
位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
在java.awt.EventQueue.access$500(EventQueue.java:97)
在java.awt.EventQueue$3.run(EventQueue.java:709)
在java.awt.EventQueue$3.run(EventQueue.java:703)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
位于java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
在java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)中
位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:105)
位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
在java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

您必须调用
rs.next()
将第一行加载到结果集中,然后才能使用
rs.getString(“…”)

您还应该使用
rs.next()
检查是否收到结果。例如:

ResultSet rs = pst.executeQuery();
if (rs.next()) {
    sum = rs.getString("sumquantity");
    System.out.print("############################" + sum);
} else {
    System.out.print("Query didn't return any results");
}

另一件值得注意的事情是:使用
getString()
获取数值。您可能想使用
rs.getInt()
rs.getDouble()
来代替。

会出现什么错误?请在你的问题中添加错误和stacktrace。我刚刚再次编辑了我的帖子,你现在可以看到错误了
ResultSet rs = pst.executeQuery();
if (rs.next()) {
    sum = rs.getString("sumquantity");
    System.out.print("############################" + sum);
} else {
    System.out.print("Query didn't return any results");
}