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 {
//            反射获得驱动类Driver
            Class.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  8
    private static String username="root";//自己的用户名
    private static String pass="123456";//自己的密码

    static {
//        1.加载驱动类
        try {
//            反射获得驱动类Driver
//            com.mysql.cj.jdbc.Driver 7
            Class.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  8
    private static String username="root";
    private static String pass="123456";

    static {
//        1.加载驱动类
        try {
//            反射获得驱动类Driver
//            com.mysql.cj.jdbc.Driver 7
            Class.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  8
    private static String username="root";
    private static String pass="123456";

    static {
//        1.加载驱动类
        try {
//            反射获得驱动类Driver
//            com.mysql.cj.jdbc.Driver 7
            Class.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;
    }

    @Override
    public 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  8
    private static String username="root";
    private static String pass="123456";

    static {
//        1.加载驱动类
        try {
//            反射获得驱动类Driver
//            com.mysql.cj.jdbc.Driver 7
            Class.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  8
    private static String username="root";
    private static String pass="123456";

    static {
//        1.加载驱动类
        try {
//            反射获得驱动类Driver
//            com.mysql.cj.jdbc.Driver 7
            Class.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{

    @Override
    public 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);
            }
        }
    }

    @Override
    public void updateStu(Student s) {

    }

    @Override
    public 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));
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MYSQL 设置主从同步

效果图 主数据库表数据 从数据库表数据 mysql 数据库配置:主数据库 设置主数据 my.cnf vim /etc/mysql/my.cnf 配置内容 [mysqld] server-id=1 log-bin=mysql-bin # 不需要同步的表 binlog-ignore-db=mysql binlog-ignore-db=sys binlog-ignore-db=performance_schema bi…

Spire.PDF for .NET【文档操作】演示:以特定的缩放比例/百分比打开 PDF 文件

有时&#xff0c;我们可能需要在显示 PDF 文件时更改缩放比例以满足我们的要求。在本文中&#xff0c;我们将演示如何使用 Spire.PDF for .NET 以特定的缩放比例/百分比&#xff08;例如默认值、100% 或任何其他所需的缩放比例&#xff09;打开 PDF 文件。 Spire.PDF for .NET…

TAPD项目管理软件无法与企业微信进行关联

TAPD一段时间未使用后&#xff0c;需要重新启动&#xff0c;此时会出现你的企业微信尚未与TAPD账号关联的提示 解决方案&#xff1a;找到TAPD应用&#xff0c;先删除应用&#xff0c;然后再解除禁用即可

基于python 的动态虚拟主机

将自己电脑上的Python脚本文件上传到虚拟机/var/www/cgi-bin/目录下 [rootlocalhost conf.d]# cd /var/www/cgi-bin/ [rootlocalhost cgi-bin]# rz -E rz waiting to receive.编辑vhost.conf配置文件 [rootlocalhost conf.d]# vim vhost.conf<virtualhost 192.168.209.140…

消息中间件ApacheKafka在windows简单安装

一.背景 之前公司需要API网关管理软件ApacheShenYu&#xff0c;我相信把调用的记录都存到一个数据库。他支持日志推送到kafka&#xff0c;所以&#xff0c;我准备尝试一下通过kafka接收调用的日志信息。第一步&#xff0c;当然是安装kafka了。 二.ApacheKafka的下载 打开下载…

Docker-自定义镜像发布到DockerHub仓库、阿里云仓库

文章目录 推送镜像DockerHub仓库推送镜像阿里云仓库 更多相关内容可查看 推送镜像DockerHub仓库 在服务器中 使用 docker 登录命令 docker login -u 账户 #enter 后输入密码推送镜像到DockerHub docker push 镜像名:tag但个人不建议推送到DockHub上&#xff0c;毕竟不是咱自…

【Python机器学习】处理文本数据——停用词

删除没有信息量的单词有一种方法&#xff0c;就是舍弃那些出现次数太多以至于没有信息量的单词。 有两种主要方法&#xff1a; 1、使用特定语言的停用词&#xff08;stopword&#xff09;列表&#xff1b; 2、舍弃那些出现过于频繁的单词。 scikit-learn的feature_extracti…

gradle构建工具

setting.gradle // settings.gradle rootProject.name my-project // 指定根项目名称include subproject1, subproject2 // 指定子项目名称&#xff0c;可选jar包名称 方式一 jar {archiveBaseName my-application // 设置 JAR 文件的基本名称archiveVersion 1.0 // 设置…

阿里云RDS云数据库库表恢复操作

最近数据库中数据被人误删了,记录一下恢复操作方便以后发生时进行恢复. 1.打开控制台&#xff0c;进入云数据库实例. 2.进入实例后 &#xff0c;点击右侧的备份恢复&#xff0c;然后看一下备份时间点&#xff0c;中间这边都是阿里云自动备份的备份集&#xff0c;基本都是7天一备…

与Flat Ads相约ChinaJoy 2024,共探全球化增长

在当今全球数字化浪潮的推动下,游戏产业作为文化与技术融合的先锋,正以前所未有的速度跨越国界,开启全球化发展的新篇章。随着第二十一届ChinaJoy的临近,全球的目光再次聚焦于上海新国际博览中心,这里即将成为数字娱乐与科技创新碰撞与交融的璀璨舞台。 而在这场盛会上,Flat A…

Python酷库之旅-第三方库Pandas(004)

目录 一、用法精讲 5、pandas.DataFrame.to_csv函数 5-1、语法 5-2、参数 5-3、功能 5-4、返回值 5-5、说明 5-6、用法 5-6-1、代码示例 5-6-2、结果输出 6、pandas.read_fwf函数 6-1、语法 6-2、参数 6-3、功能 6-4、返回值 6-5、说明 6-6、用法 6-6-1、代码…

某积分商城任意金额支付漏洞分析利用及思考

扫码领取网安教程 大部分开发人员在开发时都会有一种思维惯性&#xff0c;传参处处有校验处处都可信&#xff0c;但这个等式并非恒成立 前言 这个漏洞是在工作中例行渗透测试的时候发现的&#xff0c;虽然前端做了防篡改措施&#xff0c;但这是很经典的没有后端校验导致的任意…

【CSAPP】-attacklab实验

目录 实验目的与要求 实验原理与内容 实验设备与软件环境 实验过程与结果&#xff08;可贴图&#xff09; 实验总结 实验目的与要求 1. 强化机器级表示、汇编语言、调试器和逆向工程等方面基础知识&#xff0c;并结合栈帧工作原理实现简单的栈溢出攻击&#xff0c;掌握其基…

sql注入问题批量处理

问题&#xff1a;SQL注入修改&#xff0c;历史代码全是${};无法修改的比如表名&#xff0c;列名&#xff0c;动态排序之类的不改&#xff0c;其他的都要修改完成 背景&#xff1a;新公司第一个任务就是SQL注入的修改&#xff0c;历史sql全部都是${},一个个调整不太合适只能批量…

ubuntu 安装说明

最近准备学习Linux&#xff0c;所以下载了最新的ubuntu server版本24.04&#xff0c;将安装步骤记录下来供参考。 1.安装 挂载光驱和iso文件&#xff0c;启动虚拟机。启动后&#xff0c;你会看到 GRUB 菜单上有两个选项&#xff1a; Try or Install Ubuntu Server 和 Test mem…

六西格玛培训公司:实战教学,让品质管理不再纸上谈兵!

在追求卓越与品质管理的征途上&#xff0c;六西格玛培训公司张驰咨询凭借其深厚的行业底蕴与前瞻性的战略眼光&#xff0c;成为了引领行业变革的重要力量。公司不仅深谙六西格玛精髓&#xff0c;更将这一先进的质量管理方法论转化为推动企业转型升级的强大动力&#xff0c;以“…

碳课堂|搞清楚碳足迹,只看这篇文章就够了

碳足迹管理是碳达峰碳中和的重要政策工具&#xff0c;2023年12月&#xff0c;国家发展改革委、工信部、国家市场监管总局、住房城乡建设部、交通运输部等部门联合印发《关于加快建立产品碳足迹管理体系的意见》&#xff0c;对产品碳足迹管理各项重点任务作出系统部署。 推动碳…

泛型 + 反射 + 注解 + 动态代理 + 设计模式 + Factory(BeanFactory,FactoryBean)

1.泛型 编译器可以对泛型参数进行检测&#xff0c;并且通过泛型参数可以指定传入的对象类型。比如 ArrayList<Person> persons new ArrayList<Person>() 这行代码就指明了该 ArrayList 对象只能传入 Person 对象&#xff0c;如果传入其他类型的对象就会报错。 原…

爬虫进阶:Selenium与Ajax的无缝集成

爬虫与Ajax的挑战 Ajax&#xff08;Asynchronous JavaScript and XML&#xff09;允许网页在不重新加载整个页面的情况下与服务器交换数据并更新部分内容。这为用户带来了更好的体验&#xff0c;但同时也使得爬虫在抓取数据时面临以下挑战&#xff1a; 动态内容加载&#xff…

【基础算法】UE中实现轮播

本期作者&#xff1a;尼克 易知微3D引擎技术负责人 当前N 总数M 从0到M-1 从1到M 感谢阅读&#xff0c;以上内容均由易知微3D引擎团队原创设计&#xff0c;以及易知微版权所有&#xff0c;转载请注明出处&#xff0c;违者必究&#xff0c;谢谢您的合作。申请转载授权后台回复【…