当前位置: 首页 > news >正文

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

项目的一些运行截图 : 

 

 

 

 

http://www.lryc.cn/news/229854.html

相关文章:

  • C++用条件变量实现线程安全的queue容器
  • EDA实验-----3-8译码器设计(QuartusII)
  • NFTScan | 11.06~11.12 NFT 市场热点汇总
  • 2022年12月 Python(五级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 第三章 将对象映射到 XML - 使用列表或数组定义的属性
  • C/S架构学习之基于TCP的本地通信(客户机)
  • CCF 备忘
  • Spring Framework中的依赖注入:构造器注入 vs. Setter注入
  • Java学习之路 —— API篇
  • Windows下安装Anaconda5.3.1+Python3.8+TensorFlow2.13.0-CPU版本总结
  • DigitalVirt 日本 Lite VPS 测评
  • Ridgeline plot / 远山图 / 山脊图 怎么画?怎么优化?
  • 【STM32/FreeRTOS】SysTick定时器及FreeRTOS系统节拍
  • Vue3封装自定义指令+h()
  • 爆火的迅雷网盘推广,一手云盘app拉新推广渠道必备项目 学习资料
  • Jmeter 请求返回多字段 —— 传递登录接口!
  • es 7.0常用的命令
  • [文件读取]lanproxy 文件读取 (CVE-2021-3019)
  • 记录一种引起 CL.exe/ C++ 编译器无任何提示直接崩溃的问题
  • 【华为OD机试高分必刷题目】生理周期(C++-模拟迭代实现)
  • 【Vue】过滤器Filters
  • springcloud旅游网站源码
  • Unity中关于Lerp()方法的使用
  • 计算机毕业设计选题推荐-体育赛事微信小程序/安卓APP-项目实战
  • Android BottomSheetDialog中列表滑动冲突问题
  • sql查询查看数据库空间使用情况
  • 算法分析与设计考前冲刺 (算法基础、数据结构与STL、递归和分治、 动态规划、贪心算法、 回溯算法)
  • Spring Data JPA 实现集成实体对象数据库的创建、修改时间字段自动更新
  • Vue3集成json-editor-vue3
  • UML建模语言