Java(JDBC)

news2025/1/25 4:33:14

一、DriverManager

  • 注册驱动
Class.forName("com.mysql.jdbc.Driver");
  • 获取连接
static Connection connection = null;
connection = DriverManager.getConnection(url, user, password);
  • 1.ur:连接路径

语法:jdbc:mysql://ip地址(域名):端口号/数据库名称?参数键值对1&参数键值对2..
示例:jdbc:mysql://localhost:3306/xxt


细节:

  • 如果连接的是本机mysql服务器,并且mysql服务默认端口是3306,则ur可以简写为:idbc:mysa!:/数据库名称?参数键值对
  • 配置 useSSL=false 参数,禁用安全连接方式,解决警告提示
  • 2.user:用户名
  • 3.password:密码

 


二、 Connection

  1. 获取执行 SQL 的对象
  • 普通执行SQL对象

  • 预编译SQL的执行SQL对象:防止SQL注入

  • 执行存储过程的对象

 

 2.事务管理

  • MySQL 事务管理

开启事务:BEGIN;/START TRANSACTION;
提交事务:COMMIT;
回滚事务:ROLLBACK;


MySQL默认自动提交事务

  •  JDBC 事务管理:Connection接口中定义了3个对应的方法

开启事务:setAutoCommit(boolean autoCommit):true为自动提交事务:false为手动提交事务,即为开启事务
提交事务:commit()
回滚事务:rollback() 

 


 

三、Statement

  • Statement作用:
  1. 执行SQL语句
  • 执行SQL语句

int  executeUpdate(sgl):执行DML、DDL语句
返回值:(1)DML语句影响的行数(2)DDL语句执行后,执行成功也可能返回0

 ResultSet executeQuery(sql):执行DQL语句
返回值:ResultSet结果集对象 

 


 

四、ResultSet

  • 使用步骤:
  1. 游标向下移动一行,并判断该行否有数据:next()
  2. 获取数据:getXxx(参数)

