将变量值从UI传递给操作侦听器

时间:2015-08-21 03:48:47

标签: java

我正在努力学习Java,所以如果这是一个菜鸟问题我会道歉。在此问这个问题之前我已经研究了很多。我很感激你的时间和指导。

我写了一个简单的应用程序,我要求用户输入" Serverprocessorspeed"," RAM"等信息。等

我需要用户在字段" Serverprocessorspeed"," RAM"中输入的信息。被传递给Action Listener。这些值又被发送到数据库服务器。

Cloudbroker() {
    f1 = new JFrame("Cloud Broker");

    serverprocessorspeed = new JLabel("serverprocessorspeed :");
    RAM = new JLabel("RAM :");
    serverstorage = new JLabel("serverstorage :");
    latency = new JLabel("latency :");
    Region = new JLabel("Region");

    txtserverprocessorspeed = new JTextField(60);
    txtRAM = new JTextField(60);
    txtserverstorage = new JTextField(60);
    txtlatency = new JTextField(60);
    txtRegion = new JTextField(60);

    btnClose = new JButton("Close");
    btnSave = new JButton("Save");
    btnDelete = new JButton("Delete");
    btnUpdate = new JButton("Update");

    btnSave.addActionListener(new ActionListener()  {
        public void actionPerformed(ActionEvent e) {
            System.out.println("The information you entered has been saved");

            Connection conn1 = null;
            try {
                String dbURL1 = 
                        "jdbc:sqlserver://localhost\\SQLEXPRESS:1433;"
                      + "databaseName=dbcloudbroker;user=XXX;password=XXXX";
                System.out.println("this is connection inside the SAVE button");
                conn1 = DriverManager.getConnection(dbURL1);
                Statement stmt1 = conn1.createStatement();

                // I need these values to be the ones the user 
                // enters in the feilds serverprocessorspeed and RAM.
                stmt1.executeUpdate(
                "INSERT INTO cloudbrokertable " + "VALUES(XXXX, XXXXX)"); 
            } catch (SQLException e1) {
                e1.printStackTrace();
            } finally {
                try {
                    if (conn1 != null && !conn1.isClosed()) {
                        conn1.close();
                    }
                } catch (SQLException ex) {
                    ex.printStackTrace();
                }

            }
        }
    }
}

根据我收到的建议,我相应地编辑了我的代码

        String speed = txtserverprocessorspeed.getText();
        String ram = txtRAM.getText();
        String storage = txtserverstorage.getText();
        String latency = txtlatency.getText();
        String region = txtRegion.getText();

        System.out.println(speed); 

        stmt1.executeUpdate("INSERT INTO cloudbrokertable VALUES ('"+speed +"','"+ram+"','"+storage+"','"+latency+"','"+region+"')");

现在收到以下错误 - com.microsoft.sqlserver.jdbc.SQLServerException:')'附近的语法不正确。

该值正确传递到变速,我可以打印出来。

2 个答案:

答案 0 :(得分:1)

  

我需要将“Serverprocessorspeed”,“RAM”字段中使用的信息传递给Action Listener。这些值又被发送到数据库服务器。

不,你没有,这不是这个有用的(对不起)。但是,根据您的代码段,我建议您已经可以访问所需的信息,例如......

btnSave.addActionListener(new ActionListener()
{    
    public void actionPerformed(ActionEvent e)
    {
        String ram = txtRAM.getText();
        String speed = txtserverprocessorspeed.getText();
        String storage = txtserverstorage.getText();
        String latency = txtlatency.getText();
        String region = txtRegion.getText();
        //...

答案 1 :(得分:0)

您的SQL语句存在问题。您需要检查它是否有效。 只需打开数据库即可使用如下示例语句对其进行测试:

  

插入云可浏览的价值观(' 100',' DDR2',' 500',' 1000','美国和# 39)

如果这不起作用,则表示您需要修改您的陈述。 我希望这有帮助。