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

时间:2015-12-04 23:26:20

标签: java mysql

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

私有类Handler_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 个答案:

答案 0 :(得分:0)

我相信你的错误在

String query3 =“INSERT INTO rssi(result)VALUE('”+ array +“')”;

你必须把 VALUES 而不是值

String query3 =“INSERT INTO rssi(result) VALUES ('”+ array +“')”;

修改

我明白了:

首先,您要将 i j 值一直替换为出现的最后一个值,并将最后一个值替换为数据库(并且我假设这不是主意)...以避免你必须把

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

进入While块...

其次......你正在创建新记录......如果你检查表中的数据......除了结果之外,所有列中的最后记录都将为空... 你必须更新每条记录,而不是INSERT新记录。

尝试使用以下代码:

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");

显然,在“SELECT primaryKey,a3,a4 FROM rssi”中,为主键列的名称更改 primaryKey