高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(一)
高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(二)
高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(三)
高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(四)
高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(五)
[高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(六)](当前位置)
高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(七)
高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(八)
高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(九)
项目效果图
|
|
| |
|
功能点实现
- 实现学生信息的录入
- 实现学生信息的修改
- 实现学生信息的更新
- 实现学生信息的删除
- 添加快捷键使用,方便快速管理
- 使用javafx+fxml+css控制ui样式
- 实现以javafx内部api调用绘制字体特效,无需额外资源调度
- 实现软件图标自定义,增加软件美观度
- 实现拖动窗口即可移动,使更加人性化
- 实现软件英文化,增加可交流性
- 禁用窗口缩放功能,防止ui碰撞
- 添加作者、主页、关闭按钮
- 增加事务弹窗,给予正确提示及错误解决方案
内部优化
- 使用分装思想,将功能块拆分,设立CreateMenu类,统一添加
- 封装错误与信息提示框,统一布局格式
- 封装数据库连接类,无需重复调度
- 采用Lambda表达式绑定事件,无需重写类
- 使用fxml模块化设计标签,方便增改
- 采用css设置样式,统一管理
- 去除不必要的类public,增加软件安全性
- 利用SceneBuilder绘制生成fxml控件,提升编写效率
- 采用不同尺寸图标格式适应多种运行状态
类结构示例
创建数据库连接类
数据库使用mysql,百度就有下载,要下载exe版的,zip不好配置了,弄不好就不能用,网上有好多教程二三十步就安装好了,也不费劲%&%$&。。
还要下载一个Navicat,是可视化的,这个要钱的,要下载破解器,弄好之后,可能还不能用,有个错误信息,要输三条语句才能用
我记得是,具体看百度吧
1、use mysql;
2、alter user ‘root’@‘localhost’ identified with mysql_native_password
by ‘********’;3、flush privileges;
你也可以用oracle,不过比这个也麻烦,你可以试一下
1、创建类
我们既然是数据库项目,我们当然要创建数据库的连接
创建ConnectSQL类用作连接
class ConnectSQL {
Statement connectSQL(){
return statement;
}
}
2、数据库连接步骤
数据库连接一般就那几步
- Class.forName(“com.mysql.cj.jdbc.Driver”);
- Connection connection = DriverManager.getConnection(“地址”,“名字”,“密码”);
- Statement statement = connection.createStatement();
地址要写:
jdbc:mysql://localhost:3306/university?serverTimezone=CTT&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true
名字是你数据库的名
密码是你数据库的密码
3、一百个注意事项
注意: 我的端口号是3306,默认也是3306,要是改成别的记得改了
注意: 我用的是mysql-connector-java-8.0.18.jar,要记得导包,下载地址直接百度就有,导包也百度就有
注意: 我用的是mysql ,要是其他的数据库就要用其他的jar
注意版本: mysql是8的,还有一种常见的是5的,用错就不行
注意: 要保证mysql是启动的,要是启动不起来就看一下服务,有时候杀毒软件那个小火箭一飞就按垃圾清理了,你死活连不上
注意: 你用户要建立对,密码要填对,垃圾的错误提示,不管你怎么错了都是显示连接错误
注意: 地址中要使用useUnicode,要不用的是其他的字符集
注意: 地址中要使用serverTimezone=CTT,时间同步
注意: 地址中要使用characterEncoding=utf-8,字符编码
注意: 地址中使用university,是因为我在数据库中建立的一个university的数据库(注意不是表),你要根据你建立的来弄
注意: 在写代码之前要保证数据库能用,先在cmd或者Navicat中弄对
这些坑我都掉过,我看见过阎王爷了,我现在谁也不怕了!!!
4、类的具体实现
其实直接把那三句话写上就行了,但是追求完美:所以加了些异常处理,就成下面这个样子了:
- 我又定义了一个MassageError类,用来专门显示错误信息
- 这个类主要是用来返回一个statement,这样就不用每回都这么麻烦的连接了,主要是为了以后方便
第一句就扩展成这样了:
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
new MassageError().show("Class Not Found!",e.getMessage());
}
第二句就扩展成这样了:
Connection connection = null;
try {
connection = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/university?serverTimezone=CTT&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true",
"root","hadoop");
} catch (SQLException e) {
new MassageError().show("Connection Unavailable!",e.getMessage());
}
第三句就扩展成这样了:
Statement statement = null;
try {
assert connection != null;
statement = connection.createStatement();
} catch (SQLException e) {
new MassageError().show("Statement Unavailable!",e.getMessage());
}
最后总的代码就是这样的:
package system;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
class ConnectSQL {
Statement connectSQL(){
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
new MassageError().show("Class Not Found!",e.getMessage());
}
Connection connection = null;
try {
connection = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/university?serverTimezone=CTT&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true",
"root","hadoop");
} catch (SQLException e) {
new MassageError().show("Connection Unavailable!",e.getMessage());
}
Statement statement = null;
try {
assert connection != null;
statement = connection.createStatement();
} catch (SQLException e) {
new MassageError().show("Statement Unavailable!",e.getMessage());
}
return statement;
}
}
5、错误显示的类
- Alert就是一个弹出的窗口
- setTitle是标题
- setHeaderText是主要的信息
- setContentText是详细的信息
package system;
import javafx.scene.control.Alert;
class MassageError {
void show(String HeaderText,String ContentText){
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setTitle("error");
alert.setHeaderText(HeaderText);
alert.setContentText(ContentText);
alert.show();
}
}
好了,现在就完成了连接数据库的操作
关注后续章节,我们会添加更多功能:
高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(一)
高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(二)
高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(三)
高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(四)
高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(五)
[高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(六)](当前位置)
高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(七)
高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(八)
高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(九)