一个关于jdbc操作mysql和java基础练手的通讯录管理系统小项目
首先 : 整个项目的项目结构为 :

1.第一步先导入数据库的驱动,我的mysql数据库是8.0以上版本,然后导入的驱动就是8.0.16版本的jar包;
1.JdbcBase :
JDBC基础操作封装成了JdbcBase类,在里面先静态定义了数据库连接对象和DQL查询结果,然后在静态代码块中加载了mysql的驱动,创建了连接对象,创建了执行查询的sql语句,和执行增删改查的sql语句,在输入的参数中用Object[]来接收'?'占位符的实际参数;最后再释放资源;
代码 :
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;
项目的一些运行截图 :





相关文章:
一个关于jdbc操作mysql和java基础练手的通讯录管理系统小项目
首先 : 整个项目的项目结构为 : 1.第一步先导入数据库的驱动,我的mysql数据库是8.0以上版本,然后导入的驱动就是8.0.16版本的jar包; 1.JdbcBase : JDBC基础操作封装成了JdbcBase类,在里面先静态定义了数据库连接对象和DQL查询结果&#x…...
C++用条件变量实现线程安全的queue容器
#include <queue> #include <memory> #include <mutex> #include <condition_variable> template<typename T> class threadsafe_queue { private:mutable std::mutex mut; // 1 互斥量必须是可变的 std::queue<T> data_queue;std::condi…...
EDA实验-----3-8译码器设计(QuartusII)
目录 一. 实验目的 二. 实验仪器 三. 实验原理及内容 1.实验原理 2.实验内容 四.实验步骤 五. 实验报告 六. 注意事项 七. 实验过程 1.创建Verilog文件,写代码 编辑 2.波形仿真 3.连接电路图 4.烧录操作 一. 实验目的 学会Verilog HDL的…...
NFTScan | 11.06~11.12 NFT 市场热点汇总
欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期:2023.11.06~ 2023.11.12 NFT Hot News 01/ 《辛普森一家》提及 NFT 及区块链,相关 NFT 地板价涨至 0.35 ETH 11 月 6 日,据 Coindesk 报道,美国时间周…...
2022年12月 Python(五级)真题解析#中国电子学会#全国青少年软件编程等级考试
Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 下面哪个语句正确定义了元组类型数据tuple1?( ) A: tuple1=[“张三”,“李四”,“王五”] B: tuple1=(“张三”;“李四”;“王五”) C: tuple1=(张三,李四,王五) D: tuple1=(“张三…...
第三章 将对象映射到 XML - 使用列表或数组定义的属性
文章目录 第三章 将对象映射到 XML - 使用列表或数组定义的属性使用列表或数组定义的属性%ListOfDataTypes 或 %ArrayOfDataTypes 类型的属性%ListOfObjects 或 %ArrayOfObjects 类型的属性 第三章 将对象映射到 XML - 使用列表或数组定义的属性 使用列表或数组定义的属性 对…...
C/S架构学习之基于TCP的本地通信(客户机)
基于TCP的本地通信(客户机):创建流程:一、创建字节流式套接字(socket函数): int sock_fd socket(AF_LOCAL,SOCK_STREAM,0);二、创建客户机和服务器的本地网络信息结构体并填充客户机和服务器本…...
CCF 备忘
一、不错的网站 CCF CCSP 竞赛历年资料 官网 http://118.190.20.162/home.page 二、基础套路 循环输入 数组标记法(数组下标-数值 的映射) 两个矩阵相乘 map<long long, map<long long, long long> > ans; for(int i1;i<d;i){for(int…...
Spring Framework中的依赖注入:构造器注入 vs. Setter注入
前言 构造器注入和Setter注入是依赖注入(Dependency Injection,DI)中两种常见的方式,用于向一个对象注入其所依赖的其他对象或数值。这两种注入方式有各自的特点和用途。 构造器注入(Constructor Injectionÿ…...
Java学习之路 —— API篇
文章目录 前言Object类2. Objects类3. 包装类4. StringBuilder和StringBuffer5. StringJoiner6. Math7. System8. JDK8开始新增的日期、时间9. Arrays10. Lambda表达式11. 方法引用 前言 其实转语言来说,语法都比较简单,花个三天就会了,但最…...
Windows下安装Anaconda5.3.1+Python3.8+TensorFlow2.13.0-CPU版本总结
Python3.8安装可以参考博文https://janus.blog.csdn.net/article/details/55274849 进行安装即可。 【1】Anaconda 清华的开源软件镜像站:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/下载,这里选择的是5.3.1版本。 然后正常安装就可以&am…...
DigitalVirt 日本 Lite VPS 测评
发布于 2023-07-18 在 https://chenhaotian.top/vps/digitalvirt-jp-lite/ 官网链接(含AFF):https://digitalvirt.com/aff.php?aff459 日本 软银 CMI,联通首选。 流媒体解锁很好,详见测试。 注意,测速…...
Ridgeline plot / 远山图 / 山脊图 怎么画?怎么优化?
工具 Origin 2022 当然,用Matlab、Python也是可以的。 颜色配置 色卡调整...
【STM32/FreeRTOS】SysTick定时器及FreeRTOS系统节拍
目录 一、SysTick定时器 1、SysTick寄存器介绍 (1)控制及状态寄存器 (2)重装载数值寄存器 (3)当前数值寄存器 2、SysTick寄存器配置函数 二、FreeRTOS中的SysTick定时器 1、SysTick配置函数及分析 …...
Vue3封装自定义指令+h()
官方install介绍 directive/myDir/index.js 定义指令 import { h, render, ref } from "vue"; const vMyDir {mounted(el, binding) {renderElement(el, binding);}, }; // inserted是Vue2的生命周期钩子,所以在Vue3项目中要使用mounted const renderEl…...
爆火的迅雷网盘推广,一手云盘app拉新推广渠道必备项目 学习资料
迅雷网盘是目前几个主流网盘拉新推广之一 都可以通过”聚量推客“申请 目前主流的为:夸克网盘拉新、uc网盘推广、迅雷网盘,但是由于阿里的原因 夸克目前不对外开放名额,需要等待,取而代之主流的云盘推广就是迅雷网盘了 聚量推客…...
Jmeter 请求返回多字段 —— 传递登录接口!
Jmeter创建JDBC请求获取登录账密,结果存储到变量中,依次传给登录接口。 1、添加JDBC Request并设置变量,获取数据库多个字段值 ①添加好JDBC Connection Configuration并做好数据库连接配置 ②导入mysql驱动jar包 ③测试计划->添加线程…...
es 7.0常用的命令
es 7.0常用的命令 es 7.0中只有索引和文档(document),没有类型(type)了。 es新建索引: 格式: PUT /索引名称 {"mappings":{"properties":{"字段名称":{"type":"字段类型"}}} }PUT 加索…...
[文件读取]lanproxy 文件读取 (CVE-2021-3019)
1.1漏洞描述 漏洞编号CVE-2021-3019漏洞类型文件读取漏洞等级⭐漏洞环境VULFOCUS攻击方式 描述: Lanproxy 路径遍历漏洞通过../绕过读取任意文件。该漏洞允许目录遍历读取/../conf/config.properties来获取到内部网连接的凭据。 1.2漏洞等级 高危 1.3影响版本 Lanproxy 1.4漏洞…...
记录一种引起 CL.exe/ C++ 编译器无任何提示直接崩溃的问题
只需定义在源文件或公共引入的头文件之中,编译必定CL.exe 退出,错误代码2,它不会产生任何语法意义上的错误提示,感兴趣的可以记录下。 引发崩溃的代码: template <typename T> class IS_CONFIG_LOADER_T_CLASS…...
强化学习在并行机构人形机器人控制中的应用
1. 项目概述在机器人控制领域,强化学习(RL)正逐渐成为解决复杂动力学系统问题的有力工具。然而,当面对具有并行驱动机构的人形机器人时,传统RL训练方法往往面临一个关键挑战:大多数仿真环境无法准确模拟闭环运动链(Closed Kinemat…...
DeepSeek代码质量评估实战手册:7步完成从混沌到可度量的质变跃迁
更多请点击: https://kaifayun.com 第一章:DeepSeek代码质量评估的底层逻辑与核心价值 DeepSeek代码质量评估并非简单地统计行数或检测语法错误,而是基于多维语义理解构建的推理系统。其底层逻辑融合了静态分析、符号执行与大语言模型生成式…...
Visual Paradigm 17.0 团队协作新功能实测:手把手教你用项目模板和文件夹管理提效
Visual Paradigm 17.0 团队协作实战指南:从模板配置到文件夹管理的高效工作流在敏捷开发团队中,项目启动速度和资产管理的规范性往往直接影响整体效率。Visual Paradigm 17.0针对这一痛点推出的团队协作增强功能,特别是服务器端项目模板和文件…...
自制BLE112串口编程器:基于Bootloader的免调试器烧录方案
1. 项目概述:为BLE112模块打造一款免调试器的RS232编程器在嵌入式开发,特别是早期的蓝牙低功耗(BLE)模块应用中,我们常常会遇到一个棘手的问题:官方开发工具链的依赖和限制。以Silicon Labs(当时…...
基于ATmega2560与ISD1700的智能语音时钟:硬件选型、软件架构与避坑指南
1. 项目概述与核心价值去年折腾那个用ATMega328驱动三块显示屏的时钟时,我主要精力都花在了如何在320x240的TFT屏幕上把时间、日期和图标画得又准又好看上。项目在《Elektor》杂志上发表后,一位热心的读者给我提了个新想法:能不能做个会“说话…...
从BUG()到panic:深入Linux 5.4内核,看异常处理如何层层递进
从BUG()到panic:Linux内核异常处理的防御体系全解析当你在深夜调试一个内核模块时,突然屏幕刷出一串红色警告——这可能是每个Linux内核开发者都经历过的噩梦时刻。但你是否想过,从第一行警告出现到系统完全崩溃,内核究竟经历了怎…...
光轮智能 谢晨 访谈总结机器人仿真数据产业
光轮智能 谢晨 访谈总结机器人仿真关于创始人关于数据数据金字塔数据痛点仿真数据的重要性仿真数据的质量b站链接地址公司官网关于创始人 清华物理;哥伦比亚金融;英伟达智驾仿真;小鹏智驾仿真;现为光轮智能CEO 关于数据 数据的…...
2027考研全套资料免费分享
备战27考研最全备考资料整理完毕,一路走来深知备考搜集资料耗费大量时间,浪费不少精力。特意整理2027考研全科完整版资源,全部打包汇总,零基础考生直接拿来就能使用,省去四处搜集资料的烦恼。资料内含:&…...
解决claude code频繁封号与token不足的taotoken接入方案
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 解决Claude Code频繁封号与Token不足的Taotoken接入方案 1. 问题背景:Claude Code用户面临的挑战 对于依赖Claude Cod…...
将deepseek v4 pro集成到codex桌面APP中使用
📕我是廖志伟,一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》(基础篇)、(进阶篇)、《解密程序员的思维密码——沟通、演讲、思考的实践》作者、清华大学出版社签约作家、Java领域…...
