📄 catchsqlexceptionframe.java
字号:
package catchsqlexception;import java.awt.*;import java.awt.event.*;import java.sql.*;import java.util.*;import javax.swing.*;/** * Title: 捕捉数据库访问异常 * Description: 教学示范 * Copyright: Copyright (c) 2003 * Company: 北京师范大学计算机系 * @author 孙一林 * @version 1.0 */public class catchSQLExceptionFrame extends JFrame { private JPanel contentPane; private TextField tableField = new TextField(); private Label label1 = new Label(); private Label label2 = new Label(); private TextArea exceptionArea = new TextArea(); private Button queryButton = new Button(); Connection connection = null; //定义与数据库进行连接的Connection对象 ResultSet rs = null; //定义数据库查询的结果集 Statement statement = null; //定义查询数据库的Statement对象 public catchSQLExceptionFrame() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { //初始化用户界面 contentPane = (JPanel) this.getContentPane(); tableField.setBounds(new Rectangle(167, 16, 197, 29)); contentPane.setLayout(null); this.setSize(new Dimension(400, 406)); this.setTitle("数据库异常捕捉"); label1.setText("请输入数据库表名:"); label1.setBounds(new Rectangle(45, 18, 114, 26)); label2.setText("数据库异常情况"); label2.setBounds(new Rectangle(155, 65, 91, 24)); exceptionArea.setEditable(false); exceptionArea.setBounds(new Rectangle(13, 96, 374, 197)); queryButton.setLabel("查询"); queryButton.setBounds(new Rectangle(145, 327, 111, 29)); queryButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { queryButton_actionPerformed(e); } }); contentPane.add(exceptionArea, null); contentPane.add(tableField, null); contentPane.add(label1, null); contentPane.add(label2, null); contentPane.add(queryButton, null); } protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); } } void queryButton_actionPerformed(ActionEvent e) { //查询用户指定的数据库,若产生异常则在用户界面中显示 exceptionArea.setText(""); //清空异常处理显示框 try { String tableName = tableField.getText(); //获取用户指定的表名 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //指定与数据库连接使用JDBC-ODBC桥驱动程序 String url = "jdbc:odbc:student"; //指定数据源名 connection = DriverManager.getConnection(url); //与数据源建立连接 statement = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); //创建Statement接口实例 String sql = "select * from " + tableName; //创建取出用户指定的表中所有数据的SQL语句 ResultSet rs = statement.executeQuery(sql); //将数据存入结果集中 JOptionPane msg = new JOptionPane(); JOptionPane.showMessageDialog(this, "查询成功", "查询成功!", 1); } catch(SQLException ex){ //处理数据库访问异常 exceptionArea.append("\nERROR:----- SQLException -----\n"); while (ex != null) { //依次显示数据库访问的各条异常 exceptionArea.append("Message: " + ex.getMessage() + "\n"); //获取数据库访问异常信息 exceptionArea.append("SQLState: " + ex.getSQLState() + "\n"); //获取数据库访问异常状态 exceptionArea.append("ErrorCode: " + ex.getErrorCode() + "\n"); //获取数据库访问异常代码 ex = ex.getNextException(); //取得下一条访问异常 } } catch(Exception ex ) { //处理其他异常情况 exceptionArea.append(ex.toString() + "\n"); } finally { try { if(statement != null) { statement.close(); //关闭Statement接口实例 } if(connection != null) { connection.close(); //关闭Connection接口实例 } } catch (SQLException ex) { exceptionArea.append("\nERROR:----- SQLException -----\n"); while (ex != null) { //依次显示数据库访问的各条异常 exceptionArea.append("Message: " + ex.getMessage() + "\n"); //获取数据库访问异常信息 exceptionArea.append("SQLState: " + ex.getSQLState() + "\n"); //获取数据库访问异常状态 exceptionArea.append("ErrorCode: " + ex.getErrorCode() + "\n"); //获取数据库访问异常代码 ex = ex.getNextException(); //取得下一条访问异常 } } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -