javafx实现通讯录(数据库升级版)

在这里插入图片描述

Table01

package sample;

import javafx.application.Application;
import javafx.beans.Observable;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.FlowPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.stage.Stage;

import javax.tools.Tool;
import java.sql.*;

public class Table01 extends Application {
    
    

    //上半部分
    VBox vAll = new VBox();
    VBox vb = new VBox();
    HBox h1 = new HBox();
    HBox h2 = new HBox();
    HBox h3 = new HBox();
    TextField tfName = new TextField();
    TextField tfTel1 = new TextField();
    TextField tfTel2 = new TextField();
    TextField tfEmail = new TextField();
    Button btAdd = new Button("新增");
    Button btQuery = new Button("查询");
    Button btChange = new Button("更改");
    Button btDel = new Button("删除");

    TableView table = new TableView();
    //下半部分
    TableColumn idCol = new TableColumn("序号");
    TableColumn nameCol = new TableColumn("姓名");
    TableColumn tel1Col = new TableColumn("手机");
    TableColumn tel2Col = new TableColumn("办公电话");
    TableColumn emailCol = new TableColumn("邮箱");

    //文本框中的信息
    String sName = tfName.getText();
    String sTel1 = tfTel1.getText();
    String sTel2 = tfTel2.getText();
    String sEmail = tfEmail.getText();

    //数据
    final ObservableList<Person> data = FXCollections.observableArrayList();
    @Override
    public void start(Stage stage) {
    
    

        stage.setTitle("Table View Sample");
        stage.setWidth(450);
        stage.setHeight(600);

        //上半部分
        h1.getChildren().addAll(new Label("姓名:"),tfName,new Label("手机:"),tfTel1);
        h2.getChildren().addAll(new Label("办公电话:"),tfTel2,new Label("邮箱:"),tfEmail);
        h3.getChildren().addAll(btAdd,btChange,btQuery,btDel);
        h3.setSpacing(40);
        h3.setAlignment(Pos.TOP_CENTER);
        vb.getChildren().addAll(h1,h2,h3);
        vb.setSpacing(10);

        table.setEditable(true);

        //设置自动拉满    table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);

        //下半部分
        table.getColumns().addAll(idCol,nameCol,tel1Col,tel2Col,emailCol);

        //列与person类绑定
        idCol.setCellValueFactory(new PropertyValueFactory<Person,String>("id"));
        nameCol.setCellValueFactory(new PropertyValueFactory<Person,String>("name"));
        tel1Col.setCellValueFactory(new PropertyValueFactory<Person,String>("tel1"));
        tel2Col.setCellValueFactory(new PropertyValueFactory<Person,String>("tel2"));
        emailCol.setCellValueFactory(new PropertyValueFactory<Person,String>("email"));

        //合并
        VBox vbox = new VBox();
        vbox.setSpacing(5);
        vbox.setPadding(new Insets(10, 0, 0, 10));
        vbox.getChildren().addAll(vb,table);

        Scene scene = new Scene(new Group());
        ((Group) scene.getRoot()).getChildren().addAll(vbox);

        stage.setScene(scene);
        stage.show();

        btAdd.setOnAction(e->{
    
    
            add();
        });
        btDel.setOnAction(e->{
    
    
            del();
        });
        btQuery.setOnAction(e->{
    
    
            query();
        });
        btChange.setOnAction(e->{
    
    
             change();
        });

    }

    public static void main(String[] args) {
    
    
        launch(args);
    }

    public boolean IsIntact(){
    
        //判断是否
        sName = tfName.getText();
        sTel1 = tfTel1.getText();
        sTel2 = tfTel2.getText();
        sEmail = tfEmail.getText();
        if(sName.equals("")||sTel1.equals("")||sTel2.equals("")||sEmail.equals("")){
    
    
            System.out.println("请输入正确的查询信息");
            return true;
        }
        return false;
    }

    public void clean(){
    
    
        tfName.clear();
        tfTel1.clear();
        tfTel2.clear();
        tfEmail.clear();
    }

    public Boolean isSpecification(){
    
    
        sTel1 = tfTel1.getText();
        for(char c:sTel1.toCharArray()){
    
    
            if(!Character.isDigit(c)||sTel1.length()!=11){
    
    
                Stage stage = new Stage();
                stage.setScene((new Scene(new Label("    电话号错误!"),200,200)));
                stage.show();
                return false;
            }
        }
        sTel2 = tfTel2.getText();
        for(char c:sTel2.toCharArray()){
    
    
            if(!Character.isDigit(c)){
    
    
                Stage stage = new Stage();
                stage.setScene((new Scene(new Label("    座机号错误!"),200,200)));
                stage.show();
                return false;
            }
        }
        sEmail = tfEmail.getText();
        int cotain = 0;
        for(char c:sEmail.toCharArray()){
    
    
            if(c=='@')
                cotain++;
            if(!(Character.isDigit(c)||Character.isAlphabetic(c)||c=='@'||c=='.')){
    
    
                Stage stage = new Stage();
                System.out.println(c);
                stage.setScene((new Scene(new Label("     1.邮箱错误!"),200,200)));
                stage.show();
                return false;
            }
        }
        if(cotain != 1){
    
    
            Stage stage = new Stage();
            stage.setScene((new Scene(new Label("    2.邮箱错误!"),200,200)));
            stage.show();
            return false;
        }

        return true;
    }

    public void refresh(DataBaseUtil db){
    
    
            try {
    
    
                ResultSet rs = db.queryExecute("SELECT * FROM Person");
                data.clear();
                Tools.count = 1;
                while(rs.next()) {
    
    
                    Person pp = null;
                    pp = new Person(rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5));
                    data.add(pp);
                }
            } catch (SQLException throwables) {
    
    
                throwables.printStackTrace();
            }
            table.setItems(data);
    }
    public void refresh(DataBaseUtil db,String sql){
    
    
        try {
    
    
            ResultSet rs = db.queryExecute(sql);
            data.clear();
            Tools.count = 1;
            while(rs.next()) {
    
    
                Person pp = null;
                pp = new Person(rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5));
                data.add(pp);
            }
        } catch (SQLException throwables) {
    
    
            throwables.printStackTrace();
        }
        table.setItems(data);
    }

    public void add() {
    
    
        if(IsIntact())
            return;
        if(isSpecification()==false)
            return;
        if(Tools.list.contains(sName)) {
    
    
            System.out.println("有重名者,看看是否添加重复了!");
        }
        Tools.list.add(sName);
        Person p = new Person(sName,sTel1,sTel2,sEmail);
        String sql = "insert into Person (id,name,tel1,tel2,email) values (?,?,?,?,?)";
        DataBaseUtil db = new DataBaseUtil();
        boolean b = db.updateExecute(sql,new String[]{
    
    p.id,p.name,p.tel1,p.tel2,p.email});
        refresh(db);
        clean();
    }

    public  void change(){
    
    
        if(IsIntact())
            return;
        sName = tfName.getText();
        String sql = "update Person set id=?,name=?,tel1=?,tel2=?,email=? where name = '"+sName+"' ";
        DataBaseUtil db = new DataBaseUtil();
        db.updateExecute(sql,new String[]{
    
    tfName.getText(),tfName.getText(),tfTel1.getText(),tfTel2.getText(),tfEmail.getText()});
        refresh(db);
        clean();
    }

    public void query(){
    
    
        String sql = "select * from Person where name = '"+tfName.getText()+"' ";
        DataBaseUtil db = new DataBaseUtil();
        db.queryExecute(sql);
        Tools.count = 1;
        refresh(db,sql);
        clean();
    }

    public void del(){
    
    
        sName = tfName.getText();
        String sql = "delete from Person where name = ?";
        data.clear();
        DataBaseUtil db = new DataBaseUtil();
        db.updateExecute(sql,new String[] {
    
    sName});
        Tools.count = 1;
        refresh(db);
        table.setItems(data);
        clean();
    }


}

Person

package sample;



import javafx.beans.property.SimpleStringProperty;

import java.util.HashMap;

public class Person {
    
    
    String id;
    String name;
    String tel1;
    String tel2;
    String email;

    public Person(String name, String tel1, String tel2, String email) {
    
    
        this.id = String.valueOf(Tools.count++);
        this.name = name;
        this.tel1 = tel1;
        this.tel2 = tel2;
        this.email = email;
    }

    public Person(String id, String name, String tel1, String tel2, String email) {
    
    
        this.id = id;
        this.name = name;
        this.tel1 = tel1;
        this.tel2 = tel2;
        this.email = email;
    }

    public String getId() {
    
    
        return id;
    }

    public void setId(String id) {
    
    
        this.id = id;
    }

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }

    public String getTel1() {
    
    
        return tel1;
    }

    public void setTel1(String tel1) {
    
    
        this.tel1 = tel1;
    }

    public String getTel2() {
    
    
        return tel2;
    }

    public void setTel2(String tel2) {
    
    
        this.tel2 = tel2;
    }

    public String getEmail() {
    
    
        return email;
    }

    public void setEmail(String email) {
    
    
        this.email = email;
    }
}

