首页 > 数据库 >MySQL 的 JDBC 编程

MySQL 的 JDBC 编程

时间:2024-10-14 10:12:07浏览次数:9  
标签:JDBC 数据库 编程 connection dataSource statement sql MySQL 服务器

MySQL的JDBC编程

使用 java代码操作 数据库

jdbc统一了各种数据库的 api

准备阶段

首先要准备

  1. 编辑语言的安装:java jdk1.8
  2. 数据库
  3. 数据库驱动包 :
    • 中央仓库下载
    • 搜索MySQL 第一个就是 MySQL Connector/j
  4. 下载完成后 在 IDEA 中导入 这个包
    • 打开 IDEA 新建一个 java项目
    • 新建一个目录
    • 然后 将下载好的 复制进去
    • 右键目录 添加到库(add as library)

开始 JDBC 编程

  1. 先 建立 数据源 找到数据库的位置

    DataSource dataSource = new MysqlDataSource();
    

    dataSource 就是 一个数据源 然后利用他的方法 去找到 数据库的位置

    ((MysqlDataSource) dataSource).setUrl()
    

    setUrl() 设置他的 Url

    Url 可以理解成一个网址 他包含了网站信息 Ip地址 端口 以及一些元素 内部设定

    具体看一下这里的Url

    ("jdbc:mysql://127.0.0.1:3306/java109?characterEncoding=utf8&useSSL=false")
    

    127.0.0.1 是 数据库所存在的 Ip 地址

    3306 是 数据库所在端口

    这里可以理解成 IP 是你的家庭地址 端口是你的电话号码

    方便锁定数据库

    java109 是 数据库的名字

    ? 指的是 后面开始 是 这个数据库的一些内部元素

    characterEncoding=utf8 指定字符集为 utf8

    useSSL=false 服务器证书 如果选择了 true 就会验证你的证书 不建议在 没有服务器身份验证的情况下建立 SSL 链接

    设置用户名以及数据库密码

    ((MysqlDaraSource) dataSource).setUser("root");//管理员
    ((MysqlDaraSource) dataSource).setPassword("111111");//密码
    
  2. 建立数据库的连接 再找到数据库后进行对数据库的链接 注意这里会抛出异常

    Connection connection = dataSource.getConnection();
    
  3. 构造 sql 就像 在 MySql 自带的服务端中 构造sql 一样 不过要增加点方法:

    String sql = "insert into student values(1,'张三')";
    PreparedStatement statement = connection.prepareStatement(sql);
    

​ prepareStatement:意思是 准备陈述

​ 在这里 指的是 预准备 预处理

也可以把字符串格式的 sql 直接发送给 mysql 服务器 ,但是这样说做 写的 字符串sql 有可能是 语法错误之类

mysql 服务器需要对 sql 进行解析 和效验

mysql 服务器是服务于 多个客户的 这样开销就很大

预处理:

先解析检查 sql 看 sql 有没有什么问题

解析完毕后会得到接哦古话数据,直接把解析好的结构化数据发给数据库服务器,服务器就省下了这步工作

  1. 把 sql 发送给服务器

    int i = preparedStatement.executeUpdate();
    

    这里的 i 显示的是 处理了 多少行数据

    executeUpdate() : 是针对 写数据 比如 :增 改 删

    executeQue() : 是针对 读数据 比如 :查

  2. 执行完毕 关闭链接 释放资源 后建立的先释放

    preparedStatement.close();
    connection.close();
    

案例

这里 写一个 录入学生的一个案例

public class Demo01{
    public static void main(String[] args) throws SQLException{
       	Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你的姓名");
        String name = scanner.nextLine();
        System.out.println("请输入你的学号");
        int id = scanner.nextInt();
       
        //1.建立数据源
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java109?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource) dataSource).setUser("root");
        ((MysqlDataSource) dataSource).setPassword("111111");
        
        //2.创建连接
        Connection connection = dataSource.getConnection();
        
        //3.构造 sql
        String sql = "insert into student values(?,?)";
        PreparedStatement statement = connection.preparedStatement(sql);
        statement.setInt(1,id);
        statement.setString(2,name);
        
        //4.把 sql 发送给服务器
        statement.executeUpdate();
        
        //5.执行完毕
        statement.close();
        connection.close();
    }
}

这是一个 写操作的 sql

下面写一个 查的 sql

public class Demo01{
    public static void main(String[] args) throws SQLException{
        //1.先建立数据源
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDatalSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java109?characterEncoding=utf8&useSSL=false");
        ((MysqlDatalSource) dataSource).setUser("root");
        ((MysqlDatalSource) dataSource).setPassword("111111");
        //2.连接到数据库
        Connection connection = dataSource.getConnection();
        //3.构造 sql
        String sql = "select * from student";
        PreparedStatement statement = connection.preparedStatement(sql);
        //4.把 sql 发送给服务器
        ResultSet resultSet = statement.executeQuery();
        //5.遍历结果集 取出结果 
        while(resultSet.next()){
            int id = resultSet.getInt("id");
            String name = result.getString("name");
            System.out.println("id="+id+"name="+name);
        }
        //6.释放内存
        resultSet.close();
        statement.close();
        connection.close();
    }
}

对比写

查操作多了一步 遍历

resultSet 是一个 结果集 用于 存放查到的数据库

遍历这个 结果集 得到结果

标签:JDBC,数据库,编程,connection,dataSource,statement,sql,MySQL,服务器
From: https://www.cnblogs.com/ljy2003/p/18463511

相关文章

  • MySql数据库---存储过程(带in、out、inout参数,),变量定义,if,case判断,循环结构,游标,handler
    思维导图 存储过程概念MySQL5.0版本开始支持存储过程。简单的说,存储过程就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法,类似Python中的函数;存储过就是数据库SQL语言层面的代码封装与重用入门案例语法:delimiter自定义结束......
  • MySQL数据的导出
    有时需要将MySQL数据库中的数据导出到外部存储文件中,MySQL数据库中的数据可以导出成sql文本文件、xml文件或者html文件。本节将介绍数据导出的常用方法。11.4.1 使用SELECT…INTOOUTFILE导出文本文件MySQL数据库导出数据时,允许使用包含导出定义的SELECT语句进行数据的导出操......
  • CentOS免安装MySQL8实践
    所谓的免安装就是就是使用MySQL服务端二进制压缩包部署服务,而不是直接通过包管理器方式安装MySQL服务器。如下示例为在CentOS7环境免安装MySQL8.0.31服务器。在安装之前需要先检查下是否已经通过包管理器安装过MySQL服务器,如果已经安装,则先把安装的卸载。$rpm-qa|grepmys......
  • 01背包问题/Ieee全球极限编程大赛11.0题BeetleBag题解/洛谷P1926 小书童——刷题大军
    基础01背包问题概述给出一个容积为V的背包,有i个物体,每个物体都有自己的体积和价值,用Vi和Wi表示,要将这些物体装进背包里面,问怎样才能使得装入物体的总价值最大?最大为多少?解决思路1.如果你没能正确理解这道题,尤其是对于很多新手,第一反应可能是将所有物体的单位价值算出来,然后......
  • 【C++学习】核心编程之类和对象(上)黑马学习笔记—超详细
    目录(一)封装1.1封装的意义:意义一:在设计类的时候,属性和行为写在一起,表现事物意义二:类在设计时,可以把属性和行为放在不同的权限下,加以控制1.2struct和class区别 1.3成员属性设置为私有(二)对象的初始化和清理2.1构造函数和析构函数2.2构造函数的分类及调用两种分类......
  • 实验1 现代c++编程初体验
    任务1:task1.cpp//现代C++标准库、算法库体验//本例用到以下内容://1.字符串string,动态数组容器类vector、迭代器//2.算法库:反转元素次序、旋转元素//3.函数模板、const引用作为形参#include<iostream>#include<string>#include<vector>#include<algorithm>......
  • 【环境配置教程】MYSQL----win系统本地同时安装MySQL5.7.xx、MySQL8.0.xx
    文章目录1.下载mysql8和mysql5.7的压缩包2.解压到本地3.安装MySQL8.xx.xx第一步配置环境变量第二步新建配置文件第三步MySQL数据库初始化第四步临时密码第五步安装并开启mysql8服务第六步登陆mysql8修改密码4.安装MySQL5.7第一步配置环境变量第二步新建......
  • 实验1 现代c++编程初体验
    实验任务一task1.cpp1//现代C++标准库、算法库体验2//本例用到以下内容:3//1.字符串string,动态数组容器类vector、迭代器4//2.算法库:反转元素次序、旋转元素5//3.函数模板、const引用作为形参6#include<iostream>7#include<string>8#includ......
  • MySQL 索引
    索引是让提高数据查询效率的数据结构。(避免全表扫描)索引的实现方式:哈希索引、B+Tree树、倒排索引。InnoDBB+Tree的叶子节点指向主键id或存储数据行;MyISAM的叶子节点指向数据行的内存地址MySQL索引的最左前缀原则索引常见模型索引常见模型:有序数组、跳表、哈希表、搜索......
  • Mysql锁的学习
    Mysql的锁主要为全局锁、表锁和行锁。全局锁是针对整个数据库的锁,最常用的是读锁和写锁读锁(共享锁):允许读取数据,不允许修改数据,可以保持数据一致性写锁(排他锁):在你修改数据时,阻止其他用户读取和更改数据使用场景:全库备份,全库导出使用FLUSHTABLESWITHREADLOCK来加锁,UNLOC......