Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 代码中是否存在导致异常的问题?_Java_Sql - Fatal编程技术网

Java 代码中是否存在导致异常的问题?

Java 代码中是否存在导致异常的问题?,java,sql,Java,Sql,我正在开发一个简单的应用程序,可以用来创建啤酒配方。该应用程序接收存储在数据库中的特定值,并使用数学公式和数量(用户输入)来计算啤酒规格 当我运行这段代码(即“计算”按钮下的代码)时,我得到了很多异常,其中主要是java.awt异常、javax.swing异常和一些SQL异常。列出的变量是正确的,并且变量的拼写没有键入错误 private void Calculate_BrewActionPerformed(java.awt.event.ActionEvent evt) {

我正在开发一个简单的应用程序,可以用来创建啤酒配方。该应用程序接收存储在数据库中的特定值,并使用数学公式和数量(用户输入)来计算啤酒规格

当我运行这段代码(即“计算”按钮下的代码)时,我得到了很多异常,其中主要是java.awt异常、javax.swing异常和一些SQL异常。列出的变量是正确的,并且变量的拼写没有键入错误

private void Calculate_BrewActionPerformed(java.awt.event.ActionEvent evt) {                                               
    // TODO add your handling code here:
    nameBrew = jTextField1.getText();
    Connection connFerm = null;
    Connection connHops = null;
    try {
        vols = Float.parseFloat(jTextField2.getText());
    } 
    catch (NumberFormatException e) {
        JOptionPane.showMessageDialog(null, "Enter a valid number...");
    }
    fermone = (String) jComboBox1.getSelectedItem();        
    try {
        fermmass1 = Float.parseFloat(jTextField6.getText());
    } 
    catch (NumberFormatException e) {
        JOptionPane.showMessageDialog(null, "Enter a valid number...");
    }       
    hop1 = (String) jComboBox9.getSelectedItem(); 

    try {
        hopmass1 = Float.parseFloat(jTextField10.getText());            
    }
    catch (NumberFormatException e) {
        JOptionPane.showMessageDialog(null, "Enter a valid number...");
    }
    //...............................................................................
    try {            
        connFerm = DriverManager.getConnection("jdbc:mysql://localhost:3306/fermentable_info", "root", "nerdswonka");
    } catch (SQLException ex) {
        Logger.getLogger(Create_Page.class.getName()).log(Level.SEVERE, null, ex);
    }
    try {
        connHops = DriverManager.getConnection("jdbc:mysql://localhost:3306/hops_info", "root", "nerdswonka");
    } catch (SQLException ex) {
        Logger.getLogger(Create_Page.class.getName()).log(Level.SEVERE, null, ex);
    }
    //TODO add your OG calculation code here:
    String queryppg = "SELECT ppg_value INTO "+ppgval1+" FROM fermentable_info WHERE name=?";
    PreparedStatement pstFerm = null;
    ResultSet rsFerm = null; 

    try {
        pstFerm = connFerm.prepareStatement(queryppg);
        pstFerm.setString(1, jComboBox1.getSelectedItem().toString());
        rsFerm = pstFerm.executeQuery();
    } catch (SQLException ex) {
        Logger.getLogger(Create_Page.class.getName()).log(Level.SEVERE, null, ex);
    }
    ogval = (float) (((0.80*((ppgval1*(fermmass1/vols))))/1000)+1);
    jTextField9.setText(Float.toString(ogval));

    //TODO add your SRM calculation code here:
    String querylov = "SELECT lovibond INTO "+lovval+" FROM fermentable_info WHERE name=?";

    try {
        pstFerm = connFerm.prepareStatement(querylov);
        pstFerm.setString(1, jComboBox1.getSelectedItem().toString());
        rsFerm = pstFerm.executeQuery();
    }
    catch (SQLException ex) {
        Logger.getLogger(Create_Page.class.getName()).log(Level.SEVERE, null, ex);
    }
    srmval = (int) ((1.3546*lovval)-0.76);
    jTextField4.setText(Integer.toString(srmval));

    //TODO add your IBU calculation code here:
    String queryaa = "SELECT lovibond INTO "+aaval+" FROM hops_info WHERE name=?";

    try {
        pstFerm = connHops.prepareStatement(queryaa);
        pstFerm.setString(1, jComboBox9.getSelectedItem().toString());
        rsFerm = pstFerm.executeQuery();
    }
    catch (SQLException ex) {
        Logger.getLogger(Create_Page.class.getName()).log(Level.SEVERE, null, ex);
    }
    aapercent = (aaval/hopmass1);
    ibuval = (float) (0.8*((aapercent/100)*hopmass1)/vols);
    jTextField5.setText(Float.toString(ibuval));

    //TODO add your ABV calculation code here:
    abvval = (float) ((ogval-1.015)*131.25);
    jTextField3.setText(Float.toString(abvval));

    //TODO add your SQL insertion code here:
    Connection connSql = null;
    try {
        connSql = DriverManager.getConnection("jdbc:mysql://localhost:3306/saved_recipes", "root", "nerdswonka");
    } catch (SQLException ex) {
        Logger.getLogger(Create_Page.class.getName()).log(Level.SEVERE, null, ex);
    }
    String sqlIn = "INSERT INTO saved_recipes (name, og, abv, srm, ibu, volbatch)" + 
    "VALUES (?, ?, ?, ?, ?, ?)";
    try {
        pstFerm = connSql.prepareStatement(sqlIn);
        pstFerm.setString(1, nameBrew);
        pstFerm.setFloat(2, ogval);
        pstFerm.setFloat(3, abvval);
        pstFerm.setInt(4, srmval);
        pstFerm.setFloat(5, ibuval);
        pstFerm.setFloat(6, vols);
        pstFerm.executeUpdate();
    } catch (SQLException ex) {
        Logger.getLogger(Create_Page.class.getName()).log(Level.SEVERE, null, ex);
    }       
}      
我收到的任何输入的输出如下: -OG:1.0 -IBU:0.0-SRM:0-ABV:-1.96875 例外情况如下:

java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '0 FROM fermentable_info WHERE name='American Choco 350L'' at line 1
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeQuery(ClientPreparedStatement.java:1003)
at brewing_system.ia.Create_Page.Calculate_BrewActionPerformed(Create_Page.java:437)
at brewing_system.ia.Create_Page.access$100(Create_Page.java:17)
at brewing_system.ia.Create_Page$2.actionPerformed(Create_Page.java:280)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6525)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6290)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4881)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
at java.awt.Container.dispatchEventImpl(Container.java:2278)
at java.awt.Window.dispatchEventImpl(Window.java:2750)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:751)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:702)
at java.awt.EventQueue$3.run(EventQueue.java:696)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:724)
at java.awt.EventQueue$4.run(EventQueue.java:722)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:721)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
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)
简短回答:向数据库发送SELECT,使用返回的
ResultSet
方法获取值。类似(使用虚构的列和表名、缺少错误处理、关闭等):

