JDBC 学习笔记+代码整理

Tip

Idea自带可视界面👉MySQL 图形化界面-CSDN博客

Idea2022无add Framework support选项👉最新版IDEA:Add web Framework Support步骤/构建JavaWeb项目步骤_idea add framework support-CSDN博客

基本步骤

1.加载驱动包Driver

2.建立与数据库的连接Connection DriverManager

3.发送SQL语句Statement

4.接收数据库返回结果executeUpdate()/executeQuery()

5.解析结果ResultSet

6.关闭连接close()

加载驱动包Driver

package com.qf.JDBC;public class JdbcDriver {static {
//        1.加载驱动类try {
//            反射获得驱动类DriverClass.forName("com.mysql.cj.jdbc.Driver");} catch (ClassNotFoundException e) {throw new RuntimeException(e);}}
}

 创建和数据库的连接

package com.qf.JDBC;import com.mysql.cj.jdbc.Driver;
import java.sql.*;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;public class JdbcDriver {private static String url="jdbc:mysql://localhost:3306/student?serverTimezone=UTC";
//    jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf-8   5
//    jdbc:mysql://localhost:3306/student?serverTimezone=UTC  8private static String username="root";//自己的用户名private static String pass="123456";//自己的密码static {
//        1.加载驱动类try {
//            反射获得驱动类Driver
//            com.mysql.cj.jdbc.Driver 7Class.forName("com.mysql.cj.jdbc.Driver");} catch (ClassNotFoundException e) {throw new RuntimeException(e);}}//    2.获取连接public static Connection getConn() {Connection conn=null;try {conn = DriverManager.getConnection(url, username, pass);System.out.println("连接成功");} catch (SQLException e) {throw new RuntimeException(e);}return conn;}public static void main(String[] args) {getConn();}
}

发送Sql语句

例子:增加操作

package com.qf.JDBC;import com.mysql.cj.jdbc.Driver;
import java.sql.*;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Stack;public class JdbcDriver {private static String url="jdbc:mysql://localhost:3306/student?serverTimezone=UTC";
//    jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf-8   5
//    jdbc:mysql://localhost:3306/student?serverTimezone=UTC  8private static String username="root";private static String pass="123456";static {
//        1.加载驱动类try {
//            反射获得驱动类Driver
//            com.mysql.cj.jdbc.Driver 7Class.forName("com.mysql.cj.jdbc.Driver");} catch (ClassNotFoundException e) {throw new RuntimeException(e);}}//    2.获取连接public static Connection getConn() {Connection conn=null;try {conn = DriverManager.getConnection(url, username, pass);System.out.println("连接成功");} catch (SQLException e) {throw new RuntimeException(e);}return conn;}//    增加同学public static void addDept(){String sql="insert into student.table values('zt','男',20)";
//        获得连接try {Statement st= getConn().createStatement();st.executeUpdate(sql);} catch (SQLException e) {throw new RuntimeException(e);}}public static void main(String[] args) {addDept();}
}

例子:查询所有同学的信息

package com.qf.JDBC;import com.mysql.cj.jdbc.Driver;
import com.qf.JDBC.pojo.table;import javax.swing.*;
import java.sql.*;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Stack;public class JdbcDriver {private static String url="jdbc:mysql://localhost:3306/student?serverTimezone=UTC";
//    jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf-8   5
//    jdbc:mysql://localhost:3306/student?serverTimezone=UTC  8private static String username="root";private static String pass="123456";static {
//        1.加载驱动类try {
//            反射获得驱动类Driver
//            com.mysql.cj.jdbc.Driver 7Class.forName("com.mysql.cj.jdbc.Driver");} catch (ClassNotFoundException e) {throw new RuntimeException(e);}}//    2.获取连接public static Connection getConn() {Connection conn=null;try {conn = DriverManager.getConnection(url, username, pass);System.out.println("连接成功");} catch (SQLException e) {throw new RuntimeException(e);}return conn;}//查询所有学生信息public static ArrayList<table> queryAll(){ArrayList<table> list=new ArrayList<>();String sql="select * from student.table";
//        获得连接Connection conn=getConn();Statement st=null;try {st=conn.createStatement();ResultSet r=st.executeQuery(sql);while (r.next()){table t=new table(r.getString(1),r.getString(2),r.getInt("age"));//分别是第一列 第二列 age列list.add(t);}} catch (SQLException e) {throw new RuntimeException(e);}finally {try {st.close();//先打开的流后关闭conn.close();} catch (SQLException e) {throw new RuntimeException(e);}}return list;}public static void main(String[] args) {ArrayList<table> arrayList=queryAll();for (table a:arrayList) {System.out.println(a);}}}
package com.qf.JDBC.pojo;import java.io.Serializable;public class table implements Serializable {//实体类 属性与表一致private String name;private String gender;private int age;public table(String name, String gender, int age) {this.name = name;this.gender = gender;this.age = age;}public table() {}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "table{" +"name='" + name + '\'' +", gender='" + gender + '\'' +", age=" + age +'}';}
}

例子:修改和删除

继续用上面的table实体类

package com.qf.JDBC;import com.mysql.cj.jdbc.Driver;
import com.qf.JDBC.pojo.table;import javax.swing.*;
import java.sql.*;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Stack;public class JdbcDriver {private static String url="jdbc:mysql://localhost:3306/student?serverTimezone=UTC";
//    jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf-8   5
//    jdbc:mysql://localhost:3306/student?serverTimezone=UTC  8private static String username="root";private static String pass="123456";static {
//        1.加载驱动类try {
//            反射获得驱动类Driver
//            com.mysql.cj.jdbc.Driver 7Class.forName("com.mysql.cj.jdbc.Driver");} catch (ClassNotFoundException e) {throw new RuntimeException(e);}}//    2.获取连接public static Connection getConn() {Connection conn=null;try {conn = DriverManager.getConnection(url, username, pass);System.out.println("连接成功");} catch (SQLException e) {throw new RuntimeException(e);}return conn;}//    修改部门public static void updateDept(){String sql="update student.table set age=21 where name='zt'";
//        获得连接try {Statement st= getConn().createStatement();st.executeUpdate(sql);} catch (SQLException e) {throw new RuntimeException(e);}}//删除public static void deleteDept(){String sql="delete from student.table where name='xx'";
//        获得连接try {Statement st= getConn().createStatement();st.executeUpdate(sql);} catch (SQLException e) {throw new RuntimeException(e);}}public static void main(String[] args) {updateDept();deleteDept();}
}

JDBC实现分层处理

package com.xxxx.JDBC;//根包

common 公共包(所有模块共用的类,数据库连接类,分页处理)
pojo(entiy)实体类的包(和表一一对应的类叫做实体类,Dept Emp)
test 测试包
dao 数据访问对象(数据访问层,对数据表增删改查的代码)
service 业务层(业务逻辑)

目录

DBConn

package com.qf.JDBC.common;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;public class DBConn {private static String url="jdbc:mysql://localhost:3306/student?serverTimezone=UTC";//    jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf-8   5
//    jdbc:mysql://localhost:3306/student?serverTimezone=UTC  8private static String username="root";private static String pass="123456";static {
//        1.加载驱动类try {
//            反射获得驱动类Driver
//            com.mysql.cj.jdbc.Driver 7Class.forName("com.mysql.cj.jdbc.Driver");} catch (ClassNotFoundException e) {throw new RuntimeException(e);}}//    2.获取连接public static Connection getConn() {Connection conn=null;try {conn = DriverManager.getConnection(url, username, pass);System.out.println("连接成功");} catch (SQLException e) {throw new RuntimeException(e);}return conn;}
}

StuDao

package com.qf.JDBC.dao;import com.qf.JDBC.pojo.Student;public interface StuDao {void addStu(Student s);void updateStu(Student s);void delStu(Student s);}

StuDaoImpl

package com.qf.JDBC.dao;import com.qf.JDBC.common.DBConn;
import com.qf.JDBC.pojo.Student;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;public class StuDaoImpl extends DBConn implements StuDao{@Overridepublic void addStu(Student s) {String sql="insert into student.table(name,gender,age) values (?,?,?)";
//        获得连接Connection conn =DBConn.getConn();PreparedStatement st=null;try {st= getConn().prepareStatement(sql);st.setString(1,s.getName());st.setString(2,s.getGender());st.setInt(3,s.getAge());//执行语句int r= st.executeUpdate();if(r>=1){System.out.println("新增成功");}else {System.out.println("新增失败");}} catch (SQLException e) {throw new RuntimeException(e);}finally {try {st.close();} catch (SQLException e) {throw new RuntimeException(e);}try {conn.close();} catch (SQLException e) {throw new RuntimeException(e);}}}@Overridepublic void updateStu(Student s) {}@Overridepublic void delStu(Student s) {}
}

Student

package com.qf.JDBC.pojo;public class Student {private String name;private String gender;private int age;public Student(String name, String gender, int age) {this.name = name;this.gender = gender;this.age = age;}public Student() {}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}

StuService

package com.qf.JDBC.service;import com.qf.JDBC.dao.StuDao;
import com.qf.JDBC.dao.StuDaoImpl;
import com.qf.JDBC.pojo.Student;public class StuService {public static void main(String[] args) {StuDao stuDao=new StuDaoImpl();stuDao.addStu(new Student("张三","男",25));}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/40388.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

证券交易系统中服务器监控系统功能设计

1.背景介绍 此服务器监控系统的目的在于提高行情服务器的监管效率&#xff0c;因目前的的行情服务器&#xff0c;包括DM、DT、DS配置数量较多&#xff0c;巡回维护耗时较多&#xff0c;当行情服务器出现异常故障&#xff0c;或者因为网络问题造成数据断线等情况时&#xff0c;监…

芯科普| 矽光子是什麼?可以用在哪些领域?点击查看!

随着生成式人工智能的崛起&#xff0c;数据传输需求亦呈现爆发式增长。而在此背景下&#xff0c;台积电在半导体展览上披露的硅光子&#xff08;SiPh&#xff1a;Silicon Photonics&#xff09;技术进展&#xff0c;更是将硅光子推向了风口浪尖&#xff0c;成为了市场的宠儿。 …

IDEA导入依赖+Maven配置

Maven安装及配置 安装 安装链接&#xff1a;https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/ 注&#xff1a;建议不要直接安装最新版本&#xff0c;选用常用、稳定的版本安装即可&#xff0c;比如&#xff1a;3.6.3 配置 1> 配置bash_profile文件 终端输…

高效前端开发:解密pnpm的存储与链接

什么是pnpm PNPM&#xff08;Performant NPM&#xff09;是一种快速且节省磁盘空间的包管理工具。相较于其他包管理器如NPM和Yarn&#xff0c;PNPM通过独特的存储机制和链接技术解决了许多常见的问题。以下是PNPM如何避免这些问题以及其关键技术的详细介绍。 特性 PNPM Store…

【MySQL备份】Percona XtraBackup总结篇

目录 1.前言 2.问题总结 2.1.为什么在恢复备份前需要准备备份 2.1.1. 保证数据一致性 2.1.2. 完成崩溃恢复过程 2.1.3. 解决非锁定备份的特殊需求 2.1.4. 支持增量和差异备份 2.1.5. 优化恢复性能 2.2.Percona XtraBackup的工作原理 3.注意事项 1.前言 在历经了详尽…

数据库、创建表、修改表

一、数据库 1、登陆数据库 2、创建数据库zoo 3、修改数据库zoo字符集为gbk 4、选择当前数据库为zoo 5、查看创建数据库zoo信息 6、删除数据库zoo 二、创建表 1、创建一个名称为db_system的数据库 2、在该数据库下创建两张表&#xff0c;具体要求如下 员工表 user…

图像的对数变换

对数变换在图像处理中通常有以下作用&#xff1a; 因为对数曲线在像素值较低的区域斜率较大&#xff0c;像素值较高的区域斜率比较低&#xff0c;所以图像经过对数变换之后&#xff0c;在较暗的区域对比度将得到提升&#xff0c;因而能增强图像暗部的细节。图像的傅里叶频谱其…

Python函数语法详解(与C++对比学习)【未完】

一、Python函数的形式 def function_name (参数, ...) -> return value_type:# 函数体return value# 看具体需求# 如果没有return语句&#xff0c;函数执行完毕后也会返回结果# 只是结果为None。return None可以简写为return 1. Python的返回值 在Python3中&#xff0c;提…

利用Redis bitmap 实现签到案例

数据库实现 设计签到功能对应的数据库表 CREATE TABLE sign_record (id bigint NOT NULL AUTO_INCREMENT COMMENT 主键,user_id bigint NOT NULL COMMENT 用户id,year year NOT NULL COMMENT 签到年份,month tinyint NOT NULL COMMENT 签到月份,date date NOT NULL COMMENT 签…

在Linux操作系统中关于逻辑卷的案例

1.如何去创建一个逻辑卷 1.1先去创建物理卷 如上图所示&#xff0c;physical volume 物理卷 被成功创建。 如上图所示&#xff0c;可以使用pvscan来去查看当前Linux操作系统的物理卷/ 1.2使用创建好的物理卷去创建一个卷组。 如上图所示&#xff0c;可以使用第一步创建的两个…

【中项第三版】系统集成项目管理工程师 | 第 9 章 项目管理概论③ | 9.6 - 9.10

前言 第 9 章对应的内容选择题和案例分析都会进行考查&#xff0c;这一章节理论性较强&#xff0c;学习要以教材为准。本章分值预计在4-5分。 目录 9.6 项目管理过程组 9.7 项目管理原则 9.8 项目管理知识领域 9.9 价值交付系统 9.10 本章练习 9.6 项目管理过程组 项目…

千万不能踏入的渠道管理五大误区!【附策略】

一、引言 在当今激烈的市场竞争环境中&#xff0c;有效的渠道管理是企业获得竞争优势的关键。然而&#xff0c;在实践过程中&#xff0c;不少企业因陷入管理误区而影响了市场拓展和品牌建设。本文旨在揭示渠道管理中常见的五大误区&#xff0c;并提供避免策略&#xff0c;帮助…

web基础与HTTP协议(企业网站架构部署与优化)

补充&#xff1a;http服务首页文件在/var/www/html下的&#xff0c;一定是index.html命名的文件。才会显示出来。 如果该路径下没有相应的文件&#xff0c;会显示/usr/share/httpd/noindex下的index.html文件。 如果/usr/share/httpd/noindex没有index.html文件&#xff0c;会…

BSI 第七届万物互联智慧高峰论坛:主题:拥抱AI时代,标准赋能组织实现可持续发展

BSI 第七届万物互联智慧高峰论坛&#xff1a;主题&#xff1a;拥抱AI时代&#xff0c;标准赋能组织实现可持续发展 主要收到 BSI 温女士的邀请参加的本次论坛。还是学到的很多 。 在科技日新月异的时代背景下&#xff0c;BSI 第七届万物互联智慧高峰论坛于[时间&#xff1a;6…

Object 类中的公共方法详解

Object 类中的公共方法详解 1、clone() 方法2、equals(Object obj) 方法3、hashCode() 方法4、getClass() 方法5、wait() 方法6、notify() 和 notifyAll() 方法 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在 Java 中&#xff0c;Object…

AI 驱动的数据中心变革与前景

文章主要探讨了AI计算时代数据中心的转型&#xff0c;涉及计算技术的多样性、规格尺寸和加速器的发展、大型语言模型&#xff08;LLM&#xff09;的发展、功耗和冷却趋势、基准测试的重要性以及数据中心的发展等方面。为大家提供深入了解AI基础设施发展的视角。 计算技术的多样…

Ubuntu(通用)—网络加固—ufw+防DNS污染+ARP绑定

1. ufw sudo ufw default deny incoming sudo ufw deny in from any to any # sudo ufw allow from any to any port 5353 protocol udp sudo ufw enable # 启动开机自启 # sudo ufw reload 更改后的操作2. 防ARP欺骗 华为云教程 arp -d删除dns记录arp -a显示arp表 ipconfi…

PTrade常见问题系列3

量化允许同时运行回测和交易的策略个数配置。 量化允许同时运行回测和交易的策略个数在哪里查看&#xff1f; 在量化服务器/home/fly/config/custom_config_conf文件中&#xff0c;其中运行回测的策略个数由backtest_switch&#xff08;是否限制普通回测个数&#xff09;及ba…

matlab 绘制高等数学中的二维函数示例

matlab 绘制高等数学中的二维函数示例 绘制高等数学中的二维函数示例绘制结果 绘制高等数学中的二维函数示例 clc,clear,close all; % 定义方程 eqn (x, y) (x.^2 y.^2).^3 - y.^4;% 绘制方程曲线和坐标轴 ezplot(eqn, [-2, 2, -2, 2]) hold on % 在同一图形中保持绘图% 绘…

S7-1200PLC学习记录

文章目录 前言一、S7-12001.数字量输入模块2. PNP接法和NPN接法 二、博图软件1. 位逻辑运算Part1. 添加新设备&#xff08;添加PLC&#xff09;Part2. 添加信号模块Part3. 添加信号板中模块Part4. 添加新块Part5. Main编程文件案例1案例2 -( S )- 和 -( R )-完整操作过程&#…