用JApplet作连接数据库工具

来源:互联网 发布:农业科技网络书屋官网 编辑:程序博客网 时间:2024/06/01 20:49

 

 

import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.UnsupportedEncodingException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import javax.swing.JApplet;import javax.swing.JFrame;import javax.swing.SwingUtilities;import java.sql.ResultSetMetaData;public class JDBC_JApplet extends JApplet{final static private String[] jdbcDriver = { "com.mysql.jdbc.Driver","com.informix.jdbc.IfxDriver", "sun.jdbc.odbc.JdbcOdbcDriver","com.borland.datastore.jdbc.DataStoreDriver","com.sybase.jdbc.SybDriver", "oracle.jdbc.driver.OracleDriver","COM.ibm.db2.jdbc.net.DB2Driver", "interbase.interclient.Driver","weblogic.jdbc.mssqlserver4.Driver" ,"org.apache.derby.jdbc.EmbeddedDriver"};private boolean connected = false;// 判断是否连接成功private Connection connection = null;private ResultSet rs = null;private String query = null;// 查询的sql语句private String rsLine = null;private String driver = null;// 数据库驱动程序private String url = null;// 数据库连接urlprivate String user = null;// 数据库用户名private String password = null;// 数据库用户密码public JDBC_JApplet() {Com_init();Post_Init();}private void Post_Init() {for (int i = 0; i < jdbcDriver.length; i++) {cbDriver.addItem(jdbcDriver[i]);}}private void Com_init() {jScrollPane1 = new javax.swing.JScrollPane();taResponse = new javax.swing.JTextArea();// 显示sql查询结果的文本区域jPanel2 = new javax.swing.JPanel();jPanel1 = new javax.swing.JPanel();jLabel6 = new javax.swing.JLabel();tfSql = new javax.swing.JTextField();// 输入sql语句的文本区域。btnExecute = new javax.swing.JButton();// sql执行按钮jPanel3 = new javax.swing.JPanel();jLabel3 = new javax.swing.JLabel();jPanel4 = new javax.swing.JPanel();cbDriver = new javax.swing.JComboBox();// 数据库驱动下拉框jLabel7 = new javax.swing.JLabel();tfUrl = new javax.swing.JTextField();// 连接数据库的urljLabel9 = new javax.swing.JLabel();tfUser = new javax.swing.JTextField();// 录入用户名的文本框jLabel10 = new javax.swing.JLabel();tfPassword = new javax.swing.JTextField();// 录入用户密码的文本框btnConnect = new javax.swing.JButton();// 连接buttonbtnDisconnect = new javax.swing.JButton();// 释放数据库连接的buttonsetFont(new Font("Verdana", 0, 25));// 设置字体jScrollPane1.setViewportView(taResponse);getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);getContentPane().add(jPanel2, java.awt.BorderLayout.EAST);jLabel6.setText("SQL:");// label Sql:jPanel1.add(jLabel6);tfSql.setPreferredSize(new java.awt.Dimension(300, 21));jPanel1.add(tfSql);btnExecute.setText("执行语句");btnExecute.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {btnExecuteActionPerformed(evt);}});jPanel1.add(btnExecute);// 将jPanel1放到上边getContentPane().add(jPanel1, java.awt.BorderLayout.SOUTH);jPanel3.setPreferredSize(new java.awt.Dimension(550, 100));jPanel3.setMinimumSize(new java.awt.Dimension(550, 100));jPanel3.setMaximumSize(new java.awt.Dimension(550, 100));jLabel3.setText("JDBC 驱动:");jPanel3.add(jLabel3);// label JDBC Driver:jPanel3.add(jPanel4);cbDriver.setPreferredSize(new java.awt.Dimension(450, 26));cbDriver.setMinimumSize(new java.awt.Dimension(100, 26));jPanel3.add(cbDriver);jLabel7.setText("数据库地址:");jPanel3.add(jLabel7);// label Database URL:tfUrl.setPreferredSize(new java.awt.Dimension(450, 21));jPanel3.add(tfUrl);jLabel9.setText("用户名:");jPanel3.add(jLabel9);// label User:tfUser.setPreferredSize(new java.awt.Dimension(100, 21));jPanel3.add(tfUser);jLabel10.setText("密码:");jPanel3.add(jLabel10);tfPassword.setPreferredSize(new java.awt.Dimension(100, 21));jPanel3.add(tfPassword);btnConnect.setPreferredSize(new java.awt.Dimension(89, 27));btnConnect.setMaximumSize(new java.awt.Dimension(89, 27));btnConnect.setText("连接");btnConnect.setMinimumSize(new java.awt.Dimension(89, 27));btnConnect.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {btnConnectActionPerformed(evt);}});jPanel3.add(btnConnect);btnDisconnect.setText("断开");btnDisconnect.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {btnDisconnectActionPerformed(evt);}});jPanel3.add(btnDisconnect);// 放在布局管理器的北边getContentPane().add(jPanel3, java.awt.BorderLayout.NORTH);}//执行查询的sql语句private void btnExecuteActionPerformed(java.awt.event.ActionEvent evt) {if (!connected) {SwingUtilities.invokeLater(new Runnable() {public void run() {taResponse.append("没有可连接的数据库.\n");}});} else {if (connection == null) {SwingUtilities.invokeLater(new Runnable() {public void run() {taResponse.append("连接数据库错误.\n");}});} else {try {query = tfSql.getText();Statement stmt = connection.createStatement();SwingUtilities.invokeLater(new Runnable() {public void run() {taResponse.append("正在查询: " + query + "\n");}});rs = stmt.executeQuery(query);// 使用元数据ResultSetMetaData rsmd = (ResultSetMetaData) rs.getMetaData();// 还使用了元数据来判断有多少个字段int count = rsmd.getColumnCount();int i;rsLine = "\n 表的结构如下:\n";for (int it = 1; it <= count; it++) {rsLine += rsmd.getColumnName(it) + " ";}rsLine += "\n";while (rs.next()) {for (i = 1; i <= count; i++) {String s;try {s = new String(rs.getString(i).getBytes("ISO-8859-1"), "GBK");rsLine += s;} catch (UnsupportedEncodingException e) {}}rsLine += "\n";}rsLine += "\n";stmt.close();SwingUtilities.invokeLater(new Runnable() {public void run() {taResponse.append(rsLine);}});} catch (SQLException e) {SwingUtilities.invokeLater(new Runnable() {public void run() {taResponse.append("查询失败.\n");}});e.printStackTrace();}}}}protected void btnDisconnectActionPerformed(ActionEvent evt) {if (connected) {try {if (connection != null) {connection.close();connection = null;SwingUtilities.invokeLater(new Runnable() {public void run() {taResponse.append("数据库断开.\n");}});}} catch (SQLException e) {SwingUtilities.invokeLater(new Runnable() {public void run() {taResponse.append("数据库断开错误.\n");}});e.printStackTrace();}connected = false;driver = null;url = null;user = null;password = null;} else {SwingUtilities.invokeLater(new Runnable() {public void run() {taResponse.append("数据库已断开.\n");}});}}protected void btnConnectActionPerformed(ActionEvent evt) {if(connected){taResponse.append("数据库已经连接!.\n");}else{driver = (String) cbDriver.getSelectedItem();url = tfUrl.getText();user = tfUser.getText();password = tfPassword.getText();try{SwingUtilities.invokeLater(new Runnable(){public void run(){taResponse.append("使用的JDBC驱动为:" + driver + "\n");}});Class.forName(driver).newInstance();connection = DriverManager.getConnection(url,user,password);if (connection != null) {SwingUtilities.invokeLater(new Runnable() {public void run() {taResponse.append("数据库 " + url + " 连接上了.\n");}});connected = true;}}catch (ClassNotFoundException e) {SwingUtilities.invokeLater(new Runnable() {public void run() {taResponse.append("不能加载驱动.\n");}});e.printStackTrace();} catch (SQLException e) {SwingUtilities.invokeLater(new Runnable() {public void run() {taResponse.append("不能连接数据库.\n");}});e.printStackTrace();} catch (Exception e) {e.printStackTrace();}}}private javax.swing.JScrollPane jScrollPane1;private javax.swing.JTextArea taResponse;private javax.swing.JPanel jPanel2;private javax.swing.JPanel jPanel1;private javax.swing.JLabel jLabel6;private javax.swing.JTextField tfSql;private javax.swing.JButton btnExecute;private javax.swing.JPanel jPanel3;private javax.swing.JLabel jLabel3;private javax.swing.JPanel jPanel4;private javax.swing.JComboBox cbDriver;private javax.swing.JLabel jLabel7;private javax.swing.JTextField tfUrl;private javax.swing.JLabel jLabel9;private javax.swing.JTextField tfUser;private javax.swing.JLabel jLabel10;private javax.swing.JTextField tfPassword;private javax.swing.JButton btnConnect;private javax.swing.JButton btnDisconnect;public static void main(String[] args) {JFrame frame = new JFrame("通过JApplet连接数据库...");JDBC_Applet hwj = new JDBC_Applet();frame.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});frame.getContentPane().add(hwj);hwj.init();frame.setSize(400, 300);frame.setVisible(true);}}


 

原创粉丝点击