sql学习笔记

1.在servlet向sql传递值时,如果这个值是个变量i,一定要用"+"的方式来传递,例如"select password from user where username ='"+i+"'"

2.查询时采用select top 1* from .....................可以大大提高查询时候的效率,这在数据库的数据量比较庞大时更为明显

3.数据库使用完毕之后一定要在finally语句块中对Connection Statement ResultSet创建的三个对象进行关闭处理,否则会长期占用数据库大量资源,关闭时三个对象的顺序不能搞错,ResultSet,Statement,最后是Connection,关闭时候也需要处理异常

4.rs.next()执行后,rs中的指针会向下移动一行,默认rs指针是指在标签栏也就是列名那一行上

5.sql注入漏洞:在selct *语句最后加上:or '1';(例如select * from user where username ='dsa' and password='sd' or 1='1'),将能够查到整个数据库的全部信息,即使这个用户名和密码是错的或者是根本就不存在与数据库中!用户在登录框中随便输,只要在密码的最后加上or 1='1'就能够登入.(经动手实验发现在mysql5.6版本中确实存在这个漏洞!)

解决办法:不要同时把用户名和密码放到数据库里去查,应该利用用户名到数据库里去查密码,然后返回给servlet和用户输入的密码相比较。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值