Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > IT 认证 > 其它认证 > MySQLViewer - Java Demo - ConnectionJ
【标  题】:MySQLViewer - Java Demo - ConnectionJ
【关键字】:MySQLViewer,Java,Demo,ConnectionJ
【来  源】:http://blog.chinaunix.net/article.php?articleId=32452&blogId=3534

MySQLViewer - Java Demo - ConnectionJ

Your Ad Here

这是 MySQL Connect-J 的姊妹篇,主要是以界面的形式输出结果。

( !! 代码可以运行,但还存在许多问题,改进中 )

import java.sql.*;
import java.util.*;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class MySQLViewer extends JFrame{
 //数据库变量定义
 Connection conn = null;
 Statement stmt = null;
    ResultSet rs = null;
    String sqlStr = null;

 //GUI变量定义
 private JTable table = null;
 private JTextArea inputQuery = null;
 private JButton submitQuery = null;       
    
 public MySQLViewer() {
  //Form的标题 
  super( "MySQLViewer" );
  
        try {
           Class.forName("com.mysql.jdbc.Driver").newInstance();
           conn = DriverManager.getConnection(
               "jdbc:mysql://localhost/TestDB?user=root&password=88888888");
           stmt = conn.createStatement();
           sqlStr = "SELECT * FROM TestTABLE";
           rs = stmt.executeQuery(sqlStr);
    
           if (rs != null) {
      inputQuery = new JTextArea( sqlStr, 4, 30 );
         submitQuery = new JButton( "查询" );
         //Button事件
      submitQuery.addActionListener(
      new ActionListener() {
     public void actionPerformed( ActionEvent e ) {
      getTable();
     }
                });
       JPanel topPanel = new JPanel();
       topPanel.setLayout( new BorderLayout() );
    //将"输入查询"编辑框布置到 "CENTER"
    topPanel.add( new JScrollPane( inputQuery), BorderLayout.CENTER );
    //将"提交查询"按钮布置到 "SOUTH"
    topPanel.add( submitQuery, BorderLayout.SOUTH );
    table = new JTable();
    Container c = getContentPane();
    c.setLayout( new BorderLayout() );
    //将"topPanel"编辑框布置到 "NORTH"
    c.add( topPanel, BorderLayout.NORTH );
    //将"table"编辑框布置到 "CENTER"
    c.add( table, BorderLayout.CENTER );     
    getTable();
    setSize( 500, 300 );
    //显示Form
    show();
    
               Vector columnHeads = new Vector();
               Vector rows = new Vector();
               //获取字段的名称
               ResultSetMetaData rsmd = rs.getMetaData();
               for ( int i = 1; i <= rsmd.getColumnCount(); ++i ) {
                   columnHeads.addElement( rsmd.getColumnName( i ) );
               }
               //打印字段名称
               for ( int i = 1; i <= rsmd.getColumnCount(); ++i ) {
                   System.out.print(columnHeads.get(i-1)+"\t");
               }
               //获取记录集
               rs.beforeFirst();
               while(rs.next()) {
                   rows.addElement( getNextRow( rs, rsmd ) );
               }
   }
  }
  catch (Exception e) {
   System.out.println(e.toString());
  }
  finally {
   if (rs != null) {
    try {
     rs.close();
    }
    catch (SQLException sqlEx) {
     rs = null;
    }
   }
  
   if (stmt != null) {
    try {
     stmt.close();
    }
    catch (SQLException sqlEx) {
        stmt = null;
    }
   }
  }  
 }
 private void getTable() {
      try {
        //执行SQL语句
         String query = inputQuery.getText();
         stmt = conn.createStatement();
         rs = stmt.executeQuery( query );        
         //在表格中显示查询结果
         displayResultSet( rs );
      }
      catch ( SQLException sqlex ) {
         sqlex.printStackTrace();
      }
   }

   private void displayResultSet( ResultSet rs )
      throws SQLException
   {
      //定位到达第一条记录
      boolean moreRecords = rs.next(); 
      //如果没有记录,则提示一条消息
      if ( ! moreRecords ) {
         JOptionPane.showMessageDialog( this,
            "结果集中无记录" );
         setTitle( "无记录显示" );
         return;
      }
      Vector columnHeads = new Vector();
      Vector rows = new Vector();
      try {
         //获取字段的名称
         ResultSetMetaData rsmd = rs.getMetaData();
         for ( int i = 1; i <= rsmd.getColumnCount(); ++i )
            columnHeads.addElement( rsmd.getColumnName( i ) );
         //获取记录集
         do {
            rows.addElement( getNextRow( rs, rsmd ) );
         } while ( rs.next() );
         //在表格中显示查询结果
         table = new JTable( rows, columnHeads );
         JScrollPane scroller = new JScrollPane( table );
         Container c = getContentPane();
         c.remove(1);
         c.add( scroller, BorderLayout.CENTER );
         //刷新Table
         c.validate();
      }
      catch ( SQLException sqlex ) {
         sqlex.printStackTrace();
      }
   }

 private Vector getNextRow( ResultSet rs, ResultSetMetaData rsmd )
       throws SQLException {
  Vector currentRow = new Vector();
  for ( int i = 1; i <= rsmd.getColumnCount(); ++i )
   currentRow.addElement( rs.getString( i ) );
  //打印每条记录中每个字段
  System.out.println();
  for ( int i = 1; i <= rsmd.getColumnCount(); ++i )
  System.out.print(currentRow.get(i-1)+"\t");
  //返回一条记录  
  return currentRow;
 }
 public static void main(String[] args)  {
  MySQLViewer app = new MySQLViewer(); 
 }
}

Java2D - Application - 时钟实例及分析:【上一篇】
李延强:【下一篇】
【相关文章】
  • Java2D - Application - 时钟实例及分析
  • 修补Java的“危急”漏洞
  • Sun警告Java中存在两个严重漏洞
  • informix建立demo数据库
  • (转)java连接oracle数据库的各种方法及java在数据库中的含义
  • JAVA编写TCP通令的程序
  • java postgresql 二进制文件存储
  • MySQL:用Java来测试Mysql数据库的最大连接数
  • 澳客网开发编码约定(PHP,HTML,JavaScript的书写规范)
  • java对blob的存取
  • 【随机文章】
  • [课程设计]LL1 文法分析的实现
  • Protections and Reverse Engineering under .Net (CodeBreakers Journal投稿文章)
  • PHP的面向对象编程:开发大型PHP项目的方法
  • [转贴] 从PHP4移植到PHP5
  • Windows界面程序的数年挣扎:经验与教训——补完
  • 用ServletJSP动态生成英文、数字图像验证码
  • SHA-1算法使用
  • 公司简介
  • ORACLE的小BUG?
  • ASP adodb.stream 取 .gif 图片完整文件头&描述信息 By shawl.qiu
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.