【Java开源代码栏目提醒】:网学会员为需要Java开源代码的朋友们搜集整理了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)
{
conn