//循环判断游标是否是最后一行末尾
while(rs.next()){
//获取数据
rs.getXxx(参数); 

 


 

五、PreparedStatement

  • PreparedStatement作用:
  1. 预编译SQL语句并执行:预防SQL注入问题
  • SQL注入
  •     SQL注入是通过操作输入来修改事先定义好的SQL语句,用以达到执行代码对服务器进行攻击的方法 

 


 

增删改查

public class Main {
    static final String url="jdbc:mysql://localhost:3306/xxt?useServerPrepStmts=true";
    static final String user = "root";
    static final String password = "123456";
    static Connection connection = null;

    public static void main(String[] args) throws Exception {
        getConnection();
    }

    // 获取数据库连接
    public static void getConnection() throws Exception {

        /*String Username = "005";
        String Password = "123456";
        String Nick = "小黄";*/
        //int id = 5;

        try {
            // 注册驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            // 获取连接
            connection = DriverManager.getConnection(url, user, password);
            System.out.println("连接成功");
        } catch (ClassNotFoundException e) {
            System.out.println("找不到MySQL驱动程序类!");
            e.printStackTrace();
        } catch (SQLException e) {
            System.out.println("获取数据库连接时出现错误!");
            e.printStackTrace();
        }

        //添加
        /*String sql1 = "insert into user (Username, Password, Nick) values(?,?,?)";  //定义sql
        PreparedStatement ps = connection.prepareStatement(sql1);                   //获取执行sql的对象
        ps.setString(1,Username);
        ps.setString(2,Password);
        ps.setString(3,Nick);                                        //设置参数
        int count = ps.executeUpdate();                                             //执行sql
        System.out.println(count > 0);*/


        //删除
        /*int Id = 5;
        String sql1 = "delete from user where id = ?";  //定义sql
        PreparedStatement ps = connection.prepareStatement(sql1);                   //获取执行sql的对象
        ps.setInt(1,Id);                                        //设置参数
        int count = ps.executeUpdate();                                             //执行sql
        System.out.println(count > 0);*/


        //修改
        /*String sql3 = "update user set Password = 123456 where id = 1";
        *//*String sql3 = "update user\n" +
                "set Username = ?,\n" +
                " Password = ?,\n" +
                " Nick = ?\n" +
                "where id = ?";*//*
        PreparedStatement ps = connection.prepareStatement(sql3);
       *//* ps.setString(1,Username);
        ps.setString(2,Password);
        ps.setString(3,Nick);
        ps.setInt(4,id);*//*

        int count = ps.executeUpdate();
        System.out.println(count > 0);*/



        //查询全部
        String sql4 = "select * from user";
        Statement s = connection.createStatement();
        ResultSet rs = s.executeQuery(sql4);
        List<User> list = new ArrayList<>();
        while(rs.next()){
            User user = new User();

            int Id = rs.getInt("id");
            String Username = rs.getNString("Username");
            String Password = rs.getNString("Password");
            String Nick = rs.getNString("Nick");

            user.setId(Id);
            user.setUsername(Username);
            user.setPassword(Password);
            user.setNick(Nick);


            list.add(user);
        }
        System.out.println(list);


        /*rs.close();
        s.close();
        connection.close();*/

    }
}

 

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

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

相关文章

配置vscode用于STM32编译,Debug

配置环境参考&#xff1a; Docs 用cubemx配置工程文件&#xff0c;用VScode打开工程文件。 编译的时候会有如下报错&#xff1a; vscode出现process_begin :CreateProcess failed 系统找不到指定文件 解决方案&#xff1a;在你的makefile中加上SHELLcmd.exe就可以了 参考…

汇编——SSE打包整数

SSE也可以进行整数向量的加法&#xff0c;示例如下&#xff1a; ;sse_integer.asm extern printfsection .datadummy db 13 align 16pdivector1 dd 1dd 2dd 3dd 4pdivector2 dd 5dd 6dd 7dd 8fmt1 db "Packed Integer Vector 1: %d, %d, %d, %d",…

6_6_SQL

//名词 Candidate key:若表中记录的某一字段或字段组合能够唯一标志记录&#xff0c;则称该字段或字段组合为候选关键字 Primary key:若一个表有多个候选关键字&#xff0c;则选定其中一个为主关键字&#xff0c;也称为主键 Foreignkey:若某字段或字段组合不是数据库中A表的关键…

【大数据】安装hive-3.1.2

1、上传HIVE包到/opt/software目录并解压到/opt/modules/ tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/modules/ 2、修改路径 mv /opt/modules/apache-hive-3.1.2-bin/ /opt/modules/hive 3、将hIVE下的bin目录加入到/etc/profile中 export HIVE_HOME/opt/module…

大数据学习第十三天(mysql不会的查询2)

1、数据 CREATE TABLE Student (s_id VARCHAR(20) COMMENT 学生编号,s_name VARCHAR(20) NOT NULL DEFAULT COMMENT 学生姓名,s_birth VARCHAR(20) NOT NULL DEFAULT COMMENT 出生年月,s_sex VARCHAR(10) NOT NULL DEFAULT COMMENT 学生性别,PRIMARY KEY (s_id) ) ENG…

激光雷达和相机的联合标定工具箱[cam_lidar_calibration]介绍

激光雷达和相机的联合标定工具箱[cam_lidar_calibration]介绍 写在前面安装过程调试过程标定成功可视化展示 写在前面 激光雷达和相机联合标定工具 论文地址&#xff1a;https://ieeexplore.ieee.org/stamp/stamp.jsp?tp&arnumber9564700 github地址: https://github.com…

模块十 面向对象

模块十 重点 知道继承的好处会使用继承知道继承之后成员变量以及成员方法的访问特点会方法重写以及知道方法重写的使用场景会使用 this 关键字调用当前对象中的成员会使用super关键字调用父类中的成员会定义抽象类方法以及抽象类会重写抽象方法 第一章 继承 1.1 什么是继承 …

simulink 的stm32 ADC模块输出在抽筋,不知为何

% outtypecast(uint16(1000),uint8) % 10003E8,E8232,out232 3 function [y,len] myfcn(u1) headuint8([255 85]);%帧头 out1typecast(uint16(u1),uint8); % out2typecast(uint16(u2),uint8); y[head,out1]; lenuint16(length(y)); 2023b版本&#xff0c;stm32硬件支持…

layui在上传多图时,allDone方法只是在第一次全部成功时调用了

问题点&#xff1a;在使用layui框架做多张图片上传时&#xff0c;遇见只有第一次操作上传图片时&#xff0c;触发了allDone全部上传成功的方法&#xff0c;后面再添加图片时&#xff0c;就不会调用这个方法 原因&#xff1a;是因为我删除了 choose 方法&#xff0c;并且也没有将…

低通滤波器滤波信号

clear clc close all % 生成加速度时程信号 fs 200; % 采样频率为200Hz duration 2 * 60; % 时长为2分钟 t (0:1/fs:duration-1/fs); % 时间向量 % 生成白噪声 noise_power 0.1; % 噪声功率 noise sqrt(noise_power) * randn(size(t)); % 构造加速度信号 % 这里使…

Mac怎么调大音频音量?

Mac怎么调大音频音量&#xff1f;在使用 Mac 电脑时&#xff0c;有时可能会发现音频的音量不够大&#xff0c;特别是在观看视频、听音乐或进行视频会议时。不过&#xff0c;幸运的是&#xff0c;Mac 提供了多种方法来调大音频音量&#xff0c;让您更好地享受音乐和视频的乐趣。…

Kibana管理ES生命周期

希望通过Kibana界面管理ES索引的生命周期 版本&#xff1a;7.15.2 创建索引模板 创建索引模板方便匹配索引&#xff0c;对匹配到的一批索引采用同一套生命周期管理策略&#xff0c;例如开发环境的所有索引以dev-开头&#xff0c;可以创建样式为dev-*的索引模板以匹配开发环境…

【机器学习·浙江大学】机器学习概述、支持向量机SVM(线性模型)

机器学习概述 机器学习 特征提取(feature) 根据提取的特征构造算法&#xff0c;实现特定的任务⭐&#xff08;这门课程的重点&#xff1a;假设所有的特征已经存在且有效&#xff0c;如何根据这些特征来构造学习算法&#xff09; 如下图所示&#xff0c;机器学习主要就是来进行…

zdpdjango_argonadmin使用Django开发一个美观的后台管理系统

初始代码 安装依赖 pip install -r requirements.txt生成管理员账户 迁移模型&#xff1a; python manage.py makemigrations python manage.py migrate创建超级用户&#xff1a; python manage.py createsuperuser启动服务 python manage.py runserver浏览器访问&#xf…

学习CSS Flexbox 玩flexboxfroggy flexboxfroggy1-24关详解

欢迎来到Flexbox Froggy&#xff0c;这是一个通过编写CSS代码来帮助Froggy和朋友的游戏! justify-content 和 align-items 是两个用于控制 CSS Flexbox 布局的属性。 justify-content&#xff1a;该属性用于控制 Flexbox 容器中子项目在主轴&#xff08;水平方向&#xff09;…

FPGA + 图像处理(三)生成3x3像素矩阵

前言 生成NxN的像素矩阵是对图像进行各类滤波操作的基本前提&#xff0c;本文介绍一种通过bram生成3x3矩阵的方法。 程序 生成bram核 因为本文介绍的是基于bram生成的3x3像素矩阵&#xff0c;所以要先生成两个bram核&#xff0c;用于缓存前两行图像数据 在 IP catalog中选…

IDEA连接SqlServer数据库详细讲解

####一、前期准备 确保已经安装了SqlServer数据库&#xff0c;并记住服务器名称、登录名和密码等信息。在IDEA中安装适当的JDBC&#xff08;Java Database Connectivity&#xff09;驱动程序。你可以从Microsoft官方网站上下载最新版本。 二、连接步骤 打开IDEA&#xff0c;…

Unity类银河恶魔城学习记录12-7-1 p129 Craft UI - part 1源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili UI_CraftList.cs using System.Collections; using System.Collections.Gen…

【小白学机器学习10】假设检验之1:F检验,F检验量的构造,F分布,F分布查表求P值等

目录 1 什么是F检验 F-test 1.1 F-test的定义 1.1.1 维基百科对F检验的定义 1.1.2 百度百科的定义 1.2 F检验的别名 1.3 F检验的判断手段 / 要达成的目标 / 适用范围 1.3.1 判断手段 1.3.2 对H0原假设的理解 1.3.3 判断目标/目的 1.3.4 适用的范围&#xff0c;场合 …

HTML5+CSS3+JS小实例:圣诞按钮

实例:圣诞按钮 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0&…