📄 addrecordframe.java
字号:
package addrecord;import com.borland.jbcl.layout.*;import java.awt.*;import java.awt.event.*;import java.sql.*;import java.util.*;import javax.swing.*;import javax.swing.event.*;import javax.swing.table.*;/** * Title: 数据库增加新的数据记录程序 * Description: 教学示范 * Copyright: Copyright (c) 2003 * Company: 北京师范大学计算机系 * @author 孙一林 * @version 1.0 */public class AddRecordFrame extends JFrame { private JPanel contentPane; private XYLayout xYLayout1 = new XYLayout(); // 构造XYLayout布局管理器 private Label label1 = new Label(); // 创建显示信息使用的组件 private Label label2 = new Label(); private Label label3 = new Label(); private Label label4 = new Label(); private Label label5 = new Label(); private TextField stunumField = new TextField(); private TextField nameField = new TextField(); private TextField ageField = new TextField(); private TextField sexField = new TextField(); private TextField departnameField = new TextField(); private Button addrecordButton = new Button(); private Button refreshButton = new Button(); Vector vector; // 声明一个向量对象 String title[] = {"学号","姓名","年龄","性别","系名"}; // 二维表列名 Connection connection = null; // 声明Connection接口对象connection ResultSet rs = null; // 定义数据库查询的结果集 Statement statement = null; // 定义查询数据库的Statement对象 AbstractTableModel tm; // 声明一个AbstractTableModel类对象tm public AddRecordFrame() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { contentPane = (JPanel) this.getContentPane(); label1.setText("学号"); // 初始化组件 contentPane.setLayout(xYLayout1); this.setSize(new Dimension(439, 420)); this.setTitle("增加新的数据记录"); label2.setText("姓名"); label3.setText("年龄"); label4.setText("性别"); label5.setText("系名"); addrecordButton.setLabel("添加记录"); refreshButton.setLabel("刷新"); addrecordButton.addActionListener(new java.awt.event.ActionListener() { // 设置addrecordButton按钮监听器 public void actionPerformed(ActionEvent e) { addrecordButton_actionPerformed(e); } }); refreshButton.addActionListener(new java.awt.event.ActionListener() { // 设置refreshButton按钮监听器 public void actionPerformed(ActionEvent e) { refreshButton_actionPerformed(e); } }); contentPane.add(label4, new XYConstraints(273, 235, 46, 30)); contentPane.add(label1, new XYConstraints(31, 235, 46, 30)); contentPane.add(label2, new XYConstraints(112, 235, 46, 30)); contentPane.add(label3, new XYConstraints(193, 235, 46, 30)); contentPane.add(label5, new XYConstraints(354, 235, 46, 30)); contentPane.add(sexField, new XYConstraints(271, 270, 63, 28)); contentPane.add(stunumField, new XYConstraints(28, 270, 63, 28)); contentPane.add(nameField, new XYConstraints(109, 270, 63, 28)); contentPane.add(ageField, new XYConstraints(190, 270, 63, 28)); contentPane.add(departnameField, new XYConstraints(352, 270, 63, 28)); contentPane.add(addrecordButton, new XYConstraints(88, 316, 82, 32)); contentPane.add(refreshButton, new XYConstraints(276, 316, 82, 32)); createtable(); // 在初始化函数中调用createtable()函数显示表格 } void createtable() { // 定义createtable()函数 JTable table; // 声明一个JTable类对象table JScrollPane scroll; // 声明一个滚动杠对象scroll vector = new Vector(); // 创建向量对象 tm = new AbstractTableModel() { // 创建AbstractTableModel类对象tm public int getColumnCount() { // 取得表格列数 return title.length; } public int getRowCount() { // 取得表格行数 return vector.size(); } public Object getValueAt(int row, int column) { // 取得单元格中的属性值 if(!vector.isEmpty()) { return ((Vector)vector.elementAt(row)).elementAt(column); } else { return null; } } public void setValueAt(Object value, int row, int column) { // 数据模型不可编辑,该方法设置为空 } public String getColumnName(int column) { // 取得表格列名 return title[column]; } public Class getColumnClass(int c) { // 取得列所属对象类 return getValueAt(0,c).getClass(); } public boolean isCellEditable(int row, int column) {// 设置单元格不可编辑,为缺省实现 return false; } }; table = new JTable(tm); // 生成自己的数据模型 table.setToolTipText("Display Query Result"); // 设置帮助提示 table.setAutoResizeMode(table.AUTO_RESIZE_OFF); // 设置表格调整尺寸模式 table.setCellSelectionEnabled(false); // 设置单元格选择方式 table.setShowHorizontalLines(true); // 设置是否显示单元格之间的分割线 table.setShowVerticalLines(true); scroll = new JScrollPane(table); // 给表格加上滚动杠 scroll.setBounds(6,20,540,250); contentPane.add(scroll,new XYConstraints(16, 20, 395, 200)); } protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); } } void addrecordButton_actionPerformed(ActionEvent e) { // 处理addrecordButton的ActionEvent try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // 实例化JDBC-ODBC桥的驱动 String url = "jdbc:odbc:TestDbStu"; // 设置连接字符串 connection = DriverManager.getConnection(url); // 连接数据库 statement = connection.createStatement(); // 创建Statement接口对象 String sql = "insert into studentbase (学号,姓名,年龄,性别,系名) values (" + Integer.parseInt(stunumField.getText()) +", '" + nameField.getText()+"'," +Integer.parseInt(ageField.getText())+",'"+sexField.getText()+"',"+"'"+departnameField.getText()+ "')"; statement.executeUpdate(sql); // 执行增加新的数据记录语句 stunumField.setText(""); // 清空显示信息组件 nameField.setText(""); ageField.setText(""); sexField.setText(""); departnameField.setText(""); } catch(SQLException ex){ // 捕捉异常 System.out.println("\nERROR:----- SQLException -----\n"); while (ex != null) { System.out.println("Message: " + ex.getMessage()); System.out.println("SQLState: " + ex.getSQLState()); System.out.println("ErrorCode: " + ex.getErrorCode()); ex = ex.getNextException(); } } catch(Exception ex ) { ex.printStackTrace(); } finally { try { if(statement != null) { statement.close(); // 关闭Statement接口实例 } if(connection != null) { connection.close(); // 关闭Connection接口实例 } } catch (SQLException ex) { System.out.println("\nERROR:----- SQLException -----\n"); System.out.println("Message: " + ex.getMessage( )); System.out.println("SQLState: " + ex.getSQLState()); System.out.println("ErrorCode: " + ex.getErrorCode()); } } } void refreshButton_actionPerformed(ActionEvent e) { // 处理refreshButton的ActionEvent try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // 实例化JDBC-ODBC桥的驱动 String url = "jdbc:odbc:TestDbStu"; // 设置连接字符串 connection = DriverManager.getConnection(url); // 连接数据库 statement = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); String sql = "select * from studentbase"; // 设置字符串sql的值 rs = statement.executeQuery(sql); // 执行查询语句 vector.removeAllElements(); // 初始化向量对象 tm.fireTableStructureChanged(); // 更新表格内容 while(rs.next()) { Vector rec_vector = new Vector(); // 从结果集中取数据放入向量rec_vector中 rec_vector.addElement(String.valueOf(rs.getInt("学号"))); rec_vector.addElement(rs.getString("姓名")); rec_vector.addElement(String.valueOf(rs.getInt("年龄"))); rec_vector.addElement(rs.getString("性别")); rec_vector.addElement(rs.getString("系名")); vector.addElement(rec_vector); // 向量rec_vector加入向量vector中 } tm.fireTableStructureChanged(); // 更新表格,显示向量vector的内容 rs.close(); // 关闭结果集 } catch(SQLException ex){ // 捕捉异常 System.out.println("\nERROR:----- SQLException -----\n"); while (ex != null) { System.out.println("Message: " + ex.getMessage()); System.out.println("SQLState: " + ex.getSQLState()); System.out.println("ErrorCode: " + ex.getErrorCode()); ex = ex.getNextException(); } } catch(Exception ex ) { ex.printStackTrace(); } finally { try { if(statement != null) { statement.close(); // 关闭Statement接口实例 } if(connection != null) { connection.close(); // 关闭Connection接口实例 } } catch (SQLException ex) { System.out.println("\nERROR:----- SQLException -----\n"); System.out.println("Message: " + ex.getMessage( )); System.out.println("SQLState: " + ex.getSQLState()); System.out.println("ErrorCode: " + ex.getErrorCode()); } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -