mysql jdbc数据库速成总结

news2025/1/22 9:22:37

第一步导图jar包 我们下载一个jar 按照我的习惯是把这个jar包放在桌面上 方便后续操作 

 然后对这个jar包ctrl + c复制 

接着我们在idea里面创建一个目录

我们命名为lib 然后在这个lib安ctrl + V进行粘贴  然后右键这个lib 找到添加为库

我的idea好像没有选择  只有添加为模块

点击确定我们的jar包就算导入好了

接下来我们就在src创建一个类就好了 我们可以直接把包名和类名都创建一下 com.guansuian.JDBCDemo 注意包名只有小写字母 然后这个类名的第一个首字母需要大写

我们使用刚刚我写在这里的英文就可以将类和包都创建好了

第一步注册包:
先创建一个主函数然后Class. forname("  ");

注意我们需要抛出一下异常 

throws Exception
package com.guansuian;

public class JDBCDemo {
    public static void main(String[] args) throws Exception {
        //1.注册驱动(这个其实在我看来就是报的意思)
        Class.forName("com.mysql.jdbc.Driver");
    }

}

然后我们需要登录,登录需要一个地址 如果我们登录的是系统第一个为我们创建的链接我们就不需要写链接的名字

在这里面有几个类

第一个

 

DriverManager是一个类(驱动管理类)

它可以实现

 

Connection类

 

  1. 获取执行SQL的对象

Connection conn = DriverManager.getConnection();

  1. 管理事物 常常和java里面的try catch搭配使用

小技巧:ctrl + alt + t这个是将某一段代码包裹起来的一句话 然后选择你想要选择的语句

 

 Statement

 

DDL:对标和库的增删改查操作

DML:对数据增删改操作

DQL:对数据的查询操作

package com.guansuian;

import org.junit.Test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
//statement类的操作

public class test1 {
    @Test
    public void testDML() throws Exception {
        //注册服务器
        // Class.forName("com.mysql.cj.jdbc.Driver");
        String url = "jdbc:mysql:///class?useSSL=false";//这个3306/后面就是创建数据库的名字,不是表的名字  这个可以直接不用写端口(前提是我们使用本机的端口)
        //注意我们使用这个为了不看键那行烦的注册 我们可以在class后面写上useSSL=false这个语句
        String user = "root";
        String password = "123456";
        Connection conn= DriverManager.getConnection(url,user,password);
        Statement stmt = conn.createStatement();
        String sql1 = "update user set name='hahaha' where id=1 "; //这个就是进行修改的操作 简单翻译一下就是 更新用户  设置名字为'?' 在哪里进行设置
        String sql2 = "update user set name='吴翔' where id = 5";
        try {
            //1.开启事物
            conn.setAutoCommit(false);
            int count1 = stmt.executeUpdate(sql1);
            int count2 = stmt.executeUpdate(sql2);
            //2.提交事物
            conn.commit();
        } catch (Exception e) {
            conn.rollback();
            throw new RuntimeException(e);
        }
        stmt.close();
        conn.close();
    }
    @Test
    public void testDDL() throws Exception {
        //注册服务器
        // Class.forName("com.mysql.cj.jdbc.Driver");
        String url = "jdbc:mysql:///class?useSSL=false";//这个3306/后面就是创建数据库的名字,不是表的名字  这个可以直接不用写端口(前提是我们使用本机的端口)
        //注意我们使用这个为了不看键那行烦的注册 我们可以在class后面写上useSSL=false这个语句
        String user = "root";
        String password = "123456";
        Connection conn= DriverManager.getConnection(url,user,password);
        Statement stmt = conn.createStatement();
        String sql1 = "update user set name='hahaha' where id=1 "; //这个就是进行修改的操作 简单翻译一下就是 更新用户  设置名字为'?' 在哪里进行设置
        String sql2 = "update user set name='吴翔' where id = 5";
        //下面这个语句是执行增加的语句
        String sql3 = "insert into user (id,name,password) values (6,'AA',123456)";
        String sql4 = "delete from user where id=1";

        try {
            //1.开启事物
            conn.setAutoCommit(false);
            int count1 = stmt.executeUpdate(sql1);
            int count2 = stmt.executeUpdate(sql2);
            //stmt.executeUpdate(sql3);
            stmt.executeUpdate(sql4);
            //2.提交事物
            conn.commit();
        } catch (Exception e) {
            conn.rollback();
            throw new RuntimeException(e);
        }
        stmt.close();
        conn.close();
    }

}

