JDBC

  • 数据库驱动

    • 我们的程序会通过数据库驱动和数据库打交道

  • JDBC

    • Sun公司简化开发人员的操作,提供的规范

  • 第一个JDBC项目

    • 创建一个Java项目

    • 导入jar包

    • 编写测试代码

      • 1 create database `jdbcStudy` character set utf8mb4 collate utf8mb4_bin;
        2
        3 use `jdbcStudy`;
        4
        5
        6 insert into `users`(`id`,`NAME`,`PASSWORD`,`email`,`birthday`)
        7 values(1,'zhangsan','123456','zs@sina.com','1980-12-04'),
        8 (2,'lisi','123456','lisi@sina.com','1981-12-04'),`jdbcstudy`
        9 (3,'wangwu','123456','wangwu@sina.com','1979-12-04');

        建表添加数据

    •  1 public static void main(String[] args) {
      2 //加载驱动
      3 try {
      4 Class.forName("com.mysql.cj.jdbc.Driver");
      5 } catch (ClassNotFoundException e) {
      6 e.printStackTrace();
      7 }
      8 //用户信息和url
      9 String url = "jdbc:mysql://localhost:3306/jdbcstudy?useUnicod=true&characterEncoding=utf8";
      10 String userName = "root";
      11 String password = "123456";
      12
      13 //连接成功,数据库对象
      14 try {
      15 Connection connection = DriverManager.getConnection(url, userName, password);
      16
      17 //执行SQL的对象
      18 Statement statement = connection.createStatement();
      19
      20 //执行SQL的对象执行SQL
      21 String sql = "select * from users";
      22
      23 ResultSet resultSet = statement.executeQuery(sql);
      24
      25 while (resultSet.next()){
      26 System.out.print("id="+resultSet.getObject("id"));
      27 System.out.print("\tname="+resultSet.getObject("name"));
      28 System.out.print("\tpassword="+resultSet.getObject("password"));
      29 System.out.print("\temail="+resultSet.getObject("email"));
      30 System.out.println("\tbirth="+resultSet.getObject("birthday"));
      31 }
      32
      33 //释放连接
      34 resultSet.close();;
      35 statement.close();
      36 connection.close();
      37
      38 } catch (SQLException e) {
      39 e.printStackTrace();
      40 }
      41
      42 }

  • SQL注入

    • SQL存在漏洞,会被攻击导致数据泄露

  • PreparedStatement

    • Connection connection = null;
      PreparedStatement pstm = null;
      try {
      connection = JdbcUtils.getConnection();
      //区别
      //使用问好占位符代替参数
      String sql = "insert into users(id,`NAME`) values(?,?)";
      pstm = connection.prepareStatement(sql);//预编译sql,先写sql然后不执行
      //手动赋值
      pstm.setInt(1, 8);
      pstm.setString(2, "SANJIN"); //执行
      int i = pstm.executeUpdate();
      if (i > 0) {
      System.out.println("插入成功");
      }
      } catch (Exception e) {
      e.printStackTrace();
      } finally {
      try {
      JdbcUtils.release(connection, pstm, null);
      } catch (SQLException throwables) {
      throwables.printStackTrace();
      }
      }

