• 技术文章 >Java >java教程

    java怎么显示mysql

    (*-*)浩(*-*)浩2019-05-20 16:00:24原创1603
    用java的swing组件画出表格,实现“增加”、“删除”、“保存”、“退出”的功能,并且与mysql数据库相连接。

    可以实现提取数据库中表的数据显示到含有表格的窗体上,也可以将在表格中修改的内容写入数据库表中。

    我实现以上功能时用了两个类,其中一个类是MyFrame,另外一个类是PutinStorage。

    具体代码如下(以下代码均为完整代码,经测试成功的):

    PutinStorage类:

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.util.Vector;
     
    import javax.swing.JOptionPane;
     
    public class PutinStorage {
    	// 得到数据库表数据
    	public static Vector getRows(){
    		String sql_url = "jdbc:mysql://localhost:3306/haha";	//数据库路径(一般都是这样写),test是数据库名称
    		String name = "root";		//用户名
    		String password = "123456";	//密码
    		Connection conn;
    		PreparedStatement preparedStatement = null;
     
    		Vector rows = null;
    		Vector columnHeads = null;
    		
    		try {
    			Class.forName("com.mysql.jdbc.Driver");		//连接驱动
    			conn = DriverManager.getConnection(sql_url, name, password);	//连接数据库
    //			if(!conn.isClosed())
    //				System.out.println("成功连接数据库");
    			preparedStatement = conn.prepareStatement("select * from aa");
    			ResultSet result1 = preparedStatement.executeQuery();
    			
    			if(result1.wasNull())
    				JOptionPane.showMessageDialog(null, "结果集中无记录");
    			
    			rows = new Vector();
    			
    			ResultSetMetaData rsmd = result1.getMetaData();
    					
    			while(result1.next()){
    				rows.addElement(getNextRow(result1,rsmd));
    			}
    			
    		} catch (ClassNotFoundException e) {
    			// TODO Auto-generated catch block
    			System.out.println("未成功加载驱动。");
    			e.printStackTrace();
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			System.out.println("未成功打开数据库。");
    			e.printStackTrace();
    		}
    		return rows;
    	}
    	
    	// 得到数据库表头
    	public static Vector getHead(){
    		String sql_url = "jdbc:mysql://localhost:3306/haha";	//数据库路径(一般都是这样写),test是数据库名称
    		String name = "root";		//用户名
    		String password = "123456";	//密码
    		Connection conn;
    		PreparedStatement preparedStatement = null;
     
    		Vector columnHeads = null;
    		
    		try {
    			Class.forName("com.mysql.jdbc.Driver");		//连接驱动
    			conn = DriverManager.getConnection(sql_url, name, password);	//连接数据库
    //			if(!conn.isClosed())
    //				System.out.println("成功连接数据库");
    			preparedStatement = conn.prepareStatement("select * from aa");
    			ResultSet result1 = preparedStatement.executeQuery();
    			
    			boolean moreRecords = result1.next();
    			if(!moreRecords)
    				JOptionPane.showMessageDialog(null, "结果集中无记录");
    			
    			columnHeads = new Vector();
    			ResultSetMetaData rsmd = result1.getMetaData();
    			for(int i = 1; i <= rsmd.getColumnCount(); i++)
    				columnHeads.addElement(rsmd.getColumnName(i));
    			
    		} catch (ClassNotFoundException e) {
    			// TODO Auto-generated catch block
    			System.out.println("未成功加载驱动。");
    			e.printStackTrace();
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			System.out.println("未成功打开数据库。");
    			e.printStackTrace();
    		}
    		return columnHeads;
    	}
    	
    	// 得到数据库中下一行数据
    	private static 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 static void main(String[] args){
    		getRows();
    	}*/
    }

    MyFrame类:

    import java.awt.BorderLayout;
    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    import java.util.Vector;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableModel;
     
    import per.tushu.storage.PutinStorage;
     
    public class MyFrame extends JFrame{
    	
    	DefaultTableModel tableModel;		// 默认显示的表格
    	JButton add,del,exit,save;		// 各处理按钮
    	JTable table;		// 表格
    	
    	JPanel panelUP;	//增加信息的面板
    	
    	// 构造函数
    	public MyFrame(){
    		this.setBounds(300, 200, 600, 450);		// 设置窗体大小
    		this.setTitle("测试");		// 设置窗体名称
    		this.setLayout(new BorderLayout());	// 设置窗体的布局方式
    				
    		// 新建各按钮组件
    		add = new JButton("增加");
    		del = new JButton("删除");
    		save = new JButton("保存");
    		exit = new JButton("退出");
    		
    		panelUP = new JPanel();		// 新建按钮组件面板
    		panelUP.setLayout(new FlowLayout(FlowLayout.LEFT));	// 设置面板的布局方式
    		
    		// 将各按钮组件依次添加到面板中
    		panelUP.add(add);
    		panelUP.add(del);
    		panelUP.add(save);
    		panelUP.add(exit);
    		
    		// 取得haha数据库的aa表的各行数据
    		Vector rowData = PutinStorage.getRows();
    		// 取得haha数据库的aa表的表头数据
    		Vector columnNames = PutinStorage.getHead();
    		
    		
    		// 新建表格
    		tableModel = new DefaultTableModel(rowData,columnNames);	
    		table = new JTable(tableModel);
    		
    		JScrollPane s = new JScrollPane(table);
    		
    		// 将面板和表格分别添加到窗体中
    		this.add(panelUP,BorderLayout.NORTH);
    		this.add(s);
    		
    		// 事件处理
    		MyEvent();
    		
    		this.setVisible(true);		// 显示窗体
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);		 // 设置窗体可关闭
    	}
    	
    	// 事件处理
    	public void MyEvent(){
    		
    		// 增加
    		add.addActionListener(new ActionListener(){
     
    			@Override
    			public void actionPerformed(ActionEvent arg0) {
    				// 增加一行空白区域
    				tableModel.addRow(new Vector());
    			}
    			
    		});
    		
    		// 删除
    		del.addActionListener(new ActionListener(){
     
    			@Override
    			public void actionPerformed(ActionEvent arg0) {
    				// TODO Auto-generated method stub
    				// 删除指定行
    				int rowcount = table.getSelectedRow();
    				if(rowcount >= 0){
    					tableModel.removeRow(rowcount);
    				}
    			}
    			
    		});
    		
    		/**
    		* 保存
    		* 我的解决办法是直接将aa表中的全部数据删除,
    		* 将表格中的所有内容获取到,
    		* 然后将表格数据重新写入aa表
    		*/
    		save.addActionListener(new ActionListener(){
     
    			@Override
    			public void actionPerformed(ActionEvent e) {	
    				int column = table.getColumnCount();		// 表格列数
    				int row = table.getRowCount();		// 表格行数
    				
    				// value数组存放表格中的所有数据
    				String[][] value = new String[row][column];
    				
    				for(int i = 0; i < row; i++){
    					for(int j = 0; j < column; j++){
    						value[i][j] = table.getValueAt(i, j).toString();
    					}
    				}
    				
    				// 以下均为对数据库的操作
    				String sql_url = "jdbc:mysql://localhost:3306/haha";	//数据库路径(一般都是这样写),haha是数据库名称
    				String name = "root";		//用户名
    				String password = "123456";	//密码
    				Connection conn;
    				PreparedStatement preparedStatement = null;
     
    				try {
    					Class.forName("com.mysql.jdbc.Driver");		//连接驱动
    					conn = DriverManager.getConnection(sql_url, name, password);	//连接数据库
    					if(!conn.isClosed())
    						System.out.println("成功连接数据库");
    					
    					// 删除aa表中所有数据
    					preparedStatement = conn.prepareStatement("delete from aa where true");
    					preparedStatement.executeUpdate();
    					
    					// 将value数组中的数据依次存放到aa表中
    					for(int i = 0; i < row; i++){
    						preparedStatement = conn.prepareStatement("insert into aa values(" + Integer.parseInt(value[i][0]) + ",'" + value[i][1] + "')");
    						preparedStatement.executeUpdate();
    					}
    					
    				} catch (ClassNotFoundException e1) {
    					// TODO Auto-generated catch block
    					System.out.println("未成功加载驱动。");
    					e1.printStackTrace();
    				} catch (SQLException e1) {
    					// TODO Auto-generated catch block
    					System.out.println("未成功打开数据库。");
    					e1.printStackTrace();
    				}
    				
    				// 保存后退出
    				System.exit(0);
    			}
    		});
    		
    		// 退出
    		exit.addActionListener(new ActionListener(){
    			@Override
    			public void actionPerformed(ActionEvent e) {
    			// TODO Auto-generated method stub
    				System.exit(0);
    			}
    				
    		});
    	}
    	
    	// 主函数
    	public static void main(String[] args){
    		new MyFrame();
    	}
    }

    执行以上代码的时候,最初显示的窗体如下所示:

    javas.png

    点击增加按钮并写入需要增加的内容(我增加了三次)如下图:

    javas1.png

    点击删除按钮,删除指定行(我删除了第2行和第4行),如下图:

    javas2.png

    点击保存按钮,会发现窗口也关闭了。这是你可以再重新执行代码,会发现出现的表格页面与上图一样。

    点击退出按钮,关闭窗口。

    以上就是java怎么显示mysql的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:Java
    上一篇:java的解释器是什么 下一篇:java中的fail是什么意思
    20期PHP线上班

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• javascript有什么用?• java中多态是什么意思?• java工程师可以做什么• java的三大体系是什么• java的解释器是什么
    1/1

    PHP中文网