这个只是实现了增删改的操作

如果要实现查的还需要学习到一个类

这个ResulitSet就是进行一个查询结果的返回值

小技巧:

我们要打印每一个变量的时候我们可以使用变量名.sout这样就可以直接将我们需要的东西直接进行打印

在后续的编程中我们常用到一种分层的思想进行编程:

常常有这么几层:

1.pojo层(存放对象的包)

2.dao层(数据持久层:操作数据库)

3.service层(业务层:处理业务逻辑,调用dao层)

4.controller层(控制层,调用业务方法,将数据返回给前端界面)

第一对于业务层:
这个就和之前我些项目的时候进行的文件操作一样,首先需要进行文件资料的导入

并将这个资料导入到一个集合中(输入数据)

小技巧:ctrl + w就是将整个句子进行扩张

完整的增删改查的操作:

package com.guansuian;

import org.junit.Test;

import java.sql.*;
import java.util.Scanner;
//statement类的操作

public class test1 {
    //这个方法是修改方法
    @Test
    public void fix() throws Exception {

        String url = "jdbc:mysql:///class?useSSL=false";
        String user = "root";
        String password = "123456";
        Connection conn= DriverManager.getConnection(url,user,password);
        Statement stmt = conn.createStatement();
        String sql1 = "update user set name='hahaha' where id=1 ";
        String sql2 = "update user set name='吴翔' where id = 2";
        try {
            //1.开启事物
            conn.setAutoCommit(false);
            int count1 = stmt.executeUpdate(sql1);
            int count2 = stmt.executeUpdate(sql2);
            if(count1>0 && count2 > 0){
                System.out.println("修改成功");
            }else{
                System.out.println("修改失败");
            }
            //2.提交事物
            conn.commit();
        } catch (Exception e) {
            conn.rollback();
            throw new RuntimeException(e);
        }
        stmt.close();
        conn.close();
    }
    //增加操作
    @Test
    public void add() throws Exception {
        //注册服务器
        // Class.forName("com.mysql.cj.jdbc.Driver");
        String url = "jdbc:mysql:///class?useSSL=false";//这个3306/后面就是创建数据库的名字,不是表的名字  这个可以直接不用写端口(前提是我们使用本机的端口)
        //注意我们使用这个为了不看键那行烦的注册 我们可以在class后面写上useSSL=false这个语句
        String user = "root";
        String password = "123456";
        Connection conn= DriverManager.getConnection(url,user,password);
        Statement stmt = conn.createStatement();

        //下面这个语句是执行增加的语句
        String sql1 = "insert into user (id,name,password) values (1,'关岁安',123456)";
        String sql2= "insert into user (id,name,password) values (2,'郑美玲',123456)";
        String sql3= "insert into user (id,name,password) values (3,'刘欣',123456)";
        String sql4= "insert into user (id,name,password) values (4,'邓凯',123456)";
        String sql5= "insert into user (id,name,password) values (5,'邓志豪',123456)";
        String sql6= "insert into user (id,name,password) values (6,'陈归鸿',123456)";
        try {
            //1.开启事物
            conn.setAutoCommit(false);
            stmt.executeUpdate(sql1);
            stmt.executeUpdate(sql2);
            stmt.executeUpdate(sql3);
            stmt.executeUpdate(sql4);
            stmt.executeUpdate(sql5);
            stmt.executeUpdate(sql6);
            //2.提交事物
            conn.commit();
        } catch (Exception e) {
            conn.rollback();
            throw new RuntimeException(e);
        }
        stmt.close();
        conn.close();
    }
    //删除操作
    @Test
    public void detele() throws Exception {
        //注册服务器
        // Class.forName("com.mysql.cj.jdbc.Driver");
        String url = "jdbc:mysql:///class?useSSL=false";//这个3306/后面就是创建数据库的名字,不是表的名字  这个可以直接不用写端口(前提是我们使用本机的端口)
        //注意我们使用这个为了不看键那行烦的注册 我们可以在class后面写上useSSL=false这个语句
        String user = "root";
        String password = "123456";
        Connection conn= DriverManager.getConnection(url,user,password);
        Statement stmt = conn.createStatement();

        //下面这个语句是执行增加的语句
        String sql1 = "delete from user where id=6";
        try {
            //1.开启事物
            conn.setAutoCommit(false);
            stmt.executeUpdate(sql1);
            //2.提交事物
            conn.commit();
        } catch (Exception e) {
            conn.rollback();
            throw new RuntimeException(e);
        }
        stmt.close();
        conn.close();
    }
    //查询操作

