⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 phone.java

📁 用java和mysql数据库编的一个电话管理工具。数据库和驱动要自己准备。是学习java数据库编程和GUI编程的好例子。
💻 JAVA
字号:
package mysqldatabase;

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

public class Phone extends JFrame{
	private Connection connection;
	private Statement statement;
	private ResultSet resultSet;
	private ResultSetMetaData rsMetaDate;
	
	//GUI变量定义
	private JTable table;
	private JTextArea inputQuery;
	private JButton submitQuery;
	public Phone(){
		//Form的标题
		super("输入SQL语句,按查询按钮查看结果");
		String url = "jdbc:mysql://localhost:3306/phonedata";
		String usrName = "root";
		String password = "jolinme";
		//加载驱动程序以连接数据库
		try{
			Class.forName("org.gjt.mm.mysql.Driver");
			connection = DriverManager.getConnection(url,usrName,password);
		}//捕获加载驱动程序异常
		catch (ClassNotFoundException cnfex){
			System.err.println("装载JDBC/ODBC驱动程序失败");
			cnfex.printStackTrace();
			System.exit(1);
		}//捕获连接数据库异常
		catch (SQLException sqlex){
			System.err.println("无法连接数据库");
			sqlex.printStackTrace();
			System.exit(1);
		}
		//如果数据库连接成功,则建立GUI
		//SQL语句
		String test = "select * from phone";
		inputQuery = new JTextArea(test,6,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);
		topPanel.add(submitQuery,BorderLayout.SOUTH);
		table = new JTable();
		Container c = getContentPane();
		c.setLayout(new BorderLayout());
		c.add(topPanel,BorderLayout.NORTH);
		c.add(table,BorderLayout.CENTER);
		getTable();
		setSize(500,300);
		show();
	}
	private void getTable(){
		try{
			String query = inputQuery.getText();
			statement = connection.createStatement();
			resultSet = statement.executeQuery(query);
			//在表格中显示查询结果
			displayResultSet(resultSet);
		}catch(SQLException sqlex){
			sqlex.printStackTrace();
		}
	}
	private void displayResultSet(ResultSet rs)throws SQLException{
		//定位到第一条记录
		boolean moreRecords = rs.next();
		if(!moreRecords){
			JOptionPane.showMessageDialog(this,"结果集中无记录");
			setTitle("无记录显示");
		}
		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 ) ); 
//			返回一条记录 
			return currentRow; 
			} 

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

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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -