проблема соединения (JTextfield, Jtable, sql база данных) - PullRequest
0 голосов
/ 07 октября 2018

Я - младший, который изучает JAVA, SQL.

Теперь я борюсь с этой проблемой ниже.

во-первых, когда я попытался поместить 20020202 в это поле, это произошлоошибка о непредвиденном типе данных.Однако я не знаю, как изменить число на «Дата»

Во-вторых, я не знаю, как сделать метод JTable для ввода в эту часть ниже.

                    while (resultSet.next()) {
                        Vector row = new Vector(columns);
                        for (int i = 1; i <= columns; i++) {
                            row.addElement(resultSet.getObject(i));
                        }
                        data.addElement(row);
                    }

, потому чтоесли я не введу приведенный ниже код,

DefaultTableModel model = new DefaultTableModel(data, columnNames);
JTable table1 = new JTable(model);
table1.setColumnSelectionAllowed(true);
table1.setCellSelectionEnabled(true);

JScrollPane scrollPane = new JScrollPane(table1);        
scrollPane.setBounds(10, 53, 600, 200);
addGrid(gbl,gbc,scrollPane,0,4,2,3,0,0);

таблица не отобразится.

Итак, мне интересно, как решить эту проблему.мои навыки письма на английском не очень хороши.Таким образом, это не будет достаточно информации для вас.Я хотел бы, чтобы кто-нибудь дал мне совет.

это весь код, который я написал.Я надеюсь, что это поможет вам понять, с чем я борюсь.Большое спасибо.


import java.awt.Component;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;

public class DbPanel extends JPanel{



public DbPanel() {

    Vector columnNames = new Vector();
    Vector data = new Vector();
    JPanel panel = new JPanel();   //
    JPanel panel2 =new JPanel();


    GridBagLayout gbl = new GridBagLayout();
    GridBagConstraints gbc = new GridBagConstraints();
    gbc.fill = GridBagConstraints.BOTH;
    setLayout(gbl);


    //DB 관리
/*      String url = "jdbc:oracle:thin:@localhost:1521:xe";
    String user = "madang";
    String password = "madang";

    try {
        Class.forName("oracle.jdbc.driver.OracleDriver"); 
        Connection con = DriverManager.getConnection(url, user, password);
        String sql = "select * from STOCK_INFO order by DATE_STOCK";
        Statement statement = con.createStatement();
        ResultSet resultSet = statement.executeQuery(sql);
        ResultSetMetaData metaData = resultSet.getMetaData();
        int columns = metaData.getColumnCount();
        for (int i = 1; i <= columns; i++) {
            columnNames.addElement(metaData.getColumnName(i));
        }
        while (resultSet.next()) {
            Vector row = new Vector(columns);
            for (int i = 1; i <= columns; i++) {
                row.addElement(resultSet.getObject(i));
            }
            data.addElement(row);
        }
        resultSet.close();
        statement.close();
    } catch (Exception e) {
        System.out.println(e);
    }*/
    //DB 끝


     JLabel label = new JLabel("start_date");
        addGrid(gbl,gbc,label,0,0,1,1,0,0);

        JTextField textfield = new JTextField(8);
        addGrid(gbl,gbc,textfield,0,1,1,1,0,0);


        JLabel label2 = new JLabel("end_date");
        addGrid(gbl,gbc,label2, 2,0,1,1,0,0);
        JTextField textfield2 = new JTextField(8);
        addGrid(gbl,gbc,textfield2, 2,1,1,1,0,0);

        JButton btn = new JButton("search");
        addGrid(gbl, gbc, btn, 2, 4, 1, 3, 0, 0);


        JLabel lblNewLabel = new JLabel("Stock_database");
        lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
        lblNewLabel.setFont(new Font("Tahoma", Font.BOLD, 14));
       /* lblNewLabel.setBounds(10, 11, 927, 31);*/
        addGrid(gbl,gbc,lblNewLabel,0,3,4,1,1,0);

        DefaultTableModel model = new DefaultTableModel(data,                 columnNames);
        JTable table1 = new JTable(model);
        table1.setColumnSelectionAllowed(true);
        table1.setCellSelectionEnabled(true);

        JScrollPane scrollPane = new JScrollPane(table1);        
        scrollPane.setBounds(10, 53, 600, 200);
        addGrid(gbl,gbc,scrollPane,0,4,2,3,0,0);

        btn.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {

                String url = "jdbc:oracle:thin:@localhost:1521:xe";
                String user = "madang";
                String password = "madang";

                try {
                    Class.forName("oracle.jdbc.driver.OracleDriver"); 
                    Connection con = DriverManager.getConnection(url,     user, password);
                    String sql = "select * from stock_info     between"+textfield.getText()+"and"+textfield2.getText();
                    Statement statement = con.createStatement();
                    ResultSet resultSet = statement.executeQuery(sql);
                    ResultSetMetaData metaData = resultSet.getMetaData();
                    int columns = metaData.getColumnCount();
                    for (int i = 1; i <= columns; i++) {
                        columnNames.addElement(metaData.getColumnName(i));
                    }
                    while (resultSet.next()) {
                        Vector row = new Vector(columns);
                        for (int i = 1; i <= columns; i++) {
                            row.addElement(resultSet.getObject(i));
                        }
                        data.addElement(row);
                    }
                    resultSet.close();
                    statement.close();
                } catch (Exception e1) {
                    System.out.println(e1);
                }


            }
        });



/*          TableColumn column;
        for (int i = 0; i < table1.getColumnCount(); i++) {
            column = table1.getColumnModel().getColumn(i);
            column.setMaxWidth(250);
        }*/




}

private void addGrid(GridBagLayout gbl, GridBagConstraints gbc, Component c, int gridx, int gridy, int gridwidth, int gridheight, int weightx, int weighty) {
    gbc.gridx = gridx;
    gbc.gridy = gridy;
    gbc.gridwidth = gridwidth;
    gbc.gridheight = gridheight;
    gbc.weightx = weightx;
    gbc.weighty = weighty;
    gbl.setConstraints(c, gbc);
    add(c);
}


}    

1 Ответ

0 голосов
/ 07 октября 2018

во-первых, когда я попытался поместить 20020202 в это поле, произошла ошибка о непредвиденном типе данных.Однако я не знаю, как изменить число на «Дата»

Разобрать дату строки в значения года, месяца и дня.Затем вы можете создать объект Calendar:

Calendar date = new Calendar(...);

Получив объект календаря, вы можете создать SQLDate, используя:

Date sqlDate = new Date( date.getTimeInMillis() );

Обратите внимание, что вы должны использовать java.sql.Класс даты, а не класс java.util.Date.

таблица не отображается.

Таблица не отображается, поскольку столбцы пустыкогда модель создана.Вам нужно создать модель, когда у вас есть действительные данные.

Таким образом, код должен выглядеть примерно так:

//DefaultTableModel model = new DefaultTableModel(data, columnNames);
//JTable table1 = new JTable(model);
JTable table1 = new JTable(); // create empty table to add to scroll pane

Затем, после получения данных из ResultSet, вы можете создать модельи присвойте его таблице:

resultSet.close();
statement.close();

DefaultTableModel model = new DefaultTableModel(data, columnNames);
table1.setModel( model );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...