JDBC连接mysql数据库操作
一.创建所需对象,并进行初始化
- Connection connection=null;
- Statement statement=null;
- PreparedStatement pst;
- ResultSet rs=null;
二.加载mysql驱动
- Class.forName("com.mysql.jdbc.Driver");
三.创建链接(url为数据库连接,root帐号,pwd密码)
- connection=DriverManager.getConnection(url,root,pwd);
四.创建statement一般创建为预编形的即PreparedStatement,如果使用Statement会引起sql注入攻击,首先是一般的Statement:
- statement=connection.createStatement();
- String sql="select * from user where username='"+username+"'"+"and password='"+password+"'";
- rs=statement.executeQuery(sql);
- if(rs.next()){
- response.getWriter().print("connection is ok");
- }
- else {
- response.getWriter().print("用户名密码错误");
- }
五.测试:1.输入正确帐号="张三",密码=1234;获得效果
2.输入错误帐号=12312,密码=1231234' or '1'='1;获得效果,并将sql语句打印出来
3.总结:这句sql相当与( select * from user)一般的stament会因为sql拼接的问题,可能会被恶意攻击,攻击者可以无需帐号密码即可登录,可甚至可以删除你的数据库。
六.使用PreparedStatement防止sql注入,增强安全性,而且他比statement的效率更高,因为它是预先编译好的sql语句,使用?来代表参数,通过pst.setString方法将值传入,
第一个参数代表是第几个?的位置(从1开始),第二个参数代表是参数值。
- String sql="select * from user where username=? and password=?";
- pst=connection.prepareStatement(sql);
- pst.setString(1, username);
- pst.setString(2, password);
- System.out.println(pst.toString());
- rs=pst.executeQuery();
- if(rs.next())
- {
- response.getWriter().print("connection is ok");
- }
- else {
- response.getWriter().print("用户名密码错误");
- }
七.测试:输入错误帐号=12312,密码=1231234' or '1'='1(sql注入方法能否正常登录)
八.总结,为什么能防止sql,看打印出来的sql语句便可以知道,预编译的语句在执行时会自动转义一些字符,从而防止sql注入
JDBC连接mysql数据库操作的更多相关文章
- JDBC连接mysql数据库操作详解
1.什么是JDBC JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Jav ...
- jsp JDBC连接MySQL数据库操作标准流程参考
1. 此案例以帐号密码后台更新维护为例子,对数据库调取数据更新流程进行演示: 代码示例: <%@page import="java.io.IOException"%> ...
- 使用JDBC连接MySQL数据库操作增删改查
目录 1.首先这个Myeclipse的包名以及一些实现的类(这样子写是我的习惯) 2.接下来我们创建数据库(MySQL) 3.在数据库里面添加数据 4.首先是BaseDao,这个是重中之重,注意那个数 ...
- java jdbc 连接mysql数据库 实现增删改查
好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...
- Crystal Reports 2008(水晶报表) JDBC连接mysql数据库
在本blog中,主要介绍的是Crystal Reports 2008使用JDBC连接mysql数据库. 在连接之间,首先要确认你电脑上面都安装了mysql数据库. 其次,就是jdbc连接数据时候所使用 ...
- JDBC连接MySQL数据库及演示样例
JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识 JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...
- JDBC连接MySQL数据库及示例
JDBC是Sun公司制定的一个可以用Java语言连接数据库的技术. 一.JDBC基础知识 JDBC(Java Data Base Connectivity,java数据库连接)是一 ...
- Java通过JDBC 进行MySQL数据库操作
转自: http://blog.csdn.net/tobetheender/article/details/52772157 Java通过JDBC 进行MySQL数据库操作 原创 2016年10月10 ...
- JDBC 连接mysql数据库
JDBC 连接mysql数据库jar包:mysql-connector-java-5.1.47.jar 下载:mysql-connector-java-5.1.47.jar jdbc:java dat ...
随机推荐
- js的位置和执行情况
放到<head>中的<script>在body加载之前就已经运行了. 写在body中的<script>是随着页面的加载而一个个执行的.
- 九款免费轻量的 AutoCAD 的开源替代品推荐
随着各行各业的发展,CAD已经广泛应用于工业.服装.建筑以及电子产业等设计领域.AutoCAD 是一种流行的商业CAD软件,虽然很强大,但并不是免费的.因此本文推荐了几种免费重量轻的CAD工具/软件, ...
- WPF 创建无边框的圆角窗口
原文:WPF 创建无边框的圆角窗口 如题所述,在WPF中要创建一个没有边框且为圆角的窗体,有如下几步工作要进行: 第一步:去掉窗体默认样式的边框 首先将窗体的背景设为透明,将允许透明的属性设置为Tru ...
- Expression Blend实例动画-大坝水位升高演示
原文:Expression Blend实例动画-大坝水位升高演示 Expression Blend是个很强大的东西,用它可以完成很多不好做的动画效果. 动画的主要元素: 时间线(Timeline) : ...
- Win8 Metro(C#)数字图像处理--2.75灰度图像的形态学算法
原文:Win8 Metro(C#)数字图像处理--2.75灰度图像的形态学算法 前面章节中介绍了二值图像的形态学算法,这里讲一下灰度图的形态学算法,主要是公式,代码略. 1,膨胀算法 2,腐蚀算法 3 ...
- scp 专题
Tips:阿里云中需要使用内网ip,否则会一直阻塞Linux scp命令用于Linux之间复制文件和目录,具体如何使用这里好好介绍一下,从本地复制到远程.从远程复制到本地是两种使用方式.这里有具体举例 ...
- Delphi下IOC 模式的实现(反转模式,即Callback模式)
IOC英文为 Inversion of Control,即反转模式,这里有著名的好莱坞理论:你呆着别动,到时我会找你.Ioc模式是解决调用者和被调用者之间关系的模式,可以有效降低软件的耦合度,并适合团 ...
- [書訊]《.NET 依賴注入》 (2014-12-08 更新)
书 名:.NET 依赖注入 页 数:235 格 式:PDF.EPUB.MOBI难易度:中阶至进阶出版日期:2014 年 12 月 8 日ISBN:9789574320684 简介 本书内容是关于 .N ...
- 验证码生成器(在TImage.Canvas上写字,很好看)
生成验证码的方式有很多种,如下则是比较简单的实现,且运用了正余弦曲线来扭曲验证码字符. unit AuthenticodeGenerate; interface uses SysUtils, Wind ...
- WebFlux 集成 Thymeleaf 、 Mongodb 实践 - Spring Boot(六)
这是泥瓦匠的第105篇原创 文章工程: JDK 1.8 Maven 3.5.2 Spring Boot 2.1.3.RELEASE 工程名:springboot-webflux-5-thymeleaf ...