显然,我会使用
try with resource
并捕获异常。。。在没有IDE或测试的情况下编写的代码可能有错误,无法工作


还表示要访问教程

异常错误消息说明了什么?“一些例外”几乎可以是任何东西。我把它们添加到我的edits@VittalKamath使用@标记评论中的某人,以便通知他。不管怎样,你真的试过读取错误吗?第一行写得很清楚<代码>您的SQL语法有错误…。再次检查查询。您会意识到,
从name=?
的可发酵_信息中将ppg_值选择到“+ppgval1+”中有错误的语法。@GeorgeZ。我所有的疑问都是这样的。对不起,我是新来的。您能告诉我语法方面我做错了什么吗?我相信这里有一个误解:JDBC不会将结果写入给定变量(例如,
pgpval1
),而
写入
关键字/JDBC则不起作用。Java将创建以下字符串
从名为?
的可发酵的\u信息中将prg\u值选择为0(假设变量的实际值为零),并将其发送到th数据库-这不是有效的SQL语句
String sql = "SELECT value FROM table WHERE check = ?";

Connection conn = DriverManger.createConnection (...)
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, condition);

ResultSet rset = stmt.executeQuery();
if (rset.next()) {   // or, for multiple results: while(rset.next()) {
    String result = rset.getString("value");
    // TODO use `result`
}  // else for error mesage (not found)