首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

编程过程中通过JDBC连接数据库的问题及sql注入的演示及解决办法

JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成,是Java访问数据库的标准规范。

这里我们使用的是mysql的驱动mysql-connector-java-5.1.39-bin.jar

解压之后

我们只用把上图中的那个jar包添加到bulidpath中既可以使用了,我们在工程下新建一个lib文件夹,然后把jar复制过去,并添加进buildpath

在演示jdbc的使用之前,先创建一个数据库用于演示

1.注册驱动.:告诉JVM使用哪一个数据库驱动

2.获得连接.:使用jdbc完成对mysql的数据库连接

3.获得语句执行平台:通过连接对象获取对SQL语句执行者对象

4.执行sql语句,通过执行者对象,向数据库执行SQL语句,并获取到数据库的执行结果

5.处理结果

6.释放资源.,close()

其中1,2,3,6基本是固定的操作。

导入包的时候不要倒错

运行结果为

说明已经获得了数据库的连接对象了,下面我们要获得sql语句执行者对象了,通过con调用createStatrment()方法实现然后通过执行者对象的executeUpdate(sql)方法,执行sql语句

根据查询数据库的效果可以看出完全插入了编程书这一类,说明执行成功。下面演示查询,并处理结果集,要想用查询需要应用语句执行者对象的executequery方法,他会返回结果集ResultSet,查询语句所有的结果都在这

说明执行语句也成功了。

这在样的sql语句的情况下,无论前面的是否匹配,or后的1=1肯定成立,所以where为真,所以这就会出现一个问题,这个问题就是sql的注入攻击。这里要说一下SQL语句,sql语句中字符类型要用单引号引起来,数字类型也可以用单引号引起来也不会出问题,因为java操作sql语句整体为一个字符串,这个字符串要用双引号引起来,当sql语句中要放入外部录入的数据时,为了保证整体还是一个字符串需要使用“”+外部录入的变量名+“”,就是两个双引号加加

下面演示一下sql注入的实例。

在or的两边加单引号,使得左右两边都匹配,’根据这个结果可以知道,就算数据没有输入正确,我们依然可以查到数据,那么这就存在数据安全问题了,所以我们要避免,为了防止出现这种情况,我们通过预编译的方法解决,就是通过Ststement的子接口PrepareStatement来操作。

发现这下子sql注入不成功了,既然这个可以放置SQL注入,那以后就用这种方式来操作,那么下面演示用这种方式时怎么插入修改的。

可以发现家电,编程了小家电说明成功了。

至此jdbc就总结完了,那么每次都写一大堆的forName是很烦恼的,我们可以把它封装一下,下一篇文章分享如何把这些东西封装起来,以后就不在写一次就调用一次他们了。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180208A0J56A00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券