首页 > 其他分享 >JDBC

JDBC

时间:2022-10-27 14:35:24浏览次数:69  
标签:jdbc 数据库 sql JDBC mysql conn

JDBC:

jdbc就是用java代码操作数据库的一门技术。早期sun公司的程序员想编写一套可以连接所有数据库的 API,但数据库之间的差异太大,无法实现。后来sun公司与数据库厂商商量决定,由sun公司提供一套访问数拥库的接口,数据库厂商按照接口规范提供一套访问自己数据库的APi,这套API就是数据库驱动。程序员不用关心驱动的实现,只需要面向sun公司提供的jdbc接口编程. JDBC(Java DataBase Connectivity)就是Java数据库连接,简单说就是封装了java语言操作不同据库(例如:mysql,oracle、sqlServer等数据库)的接口,各个数据库厂商实现这个接口。因此java语言可以通过JDBC操作各个数据库。

JDBC是里面封装着操作各数据库的接口,而JDBC驱动才是接口的实现,没有驱动无法完成数据库连接!每个数据库厂商都有自己的驱动,用来连接自己公司的数据库。

JDBC API:

1.DriverManager类 作用:管理各种不同的JDBC驱动
2.Connection接口:负责连接数据库并担任传送数据的任务
3.Statement接口:由 Connection 产生、负责发送执行SQL语句
4.ResultSet接口:负责保存Statement执行后所产生的查询结果

JDBC编程步骤

1.加载驱动程序:

Class.forName(driverClass)
//加载MySql驱动注意MySQL数据库的版本和jar包的版本
MySQL5: driver-class-name: com.mysql.jdbc.Driver
MySQL8: driver-class-name: com.mysql.cj.jdbc.Driver
//加载Oracle驱动
Class.forName("oracle.jdbc.driver.OracleDriver")

2.获得数据库连接:

//以下连接三部分第一部分及时连接的驱动只是要注意最后的是数据库的名称,我这里用的djm数据库,别的再改
//第二和第三部分是数据库用户名和密码,我设置的是root和123456,别的再改
DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/djm", "root", "123456");

3.创建Statement\PreparedStatement对象:

conn.createStatement();
conn.prepareStatement(sql);

4.完整的实例-查询数据

//加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//获得数据库连接
Connection conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1/djm","root","123456");
//创建Statement\PreparedStatement对象
Statement stmt = conn.createStatement();
//执行sql,这里的是查询数据
ResultSet rs = stmt.executeQuery("select * from emp");
    while(rs.next()) {
    String string = rs.getString("empname");
    System.out.println(string);
}
//关闭资源,非常重要,一定要关闭
conn.close();
stmt.close();
rs.close();
//输出:张三 李四 王五

数据库的数据是这些,只查询姓名(empname)所以输出empname

5.完整的实例-删除数据

//加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//连接
Connection conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1/djm","root","123456");
//创建statement
Statement stmt = conn.createStatement();
//执行sql,这里的是会返回受影响的行数,只删除一行所以返回1
int i= stmt.executeUpdate("delete from emp where empno=1001");
System.out.println(i);
conn.close();
stmt.close();
//输出 1

删除之后表中就没有1001的数据了

要注意:prepareStatement和Statement ,prepareStatement是可以防止sql注入

首先什么是sql注入?

一般来说,黑客通过把恶意的sql语句插入到网站的表单提交或者输入域名请求的查询语句,最终达到欺骗网站的服务器执行恶意的sql语句,通过这些sql语句来获取黑客他们自己想要的一些数据信息和用户信息,也就是说如果存在sql注入,那么就可以执行sql语句的所有命令 大家都知道,java中JDBC中,有个预处理功能,这个功能一大优势就是能提高执行速度尤其是多次操作数据库的情况,再一个优势就是预防SQL注入,严格的说,应该是预防绝大多数的SQL注入。 为什么它这样处理就能预防SQL注入提高安全性呢?其实是因为SQL语句在程序运行前已经进行了预编译,在程序运行时第一次操作数据库之前,SQL语句已经被数据库分析,编译和优化,对应的执行计划也会缓存下来并允许数据库已参数化的形式进行查询,当运行时动态地把参数传给PreprareStatement时,即使参数里有敏感字符如 or '1=1’也数据库会作为一个参数一个字段的属性值来处理而不会作为一个SQL指令,如此,就起到了SQL注入的作用了!
//加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//连接
Connection conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1/djm","root","123456");
//创建prepareStatement
//注意prepareStatement是可以防止sql注入
PreparedStatement ps = conn.prepareStatement("delete from emp where empname=?");
ps.setString(1,"李四 or 1=1");
//执行sql,影响的行数
int i = ps.executeUpdate();
System.out.println(i);        
conn.close();
ps.close();
//如以上的例子,因为在张三的后面添加了一个or 1=1 所以就是返回了一个0,没删除成功,这就是防止sql注入

 

标签:jdbc,数据库,sql,JDBC,mysql,conn
From: https://www.cnblogs.com/YHSDDJM/p/16832127.html

相关文章

  • JDBC概念和JDBC快速入门
     JDBC概念概念:javaDataBaseConnectivityjava数据连接java语法操作数据库 JDBC本质其实是官方(sun公司)定义的一套操作所有关系系数据库的规则即接口各个数据库......
  • jdbctype(jdbctype=numeric)
    jdbctype和javatype的区别jdbc是数据库的数据类型,Java是那几种类型加类类型使用mybatis框架做更新操作时,在该字段需要更新的内容为空时,就会出现1111错误,也就是无效的列类......
  • jdbc入门案例学习,java如何连接mysql,如何和mysql进行连接
    在学习了java基础和mysql以及SQL语法之后,那我们可以开始学习如何程序对数据库的数据进行操作,基本操作就是,查询,新增,更新,删除,四个基本操作,也是全部操作。这节我们将通过jdb......
  • JDBC连接MySQL(简单)
    JDBC连接MySQL    加载及注册JDBC驱动程序         Class.forName("com.mysql.jdbc.Driver");         Class.forName("com......
  • JDBC 的API之 Connection 和 Statement
     Connection是建立连接的api他有两个功能: 一是:建立和数据库的连接:Connectionconn=DriverManager.getConnection(url,root,password); 二是:管理事务,就是在java......
  • Java查询服务器(windows + linux)和系统各个指标数据 cpu、内存、硬盘、线程、请求错
    importjava.io.BufferedReader;importjava.io.File;importjava.io.IOException;importjava.io.InputStreamReader;importjava.lang.management.ManagementFactory......
  • Java反射之类的字节码对象的三种调用方式和JDBC【多测师】
    类的字节码对象:packagecom.section02;importorg.apache.log4j.Logger;importcom.section01.Student;/***@authorxiaoshu*同一个类在JVM中只存在一份字节码对象*也就是......
  • JDBC封装数据库的工具类【多测师】
    一、先写一个数据库的工具函数要求:1、可以通过IP地址账号密码等进行连接数据库2、封装一封装一个查询的方法==》多测师_王sirpackagecom.xiaoshu;importjava.sql.Connec......
  • jdbc java database con
    jdbc是一种实现数据库与java之间的接口,mysql等数据都有的jdbc的实现类步骤1.注册驱动:class.forname("com.mysql.jdbc.Driver")2.获取数据库连接:Connection conn=D......
  • JDBC概述
    基本介绍基本原理图jdbc带来的好处jdbc的api快速入门jdbc编写步骤前置工作.在项目文件中创建一个新文件夹libs,把mysql.jar压缩包复制进去,然后把压缩包加入项目......