DataBaseUtil

package sample;

import java.sql.*;

public class DataBaseUtil {
    
    

    //2.通过DriverManager获取数据库连接
//    String url = "jdbc:mysql://localhost:3306/label?sever";
            String url = "jdbc:mysql://localhost:3306/label?severTimezone=GMT%2B8";
    String driver = "com.mysql.cj.jdbc.Driver";
    String user = "root";
    String password = "wenchi0124";


    Connection conn = null;
    ResultSet rs = null;
    Statement statement = null;
    PreparedStatement ps = null;

    public DataBaseUtil() {
    
    
        try {
    
    
            conn = DriverManager.getConnection(url,user,password);
            System.out.println("line success");
        } catch (SQLException throwables) {
    
    
            throwables.printStackTrace();
        }
    }

    public void close(){
    
    
        try{
    
    
            if(rs != null){
    
    
                rs.close();
            }
            if(ps != null){
    
    
                ps.close();
            }
            if(statement != null){
    
    
                statement.close();
            }
            if(conn != null){
    
    
                conn.close();
            }
        }
        catch (SQLException throwables) {
    
    
            throwables.printStackTrace();
        }
        finally {
    
    
//            this.close();
        }
    }

    public ResultSet queryExecute(String sql) {
    
    
        try {
    
    
            Class.forName(driver);
            System.out.println("success01");
            statement = conn.createStatement();
            rs = statement.executeQuery(sql);
            return rs;
        }catch (Exception ex){
    
    
            ex.printStackTrace();
            return null;
        }
        finally {
    
    
//            this.close();
        }
    }
    //重载
    public ResultSet queryExecute2(String sql,String[] paras){
    
    
        try {
    
    
            Class.forName(driver);
            System.out.println("success02");
//            conn = DriverManager.getConnection(url,user,password);
            ps = conn.prepareStatement(sql);
            for(int i =0;i < paras.length;i++){
    
    
                ps.setString(i+1,paras[i]);
            }
            rs = ps.executeQuery();
            return rs;
        }catch (Exception ex){
    
    
            ex.printStackTrace();
        }
        finally {
    
    
            this.close();
        }
        return null;
    }

    public boolean updateExecute(String sql,String[] paras){
    
    
        boolean b = true;
        try {
    
    
            Class.forName(driver);
            System.out.println("success03");
//            conn = DriverManager.getConnection(url,user,password);
            ps = conn.prepareStatement(sql);
            for(int i =0;i < paras.length;i++){
    
    
                ps.setString(i+1,paras[i]);
            }
            if(ps.executeLargeUpdate() != 1){
    
    
                b = false;
            }
        }catch (Exception ex){
    
    
            b = false;
            ex.printStackTrace();
        }
        finally {
    
    
//            this.close();
        }
        return b;
    }

}

Tools

package sample;

import java.util.*;

public class Tools {
    
    
    public static int count = 1;
    public static List<String> list = new ArrayList<>();
//    @Override
//    public static boolean Contain(List<String> l,String s){
    
    
//        boolean flag = false;
//        for(String tStr: l){
    
    
//            if(tStr.equals(s)){
    
    
//                System.out.println("c: " + tStr +"and"+ s);
//                flag = true;
//            }
//        }
//        return flag;
//    }

}

show databases;
create database educational_administration;
create database label;

use educational_administration;
create table Student
(
    SId   varchar(10) PRIMARY KEY,
    Sname Varchar(10) NOT NULL,
    Sage  datetime,
    Ssex  varchar(10) NOT NULL
);

desc Student;
use mysql;

show tables;
use  label;

DROP table Person;

create table Person
(
    id    varchar(30),
    name  varchar(30),
    tel1  varchar(30),
    tel2  varchar(30),
    email varchar(30)
);

create table tmpPerson
(
    id    varchar(30),
    name  varchar(30),
    tel1  varchar(30),
    tel2  varchar(30),
    email varchar(30)
);

show variables like'%time_zone';
set global time_zone = '+8:00';
select database();
select * from Person;
drop table Person;

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'wenchi0124';
FLUSH PRIVILEGES ;
update Person set name='t' ,id='t'  ,tel1='t' ,tel2='t' ,email='t' where name = 'g';

猜你喜欢

转载自blog.csdn.net/m0_45311187/article/details/109685112
今日推荐