私はJAVA、SQLを勉強しているjunhoです。
今、私はこの以下の問題に苦しんでいます。
まず、このフィールドに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);
}
}
まず、このフィールドに20020202を入力しようとすると、予期しないデータ型に関するエラーが発生しました。しかし、番号を「日付」に変更する方法がわかりません
文字列の日付を年、月、日の値に解析します。次に、Calendar
オブジェクトを作成できます。
Calendar date = new Calendar(...);
Calendarオブジェクトを取得したら、次を使用してSQLDateを作成できます。
Date sqlDate = new Date( date.getTimeInMillis() );
java.util.Dateクラスではなく、java.sql.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 );
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加