有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

mysql如何使用java在SQL中划分两列?

[http://i.stack.imgur.com/mCdLW.png]i我是java的初学者。。。。。我使用GUI制作了一个按钮,从SQL中的一个表中获取两列,然后我想将它们分割,并将结果放入同一个表中的一个新列中,我成功地建立了连接并创建了新列,我发现了一个代码,它帮助我获取了这两个列,并对它们进行了操作,然后将其放回同一个表中,但当我打开SQL时,我发现了该列,但它只包含“NULL”。。。。。当我运行我的代码时,它不会给我任何错误,还有我的按钮:

私有类处理程序\u c实现ActionListener{

    public void actionPerformed(ActionEvent arg0) {

        try{
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3307/database_vf","root","");
            conn.setAutoCommit(false);

            Statement stmt1 = null;
            stmt1= conn.createStatement();
            String sql1 = "Alter table Rssi Add result double";
            stmt1.executeUpdate(sql1);
            PreparedStatement pst1 = null;
            //Row row;
            //Statement stmt11 = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);

            double i,j;
            double array=0;
            ResultSet rs = stmt1.executeQuery("SELECT a3, a4 FROM rssi");
            while (rs.next()) {

                i= rs.getInt("a3");
                j= rs.getInt("a4");
                if(j==0){array=0;}
                else{array=((i/(j/10))-112);}

            }

             String query3="INSERT INTO rssi (result) VALUE ('"+array+"')";
             pst1 = (PreparedStatement) conn.prepareStatement(query3);
             pst1.execute();


            conn.commit();
            conn.close();
            System.out.println("Success insert result to mysql table");
        }

        catch(ClassNotFoundException e){
            System.out.println(e);
        }catch(SQLException ex){
            System.out.println(ex);
        }

    }

共 (1) 个答案

  1. # 1 楼答案

    我相信你的错误是有道理的

    String query3=“插入rssi(结果)值(“+array+”)”

    您必须输入而不是值

    字符串query3=“插入rssi(结果)值(“+array+”)”

    编辑

    我明白了:

    首先,您一直在用出现的最后一个值替换ij值,并在最后一个值之后进入数据库(我想这不是想法)。。。为了避免这种情况,你必须

    String query3="INSERT INTO rssi (result) VALUE ('"+array+"')";
    pst1 = (PreparedStatement) conn.prepareStatement(query3);
    pst1.execute();
    

    进入While区块

    其次。。。您正在创建新记录。。。如果您检查表中的数据。。。最后的记录在所有列中都将为空,结果中除外。。。 您必须更新每个记录,而不是插入新记录

    请像这样尝试您的代码:

    int recordId;
    double i,j;
    double array=0;
    ResultSet rs = stmt1.executeQuery("SELECT primaryKey, a3, a4 FROM rssi");
    while (rs.next()) {
        recordId = rs.getInt("primaryKey");
        i= rs.getInt("a3");
        j= rs.getInt("a4");
        if(j==0){
            array=0;
        }else{
            array=((i/(j/10))-112);
        }
        String query3="UPDATE rssi set result ="+array+" WHERE primaryKey = "+recordId;
        pst1 = (PreparedStatement) conn.prepareStatement(query3);
        pst1.execute();
    
    }
    
    conn.commit();
    conn.close();
    System.out.println("Success insert result to mysql table");
    

    显然,在“从rssi中选择primaryKey、a3、a4”中,更改了primaryKey列的名称