通过JApplet连接derby数据库

import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; 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.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import javax.swing.JApplet; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.SwingUtilities; public class JDBC_Applet extends JApplet{ private JScrollPane jScrollPane; private JTextArea taResponse; private JPanel jPanel1,jPanel2,jPanel3,jPanel4; private JLabel jLabel3,jLabel6,jLabel7,jLabel9,jLabel10; private JTextField tfSql,tfUrl,tfUser,tfPassword; private JButton btnExecute,btnConnect,btnDisconnect; private JComboBox cbDriver; //----------------------------------------------------------------------------------- final static private String[] jdbcDriver = { "com.mysql.jdbc.Driver", "com.informix.jdbc.IfxDriver", "sun.jdbc.odbc.JdbcOdbcDriver", "com.borland.datastore.jdbc.DataStoreDriver","org.apache.derby.jdbc.EmbeddedDriver", "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 con = 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 JDBC_Applet(){ Com_init();//窗体内容 Post_init();//下拉菜单 } public void Post_init(){//下拉菜单的内容 for(int i= 0; i < jdbcDriver.length; i++){ cbDriver.addItem(jdbcDriver[i]); } } private void Com_init() { jScrollPane = new JScrollPane();//面板 taResponse = new JTextArea();//response:响应 文本域 // 显示sql查询结果的文本区域 jPanel2 = new JPanel(); jPanel1 = new JPanel(); jLabel6 = new JLabel(); tfSql = new JTextField(); // 输入sql语句的文本区域。 btnExecute = new JButton(); // sql执行按钮 jPanel3 = new JPanel(); jLabel3 = new JLabel(); jPanel4 = new JPanel(); cbDriver = new JComboBox(); // 数据库驱动下拉框 jLabel7 = new JLabel(); tfUrl = new JTextField(); // 连接数据库的url jLabel9 = new JLabel(); tfUser = new JTextField(); // 录入用户名的文本框 jLabel10 = new JLabel(); tfPassword = new JTextField(); // 录入用户密码的文本框 btnConnect = new JButton(); // 连接button btnDisconnect = new JButton(); // 释放数据库连接的button setFont(new Font("Verdana", 0, 25)); // 设置字体 jScrollPane.setViewportView(taResponse); getContentPane().add(jScrollPane, BorderLayout.CENTER); getContentPane().add(jPanel2, BorderLayout.EAST); jLabel6.setText("SQL:"); // label Sql: jPanel1.add(jLabel6); tfSql.setPreferredSize(new Dimension(300, 21)); jPanel1.add(tfSql); btnExecute.setText("执行语句"); btnExecute.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { btnExecuteActionPerformed(evt); } }); jPanel1.add(btnExecute); // 将jPanel1放到上边 getContentPane().add(jPanel1, BorderLayout.SOUTH); jPanel3.setPreferredSize(new Dimension(550, 100)); jPanel3.setMinimumSize(new Dimension(550, 100)); jPanel3.setMaximumSize(new Dimension(550, 100)); jLabel3.setText("JDBC 驱动:"); jPanel3.add(jLabel3); // label JDBC Driver: jPanel3.add(jPanel4); cbDriver.setPreferredSize(new Dimension(450, 26)); cbDriver.setMinimumSize(new Dimension(100, 26)); jPanel3.add(cbDriver); jLabel7.setText("数据库地址:"); jPanel3.add(jLabel7); // label Database URL: tfUrl.setPreferredSize(new Dimension(450, 21)); jPanel3.add(tfUrl); jLabel9.setText("用户名:"); jPanel3.add(jLabel9); // label User: tfUser.setPreferredSize(new Dimension(100, 21)); jPanel3.add(tfUser); jLabel10.setText("密码:"); jPanel3.add(jLabel10); tfPassword.setPreferredSize(new Dimension(100, 21)); jPanel3.add(tfPassword); btnConnect.setPreferredSize(new Dimension(89, 27)); btnConnect.setMaximumSize(new Dimension(89, 27)); btnConnect.setText("连接"); btnConnect.setMinimumSize(new Dimension(89, 27)); btnConnect.addActionListener(new ActionListener() {//连接按钮事件 public void actionPerformed(ActionEvent evt) { btnConnectActionPerformed(evt); } }); jPanel3.add(btnConnect); btnDisconnect.setText("断开"); btnDisconnect.addActionListener(new ActionListener() {//断开按钮事件 public void actionPerformed(ActionEvent evt) { btnDisconnectActionPerformed(evt); } }); jPanel3.add(btnDisconnect); // 放在布局管理器的北边 getContentPane().add(jPanel3, BorderLayout.NORTH); } //----------------------------------------------------------------------------------- private void btnConnectActionPerformed(ActionEvent be){//连接事件细节 if(connected){ taResponse.append("数据库已连接.\n"); }else{ driver = (String)cbDriver.getSelectedItem();//把下拉菜单的内容赋值给driver 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(); //con = DriverManager.getConnection(url,user,password); con = DriverManager.getConnection(url); if(con != 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 se){ SwingUtilities.invokeLater(new Runnable(){ public void run(){ taResponse.append("不能连接数据库.\n"); } }); se.printStackTrace(); }catch(Exception e){ e.printStackTrace(); } } } //----------------------------------------------------------------------------------- private void btnDisconnectActionPerformed(ActionEvent e){//断开事件细节 if(connected){ try{ if(con != null){ con.close(); con = null; SwingUtilities.invokeLater(new Runnable(){ public void run(){ taResponse.append("数据库断开.\n"); } }); } }catch(SQLException se){ SwingUtilities.invokeLater(new Runnable(){ public void run(){ taResponse.append("数据库断开错误.\n"); } }); se.printStackTrace(); } connected = false; driver = null; url = null; user = null; password = null; }else{ SwingUtilities.invokeLater(new Runnable(){ public void run(){ taResponse.append("数据库已断开.\n"); } }); } } //----------------------------------------------------------------------------------- private void btnExecuteActionPerformed(ActionEvent evt) {//执行SQL语句处理 if(!connected){//没有连接的情况 SwingUtilities.invokeLater(new Runnable(){ public void run(){ taResponse.append("没有可连接的数据库.\n"); } }); }else{ if(con == null){//con为空的情况 SwingUtilities.invokeLater(new Runnable() { public void run() { taResponse.append("连接数据库错误.\n"); } }); }else{ try{ query = tfSql.getText();//从文本域里获得用户输入 Statement stmt = con.createStatement();//创建一个声明 SwingUtilities.invokeLater(new Runnable(){ public void run(){ taResponse.append("正在查询:" + 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++){ String s; try{ s = new String(rs.getString(i).getBytes("ISO-8859-1"),"GBK"); rsLine += s; }catch (UnsupportedEncodingException e) { JOptionPane.showMessageDialog(null, "系统不支持的字符"); } } 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(); } } } } public static void main(String[] args) { JFrame frame = new JFrame("通过JApplet连接数据库..."); JDBC_Applet applet = new JDBC_Applet(); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); frame.getContentPane().add(applet); applet.init(); frame.setSize(400, 300); frame.setVisible(true); } }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值