⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbapplet.java

📁 Java案例开发集锦,里面提供了很好的学习例子
💻 JAVA
字号:
package eight;

/**
 * @author wangmj
 * @mail <a mailto="wangmingjie_2002@hotmail.com"> 2005-4-6 2005
 * 
 * DBApplet.java 用JApplet做的Applet和一般的Applet有些不同。主要是因为Swing库类的单线程原则,
 * 所以当JApplet的界面生成后,由其它线程(一般是消息分发线程)试图改变界面(如setText())
 * 可能会导致问题发生。这是可以借助SwingUtilities.invokeLater()
 * 或SwingUtilities.invokeAndWait()来解决。下面是一个用JApplet访问数据库的例子。
 * ------------------------------------------------------ 不错,测试通过,可以正确的执行。
 */
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class DBApplet extends javax.swing.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" };

	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;

	//数据库连接url

	private String user = null;

	//数据库用户名

	private String password = null;

	//数据库用户密码
	public DBApplet() {
		initComponents();
		postInit();
	}

	private void postInit() {
		for (int i = 0; i < jdbcDriver.length; i++) {
			cbDriver.addItem(jdbcDriver[i]);
		}
	}

	private void initComponents() {
		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();
		//连接数据库的url
		jLabel9 = new javax.swing.JLabel();
		tfUser = new javax.swing.JTextField();
		//录入用户名的文本框
		jLabel10 = new javax.swing.JLabel();
		tfPassword = new javax.swing.JTextField();
		//录入用户密码的文本框
		btnConnect = new javax.swing.JButton();
		//连接button
		btnDisconnect = new javax.swing.JButton();
		//释放数据库连接的button
		setFont(new java.awt.Font("Verdana", 0, 12));
		//设置字体
		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("Execute Query");
		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 Driver:");
		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("Database URL:");
		jPanel3.add(jLabel7);
		//label Database URL:
		tfUrl.setPreferredSize(new java.awt.Dimension(450, 21));
		jPanel3.add(tfUrl);

		jLabel9.setText("User:");
		jPanel3.add(jLabel9);
		//label User:

		tfUser.setPreferredSize(new java.awt.Dimension(100, 21));
		jPanel3.add(tfUser);

		jLabel10.setText("Password:");
		jPanel3.add(jLabel10);
		//label PassWord:
		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("Connect");
		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("Disconnect");
		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("No database connected.\n");
				}
			});
		} else {
			if (connection == null) {
				SwingUtilities.invokeLater(new Runnable() {
					public void run() {
						taResponse.append("Database connection error.\n");
					}
				});
			} else {
				try {
					query = tfSql.getText();
					Statement stmt = connection.createStatement();
					SwingUtilities.invokeLater(new Runnable() {
						public void run() {
							taResponse.append("Executing query: " + query
									+ "\n");
						}
					});
					rs = stmt.executeQuery(query);
					//使用元数据
					ResultSetMetaData rsmd = 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++) {
							rsLine += rs.getString(i) + " ";
						}
						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("Query failed.\n");
						}
					});
					e.printStackTrace();
				}
			}
		}
	}

	//释放数据库连接
	private void btnDisconnectActionPerformed(java.awt.event.ActionEvent evt) {
		if (connected) {
			try {
				if (connection != null) {
					connection.close();
					connection = null;
					SwingUtilities.invokeLater(new Runnable() {
						public void run() {
							taResponse.append("Database disconnected.\n");
						}
					});
				}
			} catch (SQLException e) {
				SwingUtilities.invokeLater(new Runnable() {
					public void run() {
						taResponse.append("Database disconnecting error.\n");
					}
				});
				e.printStackTrace();
			}
			connected = false;
			driver = null;
			url = null;
			user = null;
			password = null;
		} else {
			SwingUtilities.invokeLater(new Runnable() {
				public void run() {
					taResponse.append("Database already disconnected.\n");
				}
			});
		}
	}

	//连接数据库
	private void btnConnectActionPerformed(java.awt.event.ActionEvent evt) {
		if (connected) {
			taResponse.append("Database already connected.\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("Using JDBC driver: " + driver + "\n");
					}
				});
				//注册数据库驱动 通过jdbc的方式连接数据库
				Class.forName(driver).newInstance();
				connection = DriverManager.getConnection(url, user, password);
				//连接数据库
				if (connection != null) {
					SwingUtilities.invokeLater(new Runnable() {
						public void run() {
							taResponse.append("Database " + url
									+ " connected.\n");
						}
					});
					connected = true;
				}
			} catch (ClassNotFoundException e) {
				SwingUtilities.invokeLater(new Runnable() {
					public void run() {
						taResponse.append("Cannot load the driver.\n");
					}
				});
				e.printStackTrace();
			} catch (SQLException e) {
				SwingUtilities.invokeLater(new Runnable() {
					public void run() {
						taResponse.append("Cannot connect to the database.\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连接数据库...");
		DBApplet hwj = new DBApplet();
		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);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -