首页 > 其他分享 >JDBC知识

JDBC知识

时间:2022-11-21 10:15:10浏览次数:74  
标签:JDBC java String 数据库 知识 resultSet sql id

1 jdbc是什么?

Java DateBase connectivity,java数据库连接,java语言连接数据库
JDBC本质:sun公司定义了一套操作所有关系型数据库的规则(接口),各个数据库厂商去实现这套数据库,提供数据库驱动jar包我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。

2 使用步骤

1.导入驱动jar包
2.注册驱动   -> Class.forName
3.获取数据库连接对象connection -> DriverManager.getConnection
4.定义SQL语句
5.执行数据库语句的对象 Statement -> conn.createStatement
6.执行数据库,接受返回的结果 -> stmt.execute
7.处理结果
8.释放资源 stmt/conn.close

1.1 DriverManager: 驱动管理对象,导入jar包,注册驱动,写代码时使用:class.forName(“com.mysql.Driver”),该类中存在静态代码块

1.2 Connection: 获取连接数据库(url/username/password)

1.3 Statement: 执行数据库的对象, 执行SQL语句

1.4 ResultSet: 返回结果对象, 在while循环中使用循环来遍历结果集

package com.jun.jdbc.resultset;
 
import java.io.FileInputStream;
import java.sql.*;
import java.util.Properties;
 
/**
 * select语句返回ResultSet,取出结果
 */
public class ResultSet01 {
    public static void main(String[] args) throws Exception {
        //通过Properties对象获取配置文件信息
        Properties properties = new Properties();
        properties.load(new FileInputStream("src\\mysql.properties"));
        //获取到相关值
        String user = properties.getProperty("user");
        String password = properties.getProperty("password");
        String driver = properties.getProperty("driver");
        String url = properties.getProperty("url");
        Class.forName(driver);
        Connection connection = DriverManager.getConnection(url, user, password);
        //得到Statement
        Statement statement = connection.createStatement();
        //sql语句
        String sql ="select id,name,sex,borndate from actor";
        //执行sql语句,该语句返回单个,ResultSet对象
        /*
        +----+------+-----+---------------------+
        | id | name | sex | borndate            |
       +----+------+-----+---------------------+
       |  1 | tom  | 男  | 1945-05-06 00:00:00 |
       |  2 | jack | 男  | 1986-06-07 00:00:00 |
       +----+------+-----+---------------------+
         */
        ResultSet resultSet = statement.executeQuery(sql);
        //使用while取出数据
        while (resultSet.next()){//让光标向后移动,没有更多就返回false
            int id = resultSet.getInt(1);//得到第一行
            String name = resultSet.getString(2);//得到第二行
            String sex = resultSet.getString(3);
            Date date = resultSet.getDate(4);
            System.out.println(id+"\t"+name+"\t"+sex+"\t"+date);
        }
        //关闭连接
        resultSet.close();
        statement.close();
        connection.close();
    }
}
View Code

1.5 PreparedStatement:执行数据库的对象

  • 简化Statement中的操作
  • 提高执行语句的性能
  • 可读性和可维护性更好
  • 安全性更好。
  • 使用PreparedStatement能够预防SQL注入攻击,所谓SQL注入,指的是通过把SQL命令插入到Web表单提交或者输入域名或者页面请求的查询字符串,最终达到欺骗服务器,达到执行恶意SQL命令的目的。注入只对SQL语句的编译过程有破坏作用,而执行阶段只是把输入串作为数据处理,不再需要对SQL语句进行解析,因此也就避免了类似select * from user where name='aa' and password='bb' or 1=1的sql注入问题的发生。

Statement 和 PreparedStatement之间的关系和区别.

  • 关系:PreparedStatement继承自Statement,都是接口
  • 区别:PreparedStatement可以使用占位符,是预编译的,批处理比Statement效率高
package com.github.feifuzeng.middleware.mybatis.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class PrepareStatementSimpleDemo {

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

        /** 1. init PreparedStatement*/
        Class.forName("com.mysql.jdbc.Driver");
        String url = "jdbc:mysql://localhost:3306/db_test?useSSL=false";
        String user = "root";
        String password = "root";
        Connection connection = DriverManager.getConnection(url, user, password);
        String sql = "update user set username=? where id = ?";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);

        /** 2. prepare param*/
        preparedStatement.setString(1, "feifz");
        preparedStatement.setInt(2, 2);

        /** 3. execute update*/
        int result = preparedStatement.executeUpdate();
        System.out.printf("更新记录数:"+result+"\n");

        /** 4. execute select*/

        String sql2 = "select * from user";
        ResultSet resultSet = preparedStatement.executeQuery(sql2);
        while (resultSet.next()) {
            int id = resultSet.getInt("id");
            String username = resultSet.getString("username");
            String dept = resultSet.getString("dept");
            System.out.println("id:"+id +"username->"+ username + ",dept-> " + dept );
        }


    }
}
View Code

 

 

 



 

标签:JDBC,java,String,数据库,知识,resultSet,sql,id
From: https://www.cnblogs.com/ningshare/p/16910398.html

相关文章

  • 护肤知识总结
    1.辨别自己的肤质脸部皮肤可以分成3个区域:T区:额头以及鼻子U区:脸颊以及下巴外C区:脸部外轮廓怎么判断:洗面奶洗完脸隔一个小时左右,什么护肤品都不擦。根据3个......
  • Java_JDBC
    JDBC一、JDBC简介1、概念:​ JDBC就是使用Java语言操作关系型数据库的一套API​ 全称:(JavaDataBaseConnectivity)Java数据库连接2、本质:为了使得Java代码可以......
  • 297个机器学习彩图知识点(5)
    导读本系列将持续更新20个机器学习的知识点。1.岭回归2.安斯库四重奏3.偏差方差4.自助采样法5.能力6.最优化算法7.常见激活函数8.凹凸函数9.条......
  • JDBC回顾
    JDBC什么是JDBC:Java连接数据库!需要jar包的支持:java.sqljavax.sqlmysql-conneter-java...连接驱动(必须要导入)实验环境搭建CREATETABLEusers(idINT......
  • 【博学谷学习记录】超强总结,用心分享 集合重要知识点。
    集合1.1常见的数据结构常见的数据结构有:数组、栈、队列、链表、树、散列、堆、图等。数组是最常用的数据结构,数组的特点是长度固定,数组的大小固......
  • SQL知识
    SQL语句常用命令1表设计https://blog.csdn.net/weixin_50906078/article/details/1239226521.1创建表createtable表名(字段字段类型);单列主键示例(Oracle):CREATE......
  • 常用硬件接口知识
    VGA接口VGA(VideoGraphicsArray)视频图形阵列是IBM于1987年提出的一个使用模拟信号的电脑显示标准。VGA接口即电脑采用VGA标准输出数据的专用接口。VGA接口共有15针,分成3排......
  • DLGOPENGL-04理论知识
    什么是OPENGL?我们需要知道OpenGL是“开放图形库”的缩写。OpenGL是一种API,它允许我们相对容易地在屏幕上输出图形,而不必确切地知道背景中发生了什么。整个过程在某种程度......
  • JAVA学习方法与知识点
       这个时代有很多的朋友都开始选择看看学习学习当下热门的编程语言比如现在的Java这类技术。俗话说的好啊天下熙熙皆为利来,天下攘攘皆为利往,目前大多都是为了高薪工......
  • 基础知识/RUST程序设计语言/4.认识所有权
    //本页是对RUST第四章的学习汇总记录。书址4.1.什么是所有权1.所有权是RUST语言的核心功能(之一)他是一种管理内存的方式2.**所有权规则Rust中的每一个值都......