版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013907419/article/details/46485429
---------经过之前的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)版本如果太低,程序运行可能会报错,
不能输出图表。