이클립스 DB연결 도와주세요.

이클립스 DB연결 도와주세요.

QA

이클립스 DB연결 도와주세요.

답변 1

본문

영단어장 만드는 코드인데 여기는 텍스트로 연결이 되있어서요... 

쓰는 프로그램은 java juno 입니다. JDK는 1.8이구요

오라클로 DB를 연결하고 싶은데 어떻게 고쳐야 할지를 모르겠어요

아직 DB를 못만들었는데 연결한다면 요기 밑에 이걸 넣어서 연결하고싶습니다.

    private String driver="oracle.jdbc.driver.OracleDriver";
    private String url="jdbc:oracle:thin:@localhost:1521:xe";
    private String user="system";
    private String password="oracle";

코드는 총 3개 입니다. 

 

1.메인 


import java.awt.Color;
public class Main {
    // 전체 프레임 변수입니다.
    private JFrame frame;
    // 하나의 단어장을 의미하는 리스트를 생성합니다.
    static ArrayList<Word> vocabulary = new ArrayList<Word>();
    
    // 단어 리스트 모델을 의미합니다.
    static DefaultListModel listEnglishModel = new DefaultListModel();
    static DefaultListModel listKoreanModel = new DefaultListModel();
    
    // 단어 리스트를 의미합니다.
    static JList listEnglishList = new JList();
    static JList listKoreanList = new JList();
    private JTextField testTotalCountText;
    private JTextField testResultText;
    private JTextField testFailCountText;
    private JTextField addEnglishText;
    private JTextField addKoreanText;
    
    // 프로그램을 실행하는 부분입니다.
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Main window = new Main();
                    window.frame.setVisible(true);
                    // 프로그램을 화면의 중간으로 맞추도록 합니다.
                    Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
                    window.frame.setLocation(dim.width/2 - window.frame.getSize().width/2, dim.height/2 - window.frame.getSize().height/2);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
    // 프로그램을 생성하는 부분입니다.
    public Main() {
        initialize();
    }
    // 현재의 단어 목록을 세팅하는 함수입니다.
    private void listSetting()
    {
        // 리스트 모델을 초기화합니다.
        listEnglishModel = new DefaultListModel();
        listKoreanModel = new DefaultListModel();
        // 현재 단어장 리스트에 있는 모든 정보를 리스트 모델에 담습니다.
        for(int i = 0; i < vocabulary.size(); i++)
        {
            listEnglishModel.addElement((i + 1) + ". " + vocabulary.get(i).getEnglish());
            listKoreanModel.addElement((i + 1) + ". " + vocabulary.get(i).getKorean());
        }
        // 각각의 리스트가 리스트 모델을 포함하여 보여지게 됩니다.
        listEnglishList.setModel(listEnglishModel);
        listKoreanList.setModel(listKoreanModel);
        // 테스트 결과를 초기화합니다.
        testTotalCountText.setText(vocabulary.size() + " 개");
        testResultText.setText("");
        testFailCountText.setText("");
    }
    
    // 프레임 내부의 구성요소들을 초기화하는 함수입니다.
    private void initialize() {
        
        // 프레임 전체에 대한 기본 설정입니다.
        frame = new JFrame();
        frame.setFont(new Font("맑은 고딕", Font.BOLD, 20));
        frame.setTitle("영어 단어장 프로그램");
        frame.setBounds(100, 100, 800, 600);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);
        
        // 메뉴바를 생성합니다.
        JMenuBar menuBar = new JMenuBar();
        menuBar.setBounds(0, 0, 782, 26);
        frame.getContentPane().add(menuBar);
        
        // 파일이라는 메뉴를 생성합니다.
        JMenu menu = new JMenu("파일");
        menu.setFont(new Font("맑은 고딕", Font.PLAIN, 18));
        menuBar.add(menu);
        