MySQL入门学习day3随笔3的更多相关文章

  1. MySQL入门学习day3随笔2

    用户创建及权限部分 1 create user Cra2iTeT identified by '123456'-- 创建用户 2 3 alter user 'Cra2iTeT'@'%' identif ...

  2. Mysql入门学习day2随笔2

    事务 什么是事务 要么都成功,要么都失败 事务原则 原子性:针对一个事务,两个步骤一起成功或一起失败 一致性:最终一致性,例如A.B之间的转账,无论两个账户如何操作,两账户的总价值不会变 隔离性:针对 ...

  3. 【数据库】9.0 MySQL入门学习(九)——获得数据库和表的信息、日期计算、查询、选择特殊列

    1.0 SELECT语句用来从数据表中检索信息. SELECT what_to_select FROM which_table WHERE conditions_to_satisfy; what_to ...

  4. 【数据库】7.0 MySQL入门学习(七)——MySQL基本指令:帮助、清除输入、查询等

    1.0 help == ? 帮助指令,查询某个指令的解释.用法.说明等.详情参考博文: [数据库]6.0 MySQL入门学习(六)——MySQL启动与停止.官方手册.文档查询 https://www. ...

  5. 【数据库】4.0 MySQL入门学习(四)——linux系统环境下MySQL安装

    1.0 我的操作系统是CentOS Linux release 7.6.1810  (Core) 系统详细信息如下: Linux version 3.10.0-957.1.3.el7.x86_64 ( ...

  6. 【数据库】3.0 MySQL入门学习(三)——Windows系统环境下MySQL安装

    1.0 我的操作系统是window10 专业版 64位.,不过至少windows7以上系统都是一样的. 关于MySQL如何下载,请参考博文: [数据库]2.0 如何获得MySQL以及MySQL安装 h ...

  7. MySQL学习day3随笔

    索引在数据量不大的时候体现不出来,数据很多的时候区别明显 1 select * from app_user where `name`='用户9999';-- 0.053 sec 2 select * ...

  8. 【数据库】2.0 MySQL入门学习(二)——如何获得MySQL以及MySQL安装

    1.0 如何获得MySQL: www.oracle.com https://dev.mysql.com/downloads/ 2.0 例如进入Oracle官网,找到MySQL: 进入页面后,切换到“资 ...

  9. 【转】MYSQL入门学习之十三:自定义函数的基本操作

    转载地址:http://www.2cto.com/database/201212/177382.html 一.自定义函数(UDF)的特性和功能  www.2cto.com           函数能分 ...

随机推荐

  1. 硬吃一个P0故障,「在线业务」应该如何调优HBase参数?

    1.背景 由于种种原因,最近将核心业务生产使用的HBase迁移到了云上的弹性MapReduce(EMR)集群上,并使用了EMR的HBase组件默认参数配置. 结果在流量高峰期出现了宿主机故障,挂掉了两 ...

  2. k8s集群关机后,如何解决 kubernetes 重启起不来的问题

    如何解决 kubernetes 重启后,启来不来的问题 登录自己的Kubernetes测试集群时发现集群好像没有启动成功 运行 kubectl get pods --all -A ,报错如下. 第一反 ...

  3. centos7升级openssh8.7&openssl1.1.1l脚本

    脚本下载地址或首页联系本人获取 https://files.cnblogs.com/files/blogs/705493/update_ssh.sh 需搭配openssh8.7和openssl1.1. ...

  4. 洛谷P1049 [NOIP2001 普及组] 装箱问题

    本题就是一个简单的01背包问题   1.因为每个物品只能选一次,而且要使箱子的剩余空间为最小.所以可以确定属性为 MAX 2.由于是从n个物品里面选i个物品 那么就是选出的i个物品的空间总和要尽可能的 ...

  5. 时序数据库之InfluxDB的基本操作

    1.进入Influxdb的客户端 [root@activity_sentinel ~]# influx 2.数据库的操作 显示所有的数据库名 > show databases name: dat ...

  6. protocol 协议语言介绍

    Protocol Buffer是Google提供的一种数据序列化协议,是一种轻便高效的结构化数据存储格式,可以用于结构化数据序列化,很适合做数据存储或 RPC 数据交换格式.它可用于通讯协议.数据存储 ...

  7. libpcap -学习1

    1.今天学到的最重要一点就是指定是否打开混杂模式(Promiscuous Mode),0表示非混杂模式,任何其他值表示混合模式.如果要打开混杂模式,那么网卡必须也要打开混杂模式,可以使用如下的命令打开 ...

  8. 是否可以从一个static方法内部调用非static方法?

    不可以.静态成员不能调用非静态成员. 非static方法属于对象,必须创建一个对象后,才可以在通过该对象来调用static方法.而static方法调用时不需要创建对象,通过类就可以调用该方法.也就是说 ...

  9. Oracle :value too large for column "SCHEMA"."TABLE"."COLUMN" (actual: 519, maximum: 500)的解决方案

    原因:我是使用 CREATE TABLE XXX AS subquery 进行创建的数据表,主要是将相关的数据聚合在一起,然后通过导出为SQL脚本文件,进行导入到新库中,导致部分INSERT INTO ...

  10. 什么是 Swagger?你用 Spring Boot 实现了它吗?

    Swagger 广泛用于可视化 API,使用 Swagger UI 为前端开发人员提供在线沙箱.Swagger 是用于生成 RESTful Web 服务的可视化表示的工具,规范和完整框架实现.它使文档 ...