JDBC的使用

JDBC基本介绍

JDBC是一套操作数据库的API(接口),是一套数据库连接技术
​其中的相关接口:

Driver	驱动接口	该接口可以设定我们链接的是哪种数据库
​connection	连接接口	设定连接数据库的ip,数据库名字,账号密码等
​statement	sql的执行语句接口	该接口能将sql语句发送到数据库执行
​resultset	结果集接口	获得数据库返回的数据并解析

​这四个官方实现的接口,我们使用的是接口的实现类	且实现类由相关数据库提供

基本使用

1.导入对应数据库提供的jar包,下载:https://dev.mysql.com/doc/refman/5.7/en/verifying-package-integrity.html

这里jar要注意对应数据库版本,新旧版使用时有细微差异
导入对应jar包

2.加载对应数据库驱动	决定使用的数据库
	//加载驱动(利用反射执行其静态代码块)
	//旧版
	Class.forName("com.mysql.jdbc.Driver");
	//新版
	Class.forName("com.mysql.cj.jdbc.Driver");
3.获得数据库java程序的连接对象
	//连接数据库,填好ip,端口,数据库信息等
	Connection com = DriverManager.getConnection("jdbc:mysql://localhost:3306/db0", "root", "123");
4.通过连接对象获得sql语句的处理对象
	//获取执行对象
    Statement statement = com.createStatement();
5.填入sql语句并执行
	//执行对应语句
    ResultSet rs = statement.executeQuery("SELECT * FROM account");
    //获取并输出数据
    while (rs.next()) {
        System.out.println(rs.getInt("id") + "\t" + 
        rs.getString("name") + "    " + rs.getInt("money"));}
6.切断数据库与java的联系
	//关流
	com.close();
    statement.close();
    rs.close();

sql注入问题

SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

简单来说就是输入数据时加入一些能被sql识别的字符从而改变规则

 如这一段,1恒等1,这个密码匹配就失效了
	//输入密码
	String username = "123456";
	String password = "ab' or 1 = '1";
	//查询表中有没有这个用户与密码
	String sql = "select count(*)   from user where username = '"+username+"' and 	password='"+password+"'";

而此时就可以用到 prepareStatement 预编译,它不仅可以解决注入问题还有着对执行获得 sql 有存储,如果相同的sql语句被传输 直接就执行, 效率比 statement 要高的优点,当然消耗的资源也更多

这里的占位符set下面用户输入数据时,sql会自动把一整段当做一个数据而不会对其进行识别
String sql = "insert into student values(null,? ,?,?)";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1,"1");
statement.setInt(2,18);
statement.setString(3,"1990-3-1");
statement.execute();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zxy_spure

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值