        /* 파일 메뉴 안의 4가지 기능을 추가합니다. */
        JMenuItem newFile = new JMenuItem("새 파일");
        newFile.addActionListener(new ActionListener() {
            // 새 파일을 여는 액션 함수입니다.
            public void actionPerformed(ActionEvent e) {
                vocabulary = new ArrayList<Word>();
                listSetting();
            }
        });
        newFile.setFont(new Font("맑은 고딕", Font.PLAIN, 18));
        menu.add(newFile);
        
        // 메뉴바의 불러오기 버튼입니다.
        JMenuItem getFile = new JMenuItem("불러오기");
        getFile.addActionListener(new ActionListener() {
            // 파일을 불러오는 액션 함수입니다.
            public void actionPerformed(ActionEvent e) {
                // 파일을 선택합니다.
                JFileChooser fs = new JFileChooser(new File("c:\\"));
                fs.setDialogTitle("파일 불러오기");
                fs.setFileFilter(new FileTypeFilter(".dat", "Data File"));
                int result = fs.showOpenDialog(null);
                // 파일 선택에 성공했을 때
                if(result == JFileChooser.APPROVE_OPTION)
                {
                    // 단어장을 초기화합니다.
                    vocabulary = new ArrayList<Word>();
                    // 선택한 파일을 객체로서 불러옵니다.
                    File file = fs.getSelectedFile();
                    try
                    {
                        Scanner scan = new Scanner(new BufferedReader(new FileReader(file.getPath())));
                        // 모든 라인을 읽어들입니다.
                        while(scan.hasNext())
                        {
                            // ':'를 기준으로 영단어와 해석을 구분하여 받아들입니다.
                            String[] word = scan.nextLine().split(":");
                            vocabulary.add(new Word(word[0], word[1]));
                        }
                    }
                    catch (Exception e1)
                    {
                        JOptionPane.showMessageDialog(null, e1.getMessage());
                    }
                }
                listSetting();
            }
        });
        getFile.setFont(new Font("맑은 고딕", Font.PLAIN, 18));
        menu.add(getFile);
        
