java怎么显示mysql

互联网 19-5-17
用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(); 	} }

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

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

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

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

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

以上就是java怎么显示mysql的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: java
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:java的解释器是什么

相关资讯