JDBC 数据库的连接技术

什么是JDBC

  • JDBC(Java Data Base Connectivity),是 Java连接数据库的技术。

  • 是一种执行SQL的API, 可以为多种关系型数据库提供统一的访问。

  • 它是由一组用java语言编写的类和接口组成, 是Java访问数据库的标准规范。

JDBC 原理

什么是数据库驱动程序

  • 数据库驱动就是直接操作数据库的一个程序

  • 不同数据产品的数据库驱动名字有差异

  • 在程序中需要依赖数据库驱动来完成对数据库的操作

好处      1. 面向接口编程         2.代码不属于任何的数据库          3. 只需要稍作修改,就可以切换到其他数据库

总结: JDBC就是由sun公司定义的一套操作所有关系型数据库的规则(接口), 而数据库厂商需要实现这套接口, 厂商的实现类在引入的数据库驱动jar包中。

JDBC实现查询

1.数据的准备                 创建数据库表         插入数据

引入数据库驱动包          

  • MySQL驱动包提供的实现类: com.mysql.cj.jdbc.Driver

public class Text01{

public static void main(String [] args) throws ClassNotFoundException{
//注册驱动(使用反射)


Class.forName("com.mysql.cj.jdbc.Driver");

     }
}

MySQL的Driver类是MySQL提供的数据库驱动类,实现了JDBC的Driver接口 

2.获取连接                       JDBC提供了Connection接口, 代表一个数据库连接接口

 Connection getConnection (String url , String user ,String password)

//通过数据库url ,用户名,密码  来获取数据库。

3.获得SQL执行对象

Statement statement = connection.createStatement();

4.执行SQL获取返回结果

String sql = "想要在数据库里执行的语句"  ;

ResultSet  resultSet = statement.executeQuery(sql);

5 处理结果集

遍历ResultSet结果集对象
        while(resultSet.next()){
            int id = resultSet.getInt("id");
            String username = resultSet.getString("username");
            String password1 = resultSet.getString("password");
            int age = resultSet.getInt("age");
            System.out.println("id:" + id + ", username:" + username + ", password:" + password1 + ", age:" + age);
        }

6 资源的释放

- 需要释放的对象:ResultSet结果集,Statement语句,Connection连接
- ResultSet结果集: 当它的 Statement 关闭、重新执行或用于从多结果序列中获取下一个结果时,该ResultSet将被自动关闭
- 释放原则: 先开的后关, 后开的先关  Statement ==> Connection

        

例如
//6. 释放资源
        statement.close();
        connection.close();

JDBC实现增删改

插入记录
Statement statement = connection.createStatement();
String sql = "insert into jdbc_user values(default,'tom','123',20)";
执行SQL并得到结果
 int i = statement.executeUpdate(sql);
 System.out.println("受影响的行数是:" + i);

修改记录
 Statement statement = connection.createStatement();
 String sql = "update jdbc_user set username='jack' where id=4";
执行SQL并得到结果
int i = statement.executeUpdate(sql);
System.out.println("受影响的行数是:" + i);

删除记录

Statement statement = connection.createStatement();
String sql = "delete from jdbc_user where id=4";
4. 执行SQL并得到结果
int i = statement.executeUpdate(sql);
System.out.println("受影响的行数是:" + i);

ORM编程思想

对象关系映射(Object Relational Mapping,简称ORM)是一种为了解决面向对象语言与关系数据库存在的互不匹配的现象。

表的一列和类的一个属性对应,表的一行数据和类的一个对象对应。

实体类

实体类就是一个定义了属性,拥有getter、setter、无参构造方法(基本必备)的一个类。实体类可以在数据传输过程中对数据进行封装,相当于一个“工具”、“容器”、“载体”,能存储、传输数据,能管理数据。

用户登

  1. 存在的问题?

    我们让用户输入的密码和 SQL 语句进行字符串拼接。用户输入的内容作为了 SQL 语句语法的一部分,但是改变了原有 SQL真正的意义,以上问题称为SQL注入。

    SQL注入: 输入的内容作为sql执行一部分, 改变了原有sql的真正含义。

  2. 如何解决SQL注入的风险?

    要解决SQL注入就不能让用户输入的密码和SQL 语句进行简单的手动字符串拼接。

PreparedStatement预处理对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值