        // 메뉴바의 저장하기 버튼입니다.
        JMenuItem saveFile = new JMenuItem("저장하기");
        saveFile.addActionListener(new ActionListener() {
            // 파일을 저장하는 액션 함수입니다.
            public void actionPerformed(ActionEvent e) {
                // 파일을 선택할 수 있도록 합니다.
                JFileChooser fs = new JFileChooser(new File("c:\\"));
                fs.setDialogTitle("파일 저장하기");
                fs.setFileFilter(new FileTypeFilter(".dat", "Data File"));
                int result = fs.showSaveDialog(null);
                // 파일 선택에 성공한 경우입니다.
                if(result == JFileChooser.APPROVE_OPTION)
                {
                    // 선택한 파일을 파일 객체로서 설정합니다.
                    File file = fs.getSelectedFile();
                    try
                    {
                        // 파일을 열어 해당 파일에 모든 단어 리스트를 출력합니다.
                        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file.getPath() + ".dat")));
                        for(int i = 0; i < vocabulary.size(); i++)
                        {
                            bw.write(vocabulary.get(i).getEnglish() + ":" + vocabulary.get(i).getKorean() + "\r\n");
                        }
                        // 작성 완료 후 파일 버퍼를 닫습니다.
                        bw.close();
                    }
                    catch (Exception e2)
                    {
                        JOptionPane.showMessageDialog(null, e2.getMessage());
                    }
                }
                listSetting();
            }
        });
        saveFile.setFont(new Font("맑은 고딕", Font.PLAIN, 18));
        menu.add(saveFile);
        
        // 메뉴바의 종료하기 버튼입니다.
        JMenuItem exitProgram = new JMenuItem("종료하기");
        exitProgram.addActionListener(new ActionListener() {
            // 종료하는 액션 함수입니다.
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });
        exitProgram.setFont(new Font("맑은 고딕", Font.PLAIN, 18));
        menu.add(exitProgram);
        
        /* 단어를 추가하는 기능의 패널입니다. */
        JPanel addWordPanel = new JPanel();
        addWordPanel.setBorder(new TitledBorder(new LineBorder(new Color(0, 0, 0), 5, true), "\uB2E8\uC5B4 \uCD94\uAC00", TitledBorder.CENTER, TitledBorder.TOP, null, new Color(0, 0, 0)));
        addWordPanel.setBounds(14, 38, 343, 177);
        frame.getContentPane().add(addWordPanel);
        addWordPanel.setLayout(null);
        
        JLabel addEnglishLabel = new JLabel("영단어");
        addEnglishLabel.setFont(new Font("맑은 고딕", Font.PLAIN, 15));
        addEnglishLabel.setBounds(26, 36, 62, 18);
        addWordPanel.add(addEnglishLabel);
        
        JLabel addKoreanLabel = new JLabel("해석");
        addKoreanLabel.setFont(new Font("맑은 고딕", Font.PLAIN, 15));
        addKoreanLabel.setBounds(26, 80, 62, 18);
        addWordPanel.add(addKoreanLabel);
        
        addEnglishText = new JTextField();
        addEnglishText.setFont(new Font("맑은 고딕", Font.PLAIN, 15));
        addEnglishText.setBounds(138, 35, 174, 24);
        addWordPanel.add(addEnglishText);
        addEnglishText.setColumns(10);
        
        addKoreanText = new JTextField();
        addKoreanText.setFont(new Font("맑은 고딕", Font.PLAIN, 15));
        addKoreanText.setColumns(10);
        addKoreanText.setBounds(138, 79, 174, 24);
        addWordPanel.add(addKoreanText);
        
        // 단어 추가 버튼입니다.
        JButton addWordButton = new JButton("추가");
        addWordButton.addActionListener(new ActionListener() {
            // 단어 추가 버튼을 눌렀을 때의 액션입니다.
            public void actionPerformed(ActionEvent arg0) {
                // 하나의 단어를 단어장에 추가합니다.
                vocabulary.add(new Word(addEnglishText.getText(), addKoreanText.getText()));
                // 리스트 뷰를 초기화합니다.
                listSetting();
                addEnglishText.setText("");
                addKoreanText.setText("");
            }
        });
        addWordButton.setFont(new Font("맑은 고딕", Font.BOLD, 15));
        addWordButton.setBounds(207, 126, 105, 27);
        addWordPanel.add(addWordButton);
        
        /* 단어 목록을 보여주는 기능의 패널입니다. */
        JPanel listPanel = new JPanel();
        listPanel.setBorder(new TitledBorder(new LineBorder(new Color(0, 0, 0), 5, true), "\uB2E8\uC5B4 \uBAA9\uB85D", TitledBorder.CENTER, TitledBorder.TOP, null, null));
        listPanel.setBounds(371, 38, 397, 503);
        frame.getContentPane().add(listPanel);
        listPanel.setLayout(null);
        
        JScrollPane listEnglishPane = new JScrollPane();
        listEnglishPane.setBounds(14, 63, 185, 428);
        listPanel.add(listEnglishPane);
        
        listEnglishList = new JList();
        listEnglishList.setFont(new Font("맑은 고딕", Font.PLAIN, 15));
        listEnglishPane.setViewportView(listEnglishList);
        
        JScrollPane listKoreanPane = new JScrollPane();
        listKoreanPane.setBounds(198, 63, 185, 428);
        listPanel.add(listKoreanPane);
        
        listKoreanList = new JList();
        listKoreanList.setFont(new Font("맑은 고딕", Font.PLAIN, 15));
        listKoreanPane.setViewportView(listKoreanList);
        
        JLabel listEnglishLabel = new JLabel("영단어");
        listEnglishLabel.setFont(new Font("맑은 고딕", Font.PLAIN, 15));
        listEnglishLabel.setHorizontalAlignment(SwingConstants.CENTER);
        listEnglishLabel.setBounds(71, 32, 62, 18);
        listPanel.add(listEnglishLabel);
        
        JLabel listKoreanLabel = new JLabel("해석");
        listKoreanLabel.setFont(new Font("맑은 고딕", Font.PLAIN, 15));
        listKoreanLabel.setHorizontalAlignment(SwingConstants.CENTER);
        listKoreanLabel.setBounds(259, 33, 62, 18);
        listPanel.add(listKoreanLabel);
        /* 테스트 관련 변수 및 설정이 들어있는 테스트 패널입니다. */
        JPanel testPanel = new JPanel();
        testPanel.setBorder(new TitledBorder(new LineBorder(new Color(0, 0, 0), 5, true), "\uB2E8\uC5B4 \uD14C\uC2A4\uD2B8", TitledBorder.CENTER, TitledBorder.TOP, null, null));
        testPanel.setBounds(14, 227, 344, 314);
        frame.getContentPane().add(testPanel);
        testPanel.setLayout(null);
        
        // 테스트 시작 버튼입니다.
        JButton testButton = new JButton("테스트 시작");
        testButton.addActionListener(new ActionListener() {
            // 테스트를 진행하는 함수입니다.
            public void actionPerformed(ActionEvent e) {
                String english;
                ArrayList<Word> testWords = new ArrayList<Word>();
                int failCount = 0;
                // 단어 리스트를 잠시 동안 숨깁니다.
                listEnglishModel.clear();
                listKoreanModel.clear();
                for(int i = 0; i < vocabulary.size(); i++)
                {
                    // 반복적으로 단어의 정답을 물어봅니다.
                    english = JOptionPane.showInputDialog((i + 1) + "번째 단어 : '" + vocabulary.get(i).getKorean() + "' 현재까지 총 틀린 횟수 : " + failCount);
                    if(english == null || !english.equalsIgnoreCase(vocabulary.get(i).getEnglish()))
                    {
                        testWords.add(new Word(english, vocabulary.get(i).getKorean()));
                        failCount++;
                    }
                    else
                    {
                        testWords.add(new Word(english, vocabulary.get(i).getKorean()));
                    }
                }
                // 단어 리스트를 다시 보여줍니다.
                listSetting();
                // 테스트 결과를 텍스트바에 출력합니다.
                DecimalFormat form = new DecimalFormat("#.#");
                if(vocabulary.size() != 0)
                {
                    testResultText.setText(form.format(100 * (((double)vocabulary.size() - (double)failCount) / (double)vocabulary.size())) + " 점");
                    testFailCountText.setText(failCount + " 개");
                }
                // 결과 메시지를 준비합니다.
                String resultMessage = "";
                // 모든 결과 내용을 결과 메시지에 담습니다.
                for(int i = 0; i < testWords.size(); i++)
                {
                    resultMessage += (i + 1) + "번째 시도 : 단어 '" + testWords.get(i).getKorean() + "'에 대하여 '" + testWords.get(i).getEnglish() + "' 라고 답했습니다.\n";
                }
                resultMessage += "테스트 점수 : " + form.format(100 * (((double)vocabulary.size() - (double)failCount) / (double)vocabulary.size())) + " 점";
                resultMessage += "\n틀린 개수 : " + failCount + " 개";
                // 결과 메시지를 스크롤 팬에 담겨진 JOptionPane의 형태로 사용자에게 보여줍니다.
                JTextArea textArea = new JTextArea(resultMessage);
                JScrollPane scrollPane = new JScrollPane(textArea);  
                textArea.setLineWrap(true);  
                textArea.setWrapStyleWord(true); 
                scrollPane.setPreferredSize(new Dimension(500, 500));
                JOptionPane.showMessageDialog(null, scrollPane, "테스트 결과", JOptionPane.INFORMATION_MESSAGE);
            }
        });
        testButton.setFont(new Font("맑은 고딕", Font.BOLD, 15));
        testButton.setBounds(111, 239, 126, 50);
        testPanel.add(testButton);
        
        JLabel testTotalCountLabel = new JLabel("총 단어 수");
        testTotalCountLabel.setFont(new Font("맑은 고딕", Font.PLAIN, 15));
        testTotalCountLabel.setBounds(24, 59, 119, 33);
        testPanel.add(testTotalCountLabel);
        
        testTotalCountText = new JTextField();
        testTotalCountText.setHorizontalAlignment(SwingConstants.RIGHT);
        testTotalCountText.setFont(new Font("맑은 고딕", Font.PLAIN, 15));
        testTotalCountText.setEditable(false);
        testTotalCountText.setBounds(147, 58, 163, 36);
        testPanel.add(testTotalCountText);
        testTotalCountText.setColumns(10);
        
        JLabel testResultLabel = new JLabel("최근 점수");
        testResultLabel.setFont(new Font("맑은 고딕", Font.PLAIN, 15));
        testResultLabel.setBounds(24, 114, 119, 33);
        testPanel.add(testResultLabel);
        
        testResultText = new JTextField();
        testResultText.setHorizontalAlignment(SwingConstants.RIGHT);
        testResultText.setFont(new Font("맑은 고딕", Font.PLAIN, 15));
        testResultText.setEditable(false);
        testResultText.setColumns(10);
        testResultText.setBounds(147, 113, 163, 36);
        testPanel.add(testResultText);
        
        JLabel testFailCountLabel = new JLabel("최근 틀린 개수");
        testFailCountLabel.setFont(new Font("맑은 고딕", Font.PLAIN, 15));
        testFailCountLabel.setBounds(24, 175, 119, 33);
        testPanel.add(testFailCountLabel);
        
        testFailCountText = new JTextField();
        testFailCountText.setHorizontalAlignment(SwingConstants.RIGHT);
        testFailCountText.setFont(new Font("맑은 고딕", Font.PLAIN, 15));
        testFailCountText.setEditable(false);
        testFailCountText.setColumns(10);
        testFailCountText.setBounds(147, 174, 163, 36);
        testPanel.add(testFailCountText);
    }
}

 

