`

Java swing 查询数据库并且直接显示

    博客分类:
  • Java
阅读更多
package db;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
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 java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;

public class InnerShow extends JFrame {
	
	private Connection conn; 
	private Statement statement; 
	private ResultSet resultSet;
	
	//GUI变量定义
	private JTable table; 
	private JTextArea inputQuery; 
	private JButton submitQuery; 

	@SuppressWarnings("deprecation")
	public InnerShow() {
		
		//Form的标题
		super( "输入SQL语句,按查询按钮查看结果。" ); 
		
//		String url = "jdbc:mysql://localhost:3306/studentManager?useUnicode=true&characterEncoding=UTF-8";
		
		String url = "jdbc:mysql://localhost:3306/ssms?useUnicode=true&characterEncoding=UTF-8";
		
		String username = "root";
		String password = "789+"; 
		
		//加载驱动程序以连接数据库
		try {
			Class.forName( "com.mysql.jdbc.Driver" );
			conn = DriverManager.getConnection(url, username, password);
		}catch ( ClassNotFoundException cnfex ) { //捕获加载驱动程序异常
			System.err.println("装载 JDBC/ODBC 驱动程序失败。" );
			cnfex.printStackTrace(); 
			System.exit( 1 ); // terminate program 
		}catch ( SQLException sqlex ) { //捕获连接数据库异常
			System.err.println( "无法连接数据库" ); 
			sqlex.printStackTrace(); 
			System.exit( 1 ); // terminate program 
		} 
		
		//如果数据库连接成功,则建立GUI
		//SQL语句
		String test = "SELECT * FROM department"; 
		inputQuery  = new JTextArea( test, 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(); 
	} 

	private void getTable(){
		
		try { 
			//执行SQL语句
			String query = inputQuery.getText(); 
			statement = conn.createStatement(); 
			resultSet = statement.executeQuery( query ); 
			
			//在表格中显示查询结果
			displayResultSet( resultSet ); 
		}catch ( SQLException sqlex ) { 
			sqlex.printStackTrace(); 
		} 
	} 
	
	@SuppressWarnings({ "rawtypes", "unchecked" })
	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(); 
		} 
	}
	
	@SuppressWarnings({ "rawtypes", "unchecked" })
	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 ) ); 
		
		//返回一条记录 
		return currentRow; 
	} 

	public void shutDown() {
		
		try {
			//断开数据库连接
			conn.close(); 
		}catch ( SQLException sqlex ) {
			System.err.println( "Unable to disconnect" );
			sqlex.printStackTrace();
		}
	} 

	public static void main( String args[] ){
		
		final InnerShow app = new InnerShow(); 
		
		app.addWindowListener( new WindowAdapter() {
			public void windowClosing( WindowEvent e ){
				app.shutDown();
				System.exit( 0 ); 
			}
		});
	}
} 

 

分享到:
评论
2 楼 csdn_zuoqiang 2010-12-30  
mikexie 写道
程序完整可以执行,排版工整,逻辑清晰

感谢你的指导,谢谢!



不客气。
1 楼 mikexie 2010-12-22  
程序完整可以执行,排版工整,逻辑清晰

感谢你的指导,谢谢!

相关推荐

    Java Swing实现添加数据并查询数据显示

    在Swing界面设计方面,你需要创建JFrame作为主窗口,然后添加各种组件,如JButton(用于触发添加和查询操作)、JTextField(用户输入数据)和JTable(显示查询结果)。使用ActionListener监听按钮事件,当用户点击...

    java Swing 设计数据库前台界面

    在本项目“java Swing 设计数据库前台界面”中,我们利用Swing组件来创建一个与数据库交互的用户界面,尤其是实现了JTable组件的分页功能。下面将详细介绍Swing、数据库连接、界面设计以及JTable分页的相关知识点。 ...

    java\Java swing 连接数据库的步骤

    以下是一个详细的Java Swing连接数据库的步骤,以SQL Server为例: 1. **导入必要的库**: 首先,你需要在项目中导入相关的JAR包来支持数据库连接。对于SQL Server,通常需要导入`sqljdbc4.jar`(或对应版本的驱动)...

    Java Swing 数据库 上传下载显示图片

    使用的是Swing组件和io流; 使用上传功能获取路径(我这边的是直接指定的,一般是从页面层获取的),然后传到dao层 然后通过dao层将二进制流写到数据库中(附上数据库); 点击下载功能,从数据库中获取二...

    java swing连接数据库以及三个jar包

    在Java Swing中创建数据库连接,通常我们会使用JDBC(Java Database Connectivity),这是一个Java API,允许Java程序与各种数据库进行交互。在这个场景中,"java swing连接数据库以及三个jar包"可能指的是你需要...

    JavaSwing开发简单数据库 personDB 源码

    在本项目"JavaSwing开发简单数据库 personDB 源码"中,我们聚焦于使用Swing构建一个与数据库交互的应用程序。源码的提供者是CSDN博主"placidzhang",我们可以从中学习如何在Java应用中整合数据库操作。 首先,Swing...

    Java基于JavaSwing和Mysql数据库的一个KTV点歌系统,大一下Java课设.zip

    Java基于JavaSwing和Mysql数据库的一个KTV点歌系统,大一下Java课设.zipJava基于JavaSwing和Mysql数据库的一个KTV点歌系统,大一下Java课设.zipJava基于JavaSwing和Mysql数据库的一个KTV点歌系统,大一下Java课设....

    Java Swing数据库管理系统

    **Java Swing数据库管理系统** 在Java编程领域,Swing是一个用于构建桌面应用程序的用户界面工具包。它是Java Foundation Classes (JFC)的一部分,提供了丰富的组件和功能,使得开发者能够创建美观且功能强大的图形...

    使用Java Swing界面实现数据库基本操作

    ### 使用Java Swing界面实现数据库基本操作 #### 一、引言 在软件开发领域,图形用户界面(GUI)是提高用户体验的重要组成部分。Java Swing作为Java平台上的一个强大的GUI工具包,为开发者提供了丰富的组件和功能来...

    JavaSwing图书管理系统SQL server数据库

    JavaSwing图书管理系统结合SQL Server数据库是一个典型的桌面应用开发实例,它主要展示了如何利用Java的Swing库构建用户界面,并与关系型数据库SQL Server进行数据交互。在这个系统中,教师或管理员可以进行图书的...

    基于Java Swing的物业管理系统源码+数据库(95分以上课程设计).zip

    基于Java Swing的物业管理系统源码+数据库(95分以上课程设计).zip 已获高分通过项目,代码完整下载即用,无需修改确保可以运行。 基于Java Swing的物业管理系统源码+数据库(95分以上课程设计).zip 已获高分...

    JAVA Swing自己编的数据库

    数据库方面,虽然没有明确指出使用哪种数据库,但常见的选择可能是SQLite,因为它是轻量级的,无需单独服务器进程,可以直接嵌入到Java应用中。JDBC是Java与各种数据库交互的标准接口,通过驱动程序类可以连接特定...

    使用java,jdbc连接数据库和Java swing图形化界面完成一个商品管理系统.zip

    在这个名为“使用java,jdbc连接数据库和Java swing图形化界面完成一个商品管理系统.zip”的压缩包中,包含了使用Java编程语言,结合JDBC(Java Database Connectivity)接口与MySQL数据库,以及利用Java Swing构建...

    使用Java Swing界面实现数据库基本操作.rar,Java Swing界面实现数据库基本操作

    本教程将深入探讨如何利用Java Swing构建一个交互式的应用程序,实现与数据库的基本操作,如查询、插入、更新和删除数据。 首先,我们需要理解Java Swing的基础。Swing是Java AWT(Abstract Window Toolkit)的扩展...

    基于Mysql、JavaSwing的电商购物系统(数据库大作业 含安装教程、报告)

    这是一个基于Mysql数据库、JavaSwing图形界面设计的电商购物系统项目,适合于数据库和Java课程的大作业或课设需求。这个系统包含了完整的代码实现、数据库脚本、实验报告以及安装指南,为用户提供了一站式的解决方案...

    Java基于JavaSwing和Mysql数据库的KTV点歌系统源码.zip

    Java基于JavaSwing和Mysql数据库的KTV点歌系统源码.zipJava基于JavaSwing和Mysql数据库的KTV点歌系统源码.zipJava基于JavaSwing和Mysql数据库的KTV点歌系统源码.zipJava基于JavaSwing和Mysql数据库的KTV点歌系统源码...

    (java swing毕业设计)酒店管理系统(ppt+ER图+流程图+需求背景数据库+架构说明有lun文视频源码齐全).zip

    (java swing毕业设计)酒店管理系统(ppt+ER图+流程图+需求背景数据库+架构说明有lun文视频源码齐全)(java swing毕业设计)酒店管理系统(ppt+ER图+流程图+需求背景数据库+架构说明有lun文视频源码齐全)(java swing毕业...

    基于javaswing的班费管理系统源码+数据库(Mybatis + Swing) 数据库大作业 .zip

    基于javaswing的班费管理系统源码+数据库(Mybatis + Swing) 数据库大作业。.zip已获导师指导并通过的98分高分大作业设计项目,也可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 基于...

    基于java swing带GUI界面的图书管理系统(源码+数据库).zip

    总的来说,这个基于Java Swing的图书管理系统是一个集成了前端和后端技术的综合实践项目,对于学习Java GUI编程和数据库应用的初学者来说,是一个很好的学习和参考案例。通过这个项目,开发者可以提升对Java编程、...

    Java Swing学生选课管理系统

    Java Swing学生选课管理系统是一种基于Java图形...总的来说,这个Java Swing学生选课管理系统展示了如何结合Java GUI技术与数据库来构建一个实用的应用程序,对于学习Java桌面应用开发和数据库集成有着很好的实践价值。

Global site tag (gtag.js) - Google Analytics