题目1.补充代码,完成loadData()方法的定义,实现功能。
源码
import javax.imageio.stream.ImageInputStream;
import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import java.awt.*;
import java.sql.*;
public class Main extends JFrame {
Object data[][];
Object colname[] = {"学号", "姓名", "年龄", "专业"};
JTable studentTable;
Connection conn;
public Main() {
initView();
}
public void initView() {
Container c = getContentPane();
c.setLayout(new BorderLayout());
data = new Object[10][4];
this.loadData();
studentTable = new JTable(data, colname);
c.add(new JScrollPane(studentTable), BorderLayout.CENTER);
}
private void loadData() {
String user = "root";
String psw = "helloworld";
try {
Class.forName("com.mysql.cj.jdbc.Driver");
System.out.println("数据库驱动加载成功");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student", user, psw);
System.out.println("数据库连接成功");
String sql = "select * from info";
ResultSet rs;
Statement stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
int i=0;
while(rs.next()){
data[i][0]=rs.getString("sno");
data[i][1]=rs.getString("snmae");
data[i][2]=rs.getString("sdept");
data[i][3]=rs.getInt("age");
// System.out.println(rs.getString(1)+rs.getString(2)+rs.getString(3)+rs.getInt(4));
i++;
}
rs.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Main app=new Main();
app.setSize(550,250);
app.setVisible(true);
app.setDefaultCloseOperation(3);
}
}
思路说明:向loadData()方法里连接数据库以及执行sql语句和遍历
1.连接数据库需要用Class.forName(“驱动名”)反射数据库的驱动
然后调用jar包里的方法DriverManager.getConnection(url, user, password);
此时数据库就已经连接成功(如果数据库存在,且正确导入jar包,密码正确)
2.定义一个sql语句String型的,用于存放查找表面信息的sql语句
ResultSet rs; Statement stmt = conn.createStatement(); rs = stmt.executeQuery(sql);
使用以上三个固定方法执行sql
3.遍历,将数据写入到GUI中
4.关闭rs,conn即可