JDBC简析及与mysql链接实例

JDBC

jdbc简介

JDBC(java DateBase Connectivity)是sun公司推出的用于java工程与数据库之间进行交互的一整套规范(实质上是一整套接口),并由各大数据库厂商根据自己的数据库产品进行实现,所以使用JDBC之前必须根据所使用的数据库向工程中导入对应的JDBC包。

jdbc常用接口简析

Connection:建立链接。
			作用:从java搭建桥梁到数据库。
Statement:sql命令接口。
			作用:从java发送sql命令到dbms。
ResultSet:结果集。
			作用:如果是查询语句,dbms会返回一个虚拟的结果集。通过接口的方法可以获取到结果集中的数据。
PreparedStatement:是Statement接口的子接口。
			作用:主要通过预编译手段防止注入式sql攻击。

SQL注入

SQL注入式攻击是指以前由于底层实现上sql语句常用“+”拼接的方式实现,这样就可利用拼接方式的漏洞,通过某些原本不能通过的验证。

//用户登录时,会在数据库中匹配用户的id及密码,错误返回false拒绝登录,正确返回true允许登录,sql语句为
String sql = "select * from user where id = '" + id + "' and pass = '" + pass + "'";
//当用户输入"id=0048"和"pass=ukahdi or 1==1";(虽然密码错误,但仍会通过登录验证),这就有了非法访问的风险。这时就需要使用PreparedStatement接口,这个接口中允许在sql语句中使用?作为占位符,则原语句可改写为
String sql = "select * from user where id = ? and pass = ?" ;
//通过PreparedStatement接口中的一系列set方法可以对占位符处的传入值的类型进行限制,从而防止注入式攻击的发生。

jdbc链接mysql实例

一个完整的链接操作通常有四步:

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

public class JdbcTest {
    public static void main(String[] args) throws Exception {
		
		//加载驱动
        Class.forName("com.mysql.cj.jdbc.Driver");

		//创建链接并再控制台输出链接地址
        Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb","root","root") ;
        System.out.println(connection);
        
		//执行sql语句,用结果集接收结果,并在控制台打印结果集地址
        String sql = "select * from user";
        Statement statement = connection.createStatement();
        ResultSet resultSet = statement.executeQuery(sql);
        System.out.println(resultSet);
        
		//关闭链接,释放资源
        connection.close();
        statement.close();
        resultSet.close();

    }
}

如有错误或不当之处欢迎在评论区指出,博主会及时回复及修改,数据库学习即将告一段落,作此记录。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值