一个关于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;

项目的一些运行截图 :

相关推荐
zyseo817 分钟前
谷歌SEO 站点地图优化实战:sitemap 是索引候选清单的运营工具
网络·数据库·经验分享·笔记·搜索引擎
wespaul18 分钟前
VeapAI 自然语言操作实战|第 04 篇:系统数据加工——把系统自身的元数据吃成知识
java·大数据·运维·数据库·人工智能
用户849137175471619 分钟前
数据库迁移总出问题?学会这个工具,让团队协作效率翻倍!
数据库·sql
幼儿园蛋小黑21 分钟前
SPI 子系统:从原理到实践
java·前端·数据库
安妮细水长流24 分钟前
【无标题】
数据库·mongodb
KKKlucifer26 分钟前
从规则到大模型:数据分类分级平台的能力分野与场景适配
大数据·数据库·分类
架构师伯子明1 小时前
QT+Opengl (1):渲染一个三角形
数据库
A-刘晨阳1 小时前
金仓时序数据库:以高效压缩、快速写入与时序优化,破解工业海量数据管理难题
数据库·时序数据库
2603_965148111 小时前
终极清单:构建自动化选品比价系统的所有组件与资源
大数据·运维·数据库·数据挖掘·自动化
打工仔折腾 AI1 小时前
SQL 编辑器不是高级记事本:KStudio 与 KSQL Developer 的建表与增删改查手法
数据库·人工智能·后端·python·sql·编辑器·ai agent 实战