首先 : 整个项目的项目结构为 :
1.第一步先导入数据库的驱动,我的mysql数据库是8.0以上版本,然后导入的驱动就是8.0.16版本的jar包;
1.JdbcBase :
JDBC基础操作封装成了JdbcBase类,在里面先静态定义了数据库连接对象和DQL查询结果,然后在静态代码块中加载了mysql的驱动,创建了连接对象,创建了执行查询的sql语句,和执行增删改查的sql语句,在输入的参数中用Object[]来接收'?'占位符的实际参数;最后再释放资源;
代码 :
java
package com.it.dao;
import java.sql.*;
public class JdbcBase {
static Connection conn;// 数据库连接对象
static ResultSet rs;// DQL查询结果
// 在静态代码块中加载驱动
static {
try{
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e){
e.printStackTrace();
}
}
//创建连接对象
public static Connection getConnection() {
try {
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/pcm?characterEncoding=utf8&serverTimezone=GMT%2B8","root","1234");
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
//创建执行查询的sql语句
public static ResultSet querySql(String sql, Object[] obj)throws Exception{
// 获取连接对象
conn = getConnection();
// 获取执行sql语句对象
try {
PreparedStatement pstm = conn.prepareStatement(sql);
if(obj != null){
for(int i=0;i<obj.length;i++){
pstm.setObject(i+1,obj[i]);
}
}
rs = pstm.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
// 执行增删改sql语句
public static int updateSql(String sql,Object[] obj){// 返回1成功,返回0失败
int num = 0;
// 获取连接对象
conn = getConnection();
// 获取执行sql语句的对象
try {
PreparedStatement pstm = conn.prepareStatement(sql);
if(obj != null){
// 对 ? 进行赋值
for(int i=0;i<obj.length;i++){
pstm.setObject(i+1,obj[i]);
}
}
//执行增删改语句
num = pstm.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
return num;
}
// 释放资源
public static void close(){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
2.App.java :
编写主界面 : 就是一些简单但又繁杂的部分;大概截图如下 :
然后在下面编写了上面方法的实现;
3.pcm.java
登录之后,进入个人的通讯录管理系统;
4.UserDao和ContactDao部分 :
定义了一些增删改查的部分代码 :
如 :
数据库部分 :
包含两张表 user表 和 Contact 表 :
数据库结构如 :
user表和contact表通过id和id_user来连接,contact表中的id_user标识该联系人属于那个user;
项目的一些运行截图 :