一个Applet(JApplet)访问数据库的例子

<script type="text/javascript"> google_ad_client = "pub-8800625213955058"; /* 336x280, 创建于 07-11-21 */ google_ad_slot = "0989131976"; google_ad_width = 336; google_ad_height = 280; // </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 用JApplet做的Applet和一般的Applet有些不同。主要是因为Swing库类的单线程原则,所以当JApplet的界面生成后,由其它线程(一般是消息分发线程)试图改变界面(如setText())可能会导致问题发生。这是可以借助SwingUtilities.invokeLater()或SwingUtilities.invokeAndWait()来解决。下面是一个用JApplet访问数据库的例子。 DBApplet.java ====================================================================== import java.sql.*; import javax.swing.*; public class DBApplet extends javax.swing.JApplet { final static private String[] jdbcDriver = { "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; private String rsLine = null; private String driver = null; private String url = null; 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(); jPanel2 = new javax.swing.JPanel(); jPanel1 = new javax.swing.JPanel(); jLabel6 = new javax.swing.JLabel(); tfSql = new javax.swing.JTextField(); btnExecute = new javax.swing.JButton(); 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(); 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(); btnDisconnect = new javax.swing.JButton(); 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:"); 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); 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); 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); tfUrl.setPreferredSize(new java.awt.Dimension(450, 21)); jPanel3.add(tfUrl); jLabel9.setText("User:"); jPanel3.add(jLabel9); tfUser.setPreferredSize(new java.awt.Dimension(100, 21)); jPanel3.add(tfUser); jLabel10.setText("Password:"); 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("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); } 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"; 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"); } } ); 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; } dbapplet.html ====================================================================== DB applet

DB applet

The Applet tag in this file contains a CODEBASE entry that must be set to point to a directory containing the Java classes from the Thin JDBC distribution *and* the compiled JdbcApplet.class.


<embed type="application/x-java-applet;version=1.3" width="550" height="500" align="baseline" code="DBApplet.class" codebase="." archive="classes111.zip" pluginspage="http://java.sun.com/products/plugin/1.3/plugin-install.html"> <noembed> &amp;lt;/COMMENT&amp;gt; No Java 2 SDK, Standard Edition v 1.3 support for APPLET!! </noembed>
我用的是数据库是Oracle,大家可以根据自己情况改改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值