1列中的数据存储在与其他列不同的行中

时间:2015-07-25 06:16:29

标签: java mysql swing

我正在开发一个swing项目,我有一个JDialogbox,其中包含两个textfield和1个组合框,两个按钮“ok”和“cancel”以及一个框架,其文本区域就像记事本和所有这些组件每当我在JDialog中插入数据并单击Ok时数据就连接到Oracle数据库,数据存储在数据库中,并且调用包含文本区域的框架,当我保存用textarea写入的数据并单击保存按钮时,插入的数据将保存在数据库中的不同行但与JDialog组件不在同一行

import javax.swing.*;
import java.sql.*;
import java.awt.BorderLayout;
import java.awt.Toolkit;
import java.awt.event.*;
import java.awt.*;
import java.io.File;
import java.io.PrintWriter;
import java.util.Scanner;

public class newmenu implements ActionListener {

    JDialog jf;
    JButton okBtn,CanBtn;
    JTextField tf1,tf3;
    JComboBox type;
    JLabel prName,prType,prWritter;
    JFrame frame;
    JMenuBar menuBar;
    JMenu file;
    JMenuItem open, save, exit;
    JFileChooser fileChooser;
    JTextArea textArea;


    public newmenu(){
        jf = new JDialog();
        jf.setTitle("New Report");
        okBtn = new JButton("Ok");

        okBtn.setBounds(10, 140, 60, 20);
        okBtn.addActionListener(this);
        CanBtn = new JButton("Cancel");
        CanBtn.addActionListener(this);
        CanBtn.setBounds(100, 140, 100, 20);

        tf1 = new JTextField();
        tf1.setBounds(150, 20, 100, 20);

        String r_Type [] = {"Cosmetics","Pharametical","Medical"};
        type = new JComboBox(r_Type);
        type.setBounds(150, 60, 100, 20);

        tf3 = new JTextField();
        tf3.setBounds(150, 100, 100, 20);

        prName = new JLabel("Report Name");
        prName.setBounds(10, 20, 100, 20);

        prType = new JLabel("Report type");
        prType.setBounds(10,60,100,20);

        prWritter = new JLabel("Report Written");
        prWritter.setBounds(10,100,100,20);

        jf.add(okBtn);


        jf.add(CanBtn);
        jf.add(tf1);
        jf.add(type);
        jf.add(tf3);
        jf.add(prName);
        jf.add(prType);
        jf.add(prWritter);
        jf.setSize(300, 200);
        jf.setResizable(false);
        jf.setLayout(null);
        jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        jf.setVisible(true);
    }

    public void notepad(){

            frame = new JFrame();
            frame.setTitle("Notepad");
            file = new JMenu("File");

            save = new JMenuItem("Save");
            save.addActionListener(this);
            exit = new JMenuItem("Exit");
            exit.addActionListener(this);
            textArea = new JTextArea();
            fileChooser = new JFileChooser();
            menuBar = new JMenuBar();

            frame.setLayout(new BorderLayout());
            frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

            frame.add(textArea);

            file.add(save);
            file.add(exit);
            menuBar.add(file);
            frame.setJMenuBar(menuBar);



            frame.setSize(800, 600);
            frame.setVisible(true);
        }

    public void insert(){
         try {

                Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
                Connection con = DriverManager
                        .getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","root");
                Statement st = con.createStatement();

                st.executeUpdate("insert into report (reportname, reporttype,clientname) VALUES('"
                        + tf1.getText() + "','" 
                        + tf3.getText() + "','" + type.getSelectedItem()+ "')");





            }

            catch (Exception e1)

            {
                System.out.println("Exception:" + e1);
            }
}

    public void notepadinsert(){
        try {

            Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
            Connection con = DriverManager
                    .getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","root");
            Statement st = con.createStatement();

            st.executeUpdate("insert into report (report) VALUES('"
                    + textArea.getText() + "')");





        }

        catch (Exception e1)

        {
            System.out.println("Exception:" + e1);
        }
    }

    public void actionPerformed(ActionEvent ev){

        if(ev.getSource()==okBtn){
              if( tf1.getText().trim().equals("")){

                    okBtn.setEnabled(false);
                    if(tf1.getText().hashCode() != 0){
                        okBtn.setEnabled(true);
                    }
                    }
          else{
              okBtn.setEnabled(true);
             jf.dispose();
             insert();
               notepad();
          }

        }

        else if(ev.getSource()==CanBtn){
            System.exit(0);
        }

        else if(ev.getSource()==save){
            notepadinsert();
        }
        else if(ev.getSource()==exit){
            System.exit(0);
        }
    }






    public static void main(String args[]){
        new newmenu();
    }
}

2 个答案:

答案 0 :(得分:1)

使用标记来检查它是否是第一个请求。

private int flag=0;
...
insert(){
...
    if(flag==0){  
    //insert command 
    flag=1;
     }
   else
    {
       //update here.
    }

}

<强>更新 更好的方法是检查当前用户是否已完成更新。您必须创建一个字段(如user_name),因为我在插入查询中看不到。

insert(){
...

    //search for the current record with user_name in DB
    if(!found){  
    //insert command 
     }
   else
    {
       //update here.
    }

}

答案 1 :(得分:0)

像这样切换你的代码......在insert()方法中,你现在要存储数据......将数据一次性存储在数据库中...我添加了System.out.println();因为我无法创建一个oracle数据库,这只是检查我是否获得所需数据的唯一方法......

您只需编写用于在insert方法中插入DataBase的代码,并传递我用于打印值的字符串数组中的值...

    public void insert(String[] Str){  // Write your code for insertion
                                       // of values in database
        System.out.println(Str[0]);     
        System.out.println(Str[1]);    // I just used these to check
        System.out.println(Str[2]);    // If i am getting correct values
        System.out.println(Str[3]);            
      }   

    @Override
    public void actionPerformed(ActionEvent ev){    

        String[] Data_To_Insert = new String[4];    

        if(ev.getSource()==okBtn){
              if( tf1.getText().trim().equals("")){    
                    okBtn.setEnabled(false);
                    if(tf1.getText().hashCode() != 0){
                        okBtn.setEnabled(true);
                      }
                    }
          else{
              okBtn.setEnabled(true);                 
              jf.dispose();             
              notepad();
            }    
         }    
        else if(ev.getSource()==CanBtn){
            System.exit(0);
          }    
        else if(ev.getSource()==save){
            Data_To_Insert[0] = tf1.getText();
            Data_To_Insert[1] = tf3.getText();
            Data_To_Insert[2] = type.getSelectedItem().toString();
            Data_To_Insert[3] = textArea.getText();
            insert(Data_To_Insert);
            }
        else if(ev.getSource()==exit){
            System.exit(0);
          }
       }

还记得你必须创建4列来存储数据......

希望它有所帮助...