java jtable mysql 练习与思考

  ---------经过之前的mysql数据库的学习与java连接数据库的学习,自己在尝试的同时

,在此分享下自己的学习练习的内容,代码并非原创,而是加以修改的,请见谅。

程序一:  

//java jtable mysql练习1
package eleven;
import java.awt.*;
import java.sql.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;

public class TableDatabase extends JFrame
{
	private static Component TableDatabase;

	public TableDatabase()
	{
		ArrayList columnNames = new ArrayList();
		ArrayList data = new ArrayList();

		//  Connect to an MySQL Database, run query, get result set
		String url = "jdbc:mysql://127.0.0.1:3306/class";
		String userid = "root";
		String password = "123456";
		String sql = "SELECT * FROM List1";
		try 

		(Connection connection = DriverManager.getConnection( url, userid, password );
				Statement stmt = connection.createStatement();

				ResultSet rs = stmt.executeQuery( sql ))
				{
			ResultSetMetaData md = rs.getMetaData();

			int columns = md.getColumnCount();

			//  Get column names
			for (int i = 1; i <= columns; i++)
			{
				columnNames.add( md.getColumnName(i) );
			}

			//  Get row data
			while (rs.next())
			{
				ArrayList row = new ArrayList(columns);

				for (int i = 1; i <= columns; i++)
				{
					row.add( rs.getObject(i) );
				}

				data.add( row );
			}
				}
		catch (SQLException e)
		{
			System.out.println( e.getMessage() );
		}
		Vector columnNamesVector = new Vector();
		Vector dataVector = new Vector();

		for (int i = 0; i < data.size(); i++)
		{
			ArrayList subArray = (ArrayList)data.get(i);
			Vector subVector = new Vector();
			for (int j = 0; j < subArray.size(); j++)
			{
				subVector.add(subArray.get(j));
			}
			dataVector.add(subVector);
		}

		for (int i = 0; i < columnNames.size(); i++ )
			columnNamesVector.add(columnNames.get(i));

		//  Create table with database data    
		JTable table = new JTable(dataVector, columnNamesVector)
		{
			public Class getColumnClass(int column)
			{
				for (int row = 0; row < getRowCount(); row++)
				{
					Object o = getValueAt(row, column);

					if (o != null)
					{
						return o.getClass();
					}
				}

				return Object.class;
			}
		};

		JScrollPane scrollPane = new JScrollPane( table );
		getContentPane().add( scrollPane );

		JPanel buttonPanel = new JPanel();
		getContentPane().add( buttonPanel, BorderLayout.SOUTH );
	}

	public static void main(String[] args)
	{
		TableDatabase frame = new TableDatabase();
		frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
		frame.pack();
		frame.setVisible(true);
	}
}
                                                                       运行结果

                                           

程序二:

//java jtable mysql练习2 
package eleven;

import java.awt.Dimension;
import java.io.PrintWriter;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.*;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;

public class TableDatabase2 {
	private static Object request;
	static JTable mysTable;
	//constructor method

	public static void main (String args []){
		Object [] columnNames = {"s_nu","s_no","s_name","p_class","s_sex"};

		mysTable = new JTable(28,5);//可以尝试加入个滚动条
		mysTable.setBounds(0,0,500,480);

		JFrame frame = new JFrame("King Musa Saloon Software");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setLayout(null);
		frame.setSize(500,480);
		frame.setResizable(false);
		frame.setVisible(true);
		frame.add(mysTable);

		try {
			Class.forName("com.mysql.jdbc.Driver");
			System.out.println("Driver loading success!");
			String url = "jdbc:mysql://localhost:3306/class";
			String name = "root";
			String password = "123456";
			try {
				java.sql.Connection con = DriverManager.getConnection(url, name, password);
				System.out.println("Connected.");

				// pull data from the database 
				java.sql.Statement stmts = null;
				String query = "select  s_nu,s_no,s_name,p_class,s_sex from List1 ";
				stmts = con.createStatement();
				ResultSet rs = stmts.executeQuery(query);
				int li_row = 0;
				while(rs.next()){
					/*
					 * 自己经过了思考,查阅资料,请教老师,终于
					 * 把下面的输出问题解决了。
					 * 清楚了setValueAt这个函数在这里的作用
					 */	
					mysTable.setValueAt(rs.getString("s_nu"),li_row,0);
					mysTable.setValueAt(rs.getString("s_no"),li_row,1);
					mysTable.setValueAt(rs.getString("s_name"),li_row,2);
					mysTable.setValueAt(rs.getString("p_class"),li_row,3);
					mysTable.setValueAt(rs.getString("s_sex"),li_row,4);

					int s_nu = rs.getInt("s_nu");
					//String s_nu = rs.getString("s_nu");
					String s_no = rs.getString("s_no");
					String s_name = rs.getString("s_name");
					String p_class = rs.getString("p_class");
					String s_sex = rs.getString("s_sex");

					System.out.println(s_nu  + s_no + s_name + p_class + s_sex);
					//System.out.print( s_nu);
					//System.out.print(s_no);
					//System.out.print(s_name);
					//System.out.print(p_class);
					//System.out.println(s_sex);
					li_row++;
				}

			} catch (SQLException e) {
				e.printStackTrace();
			}

		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}

	}

}

                                         运行结果图

                   

通过以上两个程序,我们可以看到不同的算法,不同的设计方案,结果的形式不同

说明一下,mysql加载的这个驱动文件(mysql-connector-java-5.1.7)版本如果太低,程序运行可能会报错,

不能输出图表。


  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值