- 功能描述
- 数据库操作部分
- 核心代码(不是全部代码,要求注释)
- 运行效果
已完成学生成绩查询功能,支持按照学号查询该学生参与的所有比赛的成绩。
数据库操作部分步骤:加载JDBC驱动;
private String jdbcName="com.mysql.jdbc.Driver"; Class.forName(jdbcName);
创建数据库连接;
private String url="jdbc:mysql://localhost:3306/javadb?serverTimezone=UTC&characterEncoding=utf-8"; private String name="root"; private String pass="0000";
创建一个Statement对象或者PreparedStatement对象
PreparedStatement pstmt=con.prepareStatement(sql);
执行SQL语句(可以返回结果集);
select * from 参与 where 学号=?
如果返回结果集,遍历结果集;
while(rs.next()) {
tabledata[row][0]=rs.getInt(1);
tabledata[row][1]=rs.getInt(2);
tabledata[row][2]=rs.getInt(3);
row++;}
核心代码(不是全部代码,要求注释)
package function1;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;
class DbUtil {
private String url="jdbc:mysql://localhost:3306/javadb?serverTimezone=UTC&characterEncoding=utf-8";
private String name="root";
private String pass="0000";
private String jdbcName="com.mysql.jdbc.Driver";
public Connection getCon() throws Exception{
Class.forName(jdbcName); //加载驱动
Connection con=DriverManager.getConnection(url,name,pass); //创立连接
return con;
}
}
class StuDao{
public ResultSet show(Connection con,int num) throws Exception{
String sql="select * from 参与 where 学号=?";
PreparedStatement pstmt=con.prepareStatement(sql); //设置通道
pstmt.setLong(1, num);
return pstmt.executeQuery();
}}
public class StudentShow extends Jframe implements ActionListener{
JLabel classTxt;
JTextField classesTxt;
JButton selectBtn;
JTable students;
JPanel panel;
String []headers= {"学号","项目号","成绩"}; //结果集显示
Object [][] tabledata;
public StudentShow(String s) {
super(s);
classTxt=new JLabel("学号:");
classesTxt=new JTextField(10);
selectBtn=new JButton("查找");
panel=new JPanel();
panel.add(classTxt);panel.add(classesTxt);panel.add(selectBtn); //把组件添加到面板
students=new JTable();
setBounds(100,100,300,300);
add(panel,BorderLayout.NORTH);
selectBtn.addActionListener(this); //按钮添加监听器
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
String num=classesTxt.getText(); //从文本框获取文字
int numInt = Integer.parseInt(num); //强制转换为int类型
Connection con=null;
DbUtil dbutil=new DbUtil();
StuDao studao=new StuDao();
ResultSet rs=null;
tabledata=new Object[9][3];
try {
con=dbutil.getCon();
rs=studao.show(con, numInt);
int row=0;
while(rs.next()) { //给表赋值
tabledata[row][0]=rs.getInt(1);
tabledata[row][1]=rs.getInt(2);
tabledata[row][2]=rs.getInt(3);
row++;
}
students=new JTable(tabledata,headers);
add(new JScrollPane(students),BorderLayout.CENTER);
} catch (Exception e1) {
System.out.println("数据库连接失败");
}
}
public static void main(String[] args) {
new StudentShow("输入学号查询成绩");
}
}
运行效果
图片:



