想连接数据库实现一个学分的查,查询之后输出到一个JTable里,但是他只输出了表格没有输出数据,求大神救命!
贴个图
图片看不了的话我再贴个代码)(非完整)
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.*;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.TableColumnModel;
import java.sql.*;
public class Major extends JFrame
{
static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/CREDIT?useSSL=false&serverTimezone=UTC";
static final String USER = "root";
static final String PASS = "123456";//123456 嘿嘿
public Major()
{
super("不延毕");
setBounds(600,600,800,300);
JPanel chaxun = new JPanel();
JPanel zengjia = new JPanel();
JButton xiugai = new JButton();
JButton shanchu = new JButton();
JTabbedPane chk = new JTabbedPane(JTabbedPane.TOP);
chk.addTab("查询", chaxun);
chk.addTab("申请", zengjia);//创建选项卡窗格两个够了
JPanel pane = new JPanel();
pane.add(chk);
add(pane);
setVisible(true);//把他们都加入进来
JLabel name1 = new JLabel("姓名");
JTextField name2 = new JTextField(15);
JLabel xuehao1 = new JLabel("学号");
JTextField xuehao2 = new JTextField(15);
JLabel xuefen1 = new JLabel("学分");
JTextField xuefen2 = new JTextField(5);
JLabel liyou = new JLabel("申请理由");
JComboBox rea = new JComboBox();//rea是理由的意思
rea.addItem("参加讲座");
rea.addItem("大创比赛");
rea.addItem("其他");
JButton sq = new JButton("申请");
zengjia.add(name1);
zengjia.add(name2);
zengjia.add(xuehao1);
zengjia.add(xuehao2);
zengjia.add(xuefen1);
zengjia.add(xuefen2);
zengjia.add(liyou);
zengjia.add(rea);
zengjia.add(sq);//进行一个申请界面的写
//然后是连接数据库
Connection conn = null;
Statement stmt = null;
try{
// 注册 JDBC 驱动
Class.forName(JDBC_DRIVER);
// 打开链接
conn = DriverManager.getConnection(DB_URL,USER,PASS);
// 执行查询
stmt = conn.createStatement();
String sql;
sql = "SELECT id, name, number, xuefen ,reason ,zhuangt FROM xiangmu";
ResultSet rs = stmt.executeQuery(sql);
//计算有多少条,为了设置二维数组
int count = 0;
while(rs.next()){
count++;
}
Object[][] meat = new Object[count][6];
count = 0;
// 展开结果集数据库
while(rs.next()){
// 把数据add到数组里
meat[count][0] = rs.getInt("id");
meat[count][1] = rs.getString("name");
meat[count][2] = rs.getString("number");
meat[count][3] = rs.getString("xuefen");
meat[count][4] = rs.getString("reason");
meat[count][5] = rs.getString("zhuangt");
count++;
}
//JLabel voiersg = new JLabel("ID 姓名 学号 学分 申请理由 状态");
/axun.add(voiersg);
String[] biaotou = {"ID","姓名","学号","学分","申请理由","状态"};
JTable jieguo = new JTable(meat,biaotou);
chaxun.add(jieguo);
// 完成后关闭
rs.close();
stmt.close();
conn.close();
}catch(SQLException se){
// 处理 JDBC 错误
se.printStackTrace();
}catch(Exception e){
// 处理 Class.forName 错误
e.printStackTrace();
}finally{
// 关闭资源
try{
if(stmt!=null) stmt.close();
}catch(SQLException se2){
}// 什么都不做
try{
if(conn!=null) conn.close();
}catch(SQLException se){
se.printStackTrace();
}
}
}
}
while(rs.next())只能循环一次的,想要再循环,将游标重置就行了。