    @Test
    public void equry() throws Exception {
        String url = "jdbc:mysql:///class?useSSL=false";
        String user = "root";
        String password = "123456";
        Connection conn= DriverManager.getConnection(url,user,password);
        Statement stmt = conn.createStatement();
        String sql1 = "SELECT *FROM `user`";
        ResultSet res = stmt.executeQuery(sql1);
        try {
            //1.开启事物
            conn.setAutoCommit(false);

            while(res.next()){
                int id = res.getInt(1);
                String name = res.getString(2);
                String password1 = res.getString(3);
                System.out.print("id:  " + id +"    ");
                System.out.print("name:  " +name+"    ");
                System.out.println("password1:  " + password1);
            }
            //2.提交事物
            conn.commit();
        } catch (Exception e) {
            conn.rollback();
            throw new RuntimeException(e);
        }
        stmt.close();
        conn.close();
        res.close();
    }
}

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

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

相关文章

【LeetCode: 455. 分发饼干 + 贪心】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

2024/4/1—力扣—最小高度树

代码实现: /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ struct TreeNode* buildTree(int *nums, int l, int r) {if (l > r) {return NULL; // 递归出口}struct…

【AI】ubuntu 22.04 本地搭建Qwen-VL 支持图片识别的大语言模型 AI视觉 【2】 4060ti 16G 也顶不住

接上篇 【AI】ubuntu 22.04 本地搭建Qwen-VL 支持图片识别的大语言模型 AI视觉-CSDN博客 迁移到4060ti 16G 环境下,仍然报错,显存不足!

一切皆是为了交流-DDD通用语言

通用语言是什么? 通用语言是一种在特定领域内的沟通方式,可以由文字、语言、手势、图像等一切与达到沟通目的的元素组成。 比如,在中国内,方言是闽南的小王与方言是粤语的小张进行交流,那么,普通话是他们…

汇编基础----mov基本操作

汇编基础----mov基本操作 下载VS2022 这个网上教程很多,自行下载安装即可 新建项目 选择空项目,如何点击下一步 在源文件下创建这二个文件 修改配置使asm文件能被解析,右击项目名(demo)->生成依赖项->生成自定义->勾选如下图所示选项->确定 立即数寻址 main…

N5171B是德科技N5171B信号发生器

181/2461/8938产品概述: N5171B EXG 射频模拟信号发生器具有最佳的 EXG,旨在满足您对组件参数测试和接收器校准的信号需求。其出色的硬件性能可提供更快的吞吐量、更长的正常运行时间以及极好的准确性和可重复性。 Agilent / HP N5171B EXG 射频模拟信…

vue的 blob文件下载文件时,后端自定义异常,并返回json错误提示信息,前端捕获信息并展示给用户

1.后端返回的json数据结构为: {"message":"下载失败,下载文件不存在,请联系管理员处理!","code":500} 2.vue 请求后台接口返回的 Blob数据 3.问题出现的原因是,正常其他数据列表接口&…

MySQL操作DML

目录 1.概述 2.插入 3.更新 4.删除 5.查询 6.小结 1.概述 数据库DML是数据库操作语言(Data Manipulation Language)的简称,主要用于对数据库中的数据进行增加、修改、删除等操作。它是SQL语言的一部分,用于实现对数据库中数…

基于wsl的Ubuntu20.04上安装桌面环境

在子系统Ubuntu20.04上安装桌面环境 1. 更换软件源 由于Ubuntu默认的软件源在国外,有时候后可能会造成下载软件卡顿,这里我们更换为国内的阿里云源,其他国内源亦可。 双击打开Ubuntu20.04 LTS图标,在命令行中输入 # 备份原来的软…

OpenCV 使用freetype在图像上写中文

​​​​​​ #include "opencv2/opencv.hpp" #include "opencv2/freetype.hpp"static cv::Ptr<cv::freetype::FreeType2> getFreeType() {static cv::Ptr<cv::freetype::FreeType2> ft2;if (ft2.empty()){ft2 cv::freetype::createFreeType…

论文阅读《Semantic Prompt for Few-Shot Image Recognition》

论文地址&#xff1a;https://arxiv.org/pdf/2303.14123.pdf 论文代码&#xff1a;https://github.com/WentaoChen0813/SemanticPrompt 目录 1、存在的问题2、算法简介3、算法细节3.1、预训练阶段3.2、微调阶段3.3、空间交互机制3.4、通道交互机制 4、实验4.1、对比实验4.2、组…

家庭网络防御系统搭建-家庭网络防御系统搭建-NDR之zeek安装配置过程详解

前面的文章&#xff0c;说明了raspiberry系统和硬件相关内容&#xff0c;参考家庭网络防御系统搭建-树莓派raspberry PI硬件和系统准备。本文将介绍NDR系统中的zeek安装过程。 corelight vs zeek 使用zeek获取网络的transaction log有两种方式&#xff0c;一种是使用coreligh…

从头开发一个RISC-V的操作系统(五)汇编语言编程

文章目录 前提RISC-V汇编语言入门RISC-V汇编指令总览汇编指令操作对象汇编指令编码格式add指令介绍无符号数 练习参考链接 目标&#xff1a;通过这一个系列课程的学习&#xff0c;开发出一个简易的在RISC-V指令集架构上运行的操作系统。 前提 这个系列的大部分文章和知识来自于…

python语言程序设计完结

概述&#xff1a; 程序设计是计算机可编程的体现 程序设计&#xff0c;亦称编程&#xff0c;是深度应用计算机的主要手段 程序设计已经成为当今社会需求量最大的职业技能之一 程序设计语言是一种用于交互&#xff08;交流&#xff09;的人造语言 程序设计语言&#xff0c;亦称…

论文阅读AI工具链

文献检索 可以利用智谱清言来生成合适的文献检索式&#xff0c;并根据需要不断调整。 谷歌学术 在Google Scholar中进行检索时&#xff0c;您可以使用类似的逻辑来构建您的搜索式&#xff0c;但是语法会有所不同。Google Scholar的搜索框接受普通的文本搜索&#xff0c;但是…

牛客NC93 设计LRU缓存结构【hard 链表,Map Java】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/5dfded165916435d9defb053c63f1e84 思路 双向链表map最新的数据放头结点&#xff0c;尾节点放最老的数据&#xff0c;没次移除尾巴节点本地考察链表的新增&#xff0c;删除&#xff0c;移动节点参考答案Java im…

启动Unity发布的exe并且添加启动参数

启动Unity发布的exe并且添加启动参数 在启动Unity的时候添加一些启动的参数。 代码解释 在启动的时候获取的启动参数如果没有获取到正确的启动参数那么就退出程序&#xff0c;这个代码仅仅在发布到windows之后才会生效&#xff0c;在编辑器下这个代码虽然会获取到参数但是不能…

python开发poc2,爆破脚本

#本课知识点和目的&#xff1a; ---协议模块使用&#xff0c;Request 爬虫技术&#xff0c;简易多线程技术&#xff0c;编码技术&#xff0c;Bypass 后门技术 下载ftp服务器模拟器 https://lcba.lanzouy.com/iAMePxl378h 随便创建一个账户&#xff0c;然后登录进去把ip改成…

多轴机械臂/正逆解/轨迹规划/机器人运动学/Matlab/DH法 学习记录01——数学基础

系列文章目录 本科毕设正在做多轴机械臂相关的内容&#xff0c;这里是一个学习机械臂运动学课程的相关记录。 如有任何问题&#xff0c;可发邮件至layraliufoxmail.com问询。 1. 数学基础 文章目录 系列文章目录一、空间位置、姿态描述二、旋转矩阵&#xff08;Rotation matri…

阿里Qwen1.5-32B开源,评测超Mixtral MoE,挑战SOTA性价比

前言 阿里巴巴近日震撼开源其最新力作——Qwen1.5-32B大语言模型。在当前AI领域&#xff0c;大模型的开发与应用已成为评估技术进步的重要标尺。Qwen1.5-32B的问世&#xff0c;不仅再次证明了阿里在AI技术研发领域的深厚实力&#xff0c;更是在性能与成本之间找到了一个新的平…