一个关于jdbc操作mysql和java基础练手的通讯录管理系统小项目

首先 : 整个项目的项目结构为 :

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;

项目的一些运行截图 :

相关推荐
小白勇闯网安圈2 小时前
Django 响应对象、文件上传与类视图
数据库·django·sqlite
努力的小雨3 小时前
同一份 SQL 跑多套环境:Ksql 变量怎么用才安全
数据库
科技绘图4 小时前
快鲸GEO vs 传统AI搜索优化:全链路自动化与高效内容生产在转化闭环上的对比
数据库·人工智能·自动化
ltl4 小时前
数据库作为 LLM 记忆体:语义缓存、RAG 与一致性
数据库
ltl4 小时前
WAL 与崩溃恢复:ARIES 协议怎么跑通
数据库
ltl4 小时前
TEE 数据库:EnclaveDB、Oblivious 原语与机密 SQL
数据库
麻瓜code5 小时前
【Mysql】重新学一遍 SQL 执行顺序
数据库·sql
这个DBA有点耶6 小时前
数据库一体机架构演进:从硬件堆叠到软硬深度耦合
服务器·网络·数据库·硬件架构·运维开发·database·数据库架构
安_7 小时前
RAG的向量数据库:为LLM提供语义搜索能力
数据库
喜欢的名字被抢了7 小时前
程序出问题怎么查,以及如何让它不掉线
java·运维·数据库