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和用户输入的密码相比较。