servlet操作数据库
工具:myeclipse
数据库工具:mysql
java ee操作数据库,首先要导入数据库驱动文件,我用的是mysql
刚开始,很多人代码正确但是就是连接不上,原因就是忘了驱动文件的导入。
我的驱动文件:
网上很容易找到
操作如下:
1.在要加入驱动文件的项目右击选中Build Path->>Add External Archives..
2.选择该驱动文件路径,添加
这下就可以进行数据库操作了
代码首部必须import java.sql.*;
//连接数据库,加载数据库驱动文件 Class.forName("com.mysql.jdbc.Driver"); //得到连接,括号内格式为数据库url+用户名+用户密码,这里的数据库名称为spdb,用户名称为root,密码为xxx Connection ct=DriverManager.getConnection("jdbc:mysql://localhost:3306/spdb","root", "XXX"); //创建statement Statement sm=ct.createStatement(); String sql="select * from users";//sql执行语句 //有返回值的例如查找用executeQuery函数,没有返回值的例如删除用executeUpdate函数 ResultSet rs=sm.executeQuery(sql); System.out.println(sql); if(rs.next()){//为真说明查找有结果,假说明未查找成功 //这里可以执行查找成功后代码 }
一系列操作做完之后,必须关闭sql连接。。
finally{ try{//关闭可能会出现异常异常 //一定注意关闭顺序 if(rs!=null){//为了使程序健壮点,可能rs为空时要判断 rs.close(); } if(sm!=null){ sm.close(); } if(ct!=null){ ct.close(); } }catch(Exception e){ e.printStackTrace(); } }
一定要注意关闭顺序!!
sql注入漏洞!!!
加入我要验证用户名和密码,注意下面这句话:
select * from users where username=‘22‘
and passwd=‘22‘ or 1=‘1‘;
这句话不论什么,只要有后面的or 1=‘1‘,都会查找成功。
其实本意是
select * from users where username=‘xxx‘ and passwd=‘xxx‘;
这样的话,如果用户名随便输入 ,密码输入 22‘
or 1=‘1 (红色字体部分)
,那也可以验证成功,这段内容是两个单引号之间的
这个就为sql注入漏洞,可先通过用户名从数据库中查找到密码,再与用户输入密码相比较,这样就可以有效的避免该问题了,当然也会有其他办法。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。