JAVA 信息查询界面
运行效果

代码
package JAVA.test;
import com.mysql.jdbc.Connection;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashSet;
import java.util.Set;
public class demo1 {
demo1(){
getConn();
ui();
}
JTextField stu_id;
JButton query,add,alter,del,enadd,enalter,cancel;
int add_num,sel_num=-1;
Boolean Editable = false;
DefaultTableModel dfm = new DefaultTableModel(){
@Override
public boolean isCellEditable(int row, int col) {
if (col == 0) {
return true;
}
if (row == add_num){
return Editable;
}
if (row == sel_num){
return Editable;
}
return false;
}
};
JTable info = new JTable(dfm);
final String[] info_rows = {"","学号","姓名","性别","年龄","班级"};
void ui(){
JFrame jf = new JFrame("信息查询");
JPanel jp = new JPanel();
jp.add(new JLabel("学号:"));
jp.add(stu_id=new JTextField(10));
jp.add(query=new JButton("查询"));
get_content("");
JScrollPane sp = new JScrollPane(info);
jp.add(sp);
jp.add(add=new JButton("添加"));
jp.add(alter=new JButton("修改"));
jp.add(del=new JButton("删除"));
jp.add(enadd=new JButton("确认添加"));
jp.add(enalter=new JButton("确认修改"));
jp.add(cancel=new JButton("取消"));
setButton(select_Modle);
listen lis = new listen();
add.addActionListener(lis);
alter.addActionListener(lis);
del.addActionListener(lis);
enadd.addActionListener(lis);
enalter.addActionListener(lis);
cancel.addActionListener(lis);
info.addMouseListener(new mlisten());
jf.add(jp);
jf.setSize(500,550);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//连接数据库
Connection conn;
ResultSet rs;
void getConn(){
String user = "root";
String passwd = "li123...";
String url = "jdbc:mysql://localhost:3306/student";
String driver= "com.mysql.jdbc.Driver";
try {
Class.forName(driver);
conn = (Connection) DriverManager.getConnection(url,user,passwd);
} catch (ClassNotFoundException e) {
msg("数据库驱动未找到"+e.getMessage());
} catch (SQLException throwables) {
msg("数据库连接失败"+throwables.getMessage());
}
}
//查询数据,并以数组方式返回
Object[][] query(String stu_id) throws SQLException {
String sql = "select * from student where id like'" + stu_id + "%';";
int i, j = 0;
String id, name, sex, age, class_name;
rs = conn.createStatement().executeQuery(sql);
rs.last();
i = rs.getRow();
rs.beforeFirst();
Object[][] obj = new Object[i][info_rows.length];
while (j<i) {
rs.next();
id = rs.getString(1);
name = rs.getString(2);
sex = rs.getString(3);
age = rs.getString(4);
class_name = rs.getString(5);
obj[j] = new Object[]{false, id, name, sex, age, class_name};
j++;
}
return obj;
}
//验证学号是否存在
boolean verfiy(String id) {
boolean b = false;
String sql = "select * from student where id='"+id+"';";
try {
if(conn.createStatement().executeQuery(sql).next()){
b=true;
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return b;
}
//更新数据
final int add_modle = 0;
final int alter_modle = 1;
void update(int row,int modle) {
Object[] data = input_val(row);
String sql = "";
String msg="";
if (modle==add_modle){
sql = "insert into student values(?,?,?,?,?)";
if (verfiy((String) data[1])){
msg("学号已存在!");
return;
}
msg="添加";
}else if (modle==alter_modle){
sql = "update student set id=?,name=?,sex=?,age=?,class=? where id=?";
msg="修改";
}
try {
PreparedStatement psm = conn.prepareStatement(sql);
for (int i = 1; i < data.length; i++) {
psm.setString(i, (String) data[i]);
if (modle==alter_Modle){
psm.setString(6, (String) data[1]);
}
}
psm.executeUpdate();
msg(msg+"成功!");
} catch (SQLException throwables) {
msg(msg+"失败!"+throwables.getMessage());
}
}
Set<Integer> rows = new HashSet<>();
//删除数据
void delete(){
String sql = "delete from student where id =?";
String id = "";
try {
for (Integer row : rows) {
id = (String) dfm.getValueAt(row,1);
PreparedStatement psm = conn.prepareStatement(sql);
psm.setString(1,id);
psm.executeUpdate();
}
msg("删除了"+rows.size()+"条数据");
rows.clear();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
//获取输入的内容
Object[] input_val(int row){
Object[] obj = new Object[info_rows.length];
for (int i = 0; i < obj.length; i++) {
obj[i] = dfm.getValueAt(row,i);
}
return obj;
}
//刷新表格内容
void get_content(String id){
try {
dfm.setDataVector(query(id),info_rows);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
TableColumn col = info.getColumnModel().getColumn(0);
col.setCellRenderer(info.getDefaultRenderer(Boolean.class));
col.setCellEditor(info.getDefaultEditor(Boolean.class));
}
//控制按钮
final int select_Modle = 1;
final int add_Modle = 2;
final int alter_Modle=3;
final int del_Modle=4;
final int dels_Modle=5;
void setButton(int model){
switch (model){
case select_Modle:
add.setEnabled(true);
alter.setEnabled(true);
del.setEnabled(true);
enadd.setVisible(false);
enalter.setVisible(false);
cancel.setVisible(false);
break;
case add_Modle:
add.setEnabled(false);
alter.setEnabled(false);
del.setEnabled(false);
enalter.setVisible(false);
enadd.setVisible(true);
cancel.setVisible(true);
break;
case alter_Modle:
add.setEnabled(false);
del.setEnabled(false);
alter.setEnabled(false);
enadd.setVisible(false);
enalter.setVisible(true);
cancel.setVisible(true);
break;
case del_Modle:
add.setEnabled(false);
alter.setEnabled(false);
del.setEnabled(true);
cancel.setVisible(false);
enalter.setVisible(false);
enadd.setVisible(false);
break;
}
}
void msg(String msg){
JOptionPane.showMessageDialog(null,msg);
}
class listen implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if (source.equals(query)){
setButton(select_Modle);
get_content(stu_id.getText());
} else if (source.equals(add)){
setButton(add_Modle);
dfm.addRow(new Object[info_rows.length]);
add_num=dfm.getRowCount()-1;
dfm.setValueAt(false,add_num,0);
Editable=true;
}else if (source.equals(alter)){
setButton(alter_Modle);
sel_num = info.getSelectedRow();
Editable=true;
}else if (source.equals(del)){
delete();
get_content("");
}else if (source.equals(enadd)){
update(add_num,add_modle);
get_content("");
setButton(select_Modle);
Editable=false;
add_num=-1;
}else if (source.equals(enalter)){
update(sel_num,alter_Modle);
get_content("");
Editable=false;
sel_num=-1;
setButton(select_Modle);
}else if (source.equals(cancel)){
get_content("");
setButton(select_Modle);
}
}
}
class mlisten implements MouseListener{
void select_rows(){
int row = info.getSelectedRow();
Object val = dfm.getValueAt(row, 0);
if (val.equals(true)){
rows.add(row);
}else if (val.equals(false)){
rows.remove(row);
}
if (rows.size()>1){
setButton(del_Modle);
}else if (rows.size()==1){
setButton(select_Modle);
}else if (rows.size()>=10){
msg("最多只能选"+rows.size()+"项");
}
}
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
select_rows();
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
}
public static void main(String[] args) {
new demo1();
}
}
学海无涯,回头是岸

浙公网安备 33010602011771号