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

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情
<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 ====================================================================== 🏆 ยอดนิยม: java/article/details/ - ประเด็นร้อน

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> No Java 2 SDK, Standard Edition v 1.3 support for APPLET!!
我用的是数据库是Oracle,大家可以根据自己情况改改。
【java】JApplet类的使用 代码清单: package p1; import java.awt.Graphics; import javax.swing.*; //*********Found********** public class Java_3 extends JApplet { double sum; //存和的变量 //*********Found********** publ... 阅读详情

相关推荐

使用Java Applet访问数据库

使用Java Applet访问数据库 文章详细介绍了使用Java Applet访问数据库的方法

关于在applet中使用JDBC访问数据库的一点总结

最近,在这里看到了几篇关于在applet中使用JDBC访问数据库的帖子,觉得大侠们有的回复很绝对,说applet不能访问数据库,不敢苟同,于是参照Sun的网上教程"[url=http://cn.sun.com/developers/onlineTraining/Programming/BasicJava1/data.html]Java程序设计语言基础: 实践指南,第1部

wangxd的专栏 1270

Windows微信数据库解密

Windows微信数据库解密、PC微信数据库解密

u011000995的博客 3451

微信 小程序 在电脑PC端无法加载的解决办法。电脑微信小程序打不开是怎么回事?电脑微信小程序不能打开解决方法教学

微信版本未及时更新,也会影响小程序的正常打开,可以尝试更新版本。

点赞的都能无bug通过! 3万+

fastadmin框架二开的网站和小程序,在电脑端微信打开时报错

1、fastadmin框架二次开发的网站,在部分电脑端微信浏览器中打开报错;2、fastadmin框架中的插件-shopro商城系统,在版本3.0.0之前(1.3.0、1.3.9、1.4.0),在部分电脑端微信客户端,打开其插件发布的小程序时,首页提示“暂未找到模板,请前往装修”,分类、购物车、我的页面全部空白。

koudandan的博客 1003

SQLite在3.7.0版本的WAL机制

   在android P上调试数据库拷贝问题时,发现应用的databases目录下除了普通的db后缀的数据库文件外,还有两个额外的文件,以我自己的应用为例,分别为 app.db、app.db-wal、app.db-shm。 然后发现即使已经往数据库更新数据后,通过工具打开db文件发现文件中的数据并未变化。调查了下发现是SQLite在3.7.0版本上的新特性。      1.什么是WAL?   ...

ws6013480777777的博客 1293

JappletApplet的区别

Swing必须是Japplet的子类,而非Swing小程序则是java.applet.Applet的子类 Applet是awt的JAppletswing的 (1):Japplet的缺省布局管理器为borderLayout,Applet的布局管理器为FlowLayout。   JApplet类使用BorderLayout的一个实例做为其内容窗格的布局管理器,而BorderLayo...

Lwy2009058212的博客 1469

java applet 一个简单的例子applet+html)

java applet一个类,其层次结构如下图:  类 JApplet  java.lang.Object    java.awt.Component        java.awt.Container            java.awt.Panel                java.applet.Applet                    javax.swing

caomiao2006的专栏 2万+

java常用类解析九:AppletJApplet)详解及示例

1、Applet类及各个方法说明      Applet类提供一个基本框架,使得applet可以通过Web浏览器来运行,applet没有main方法,它依靠浏览器调用Applet类中的方法。Applet不安全。下面是截取的一段Applet类的源代码:  /** * Called by the browser or applet viewer to inform this applet

Touch_2011的专栏 1万+

Atitit.java的浏览器插件技术 Applet japplet attilax总结

Atitit.java的浏览器插件技术  Applet  japplet attilax总结     1. Applet类及各个方法说明 1 2. JApplet类示例 2 3. / 用main方法运行JApplet   2 4. 设置获取参数 2 5. Firefox运行applet提示安全组织的解决 3 6. Japplet调用js 4 7. 调试的清除缓存 4 8

attilax的专栏 1038

java applet插件_Atitit.java的浏览器插件技术 Applet japplet attilax总结

Atitit.java的浏览器插件技术Appletjappletattilax总结1.Applet类及各个方法说明Applet类提供一个基本框架,使得applet可以通过Web浏览器来运行,applet没有main方法,它依靠浏览器调用Applet类中的方法·补充:JVM加载applet类,浏览器创建applet,浏览器调用init方法进行初始化,如果Applet的子·*类具有初...

weixin_29018335的博客 380

java applet实例_java applet 一个简单的例子applet+html)

java applet一个类,其层次结构如下图:类 JAppletjava.lang.Objectjava.awt.Componentjava.awt.Containerjava.awt.Paneljava.applet.Appletjavax.swing.JApplet编写applet类,继承Applet或是JApplet,然后完成init方法,在创建一个加载applet的html页面pack...

weixin_36310976的博客 767

applet一个例子Applet类和JApplet类)

一个例子JApplet继承自swing /*******HelloApplet.java*************/ [code="java"]package chapter9; import java.awt.Container; import javax.swing.JApplet; import javax.swing.JLabel; public class Hell...

269

Netbeans中创建Japplet程序

Applet类提供一个基本框架,使得applet可以通过Web浏览器来运行,布局管理器为FlowLayout,Applet没有main方法,它依靠浏览器调用Applet类中的方法。浏览器通过init、start、stop、destroy方法控制Applet,通常这些方法都是空方法,一般要覆盖这些方法实现操作。 Applet类没有考虑与Swing组件一起工作,所以从Applet类扩展出了一个JAp...

木生火 778

如何创建 java japplet,netbeans中创建applet程序(网上收集)

Web应用程序是为互联网编写的应用程序,很多语言都支持Web程序的开发,例如Perl、ASP.NET、Java等。NetBeans集成开发环境提供了对Web程序开发的良好支持,可以创建空Web应用程序项目、快速编写HTML页面、建立JSP文件、开发Servlet、使用JavaServer Faces和Struts框架、开发Applet小程序、创建和使用标记等。本章首先介绍如何开发一个可以在网页上运...

weixin_39616003的博客 550

java applet paint_java – 重写JApplet中的paint方法

经过大量研究,我发现问题在于JApplet的绘制方法不经常被调用.相反,内容窗格有自己的绘图表面,所以我只需要替换内容窗格以使其上传.继承人我这样做的方式:@Overridepublic void init(){double xFactor = ((double)(this.getWidth()))/((double)(qt.ORIGINAL_APPLET_WIDTH));double yFact...

weixin_32148341的博客 375
上一篇: Phone.com UP.SDK4.0开发工具包
下一篇: 在Java Applet中发Email (转载)
java169
博客等级 码龄18年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值