2.파일타입필터



import java.io.File;
import javax.swing.filechooser.*;
// 파일 형식 필터 클래스입니다.
public class FileTypeFilter extends FileFilter{
    // 확장자와 설명 변수입니다.
    private final String extension;
    private final String description;
    
    // 필터 클래스 생성자입니다.
    public FileTypeFilter(String extension, String description)
    {
        this.extension = extension;
        this.description = description;
    }
    /* 파일 불러오기 및 저장하기 관련 처리 함수들입니다. */
    public boolean accept(File file) {
        if(file.isDirectory())
        {
            return true;
        }
        return file.getName().endsWith(extension);
    }
    public String getDescription() {
        return description + String.format(" (*%s)", extension);
    }
}

 

3.워드


// 하나의 단어에 대한 정보를 기억하는 Word 클래스입니다.
public class Word {
    String english; // 영단어를 의미합니다.
    String korean; // 한글 해석을 의미합니다.
    // 각각의 객체 처리 메소드를 정의합니다.
    public String getEnglish() {
        return english;
    }
    public void setEnglish(String english) {
        this.english = english;
    }
    public String getKorean() {
        return korean;
    }
    public void setKorean(String korean) {
        this.korean = korean;
    }
    // 영단어 생성자를 정의합니다.
    public Word(String english, String korean) {
        this.english = english;
        this.korean = korean;
    }
}

 

감사합니다. 

이 질문에 댓글 쓰기 :

답변 1

이곳은 php 관련 게시판 커뮤니티 이며 java 관련 부분은 이쪽에서 정확한 답변을 얻기는 어려우실듯 합니다.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 7
© SIRSOFT
현재 페이지 제일 처음으로