一.创建所需对象,并进行初始化

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数据库操作的更多相关文章

  1. JDBC连接mysql数据库操作详解

    1.什么是JDBC JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Jav ...

  2. jsp JDBC连接MySQL数据库操作标准流程参考

    1. 此案例以帐号密码后台更新维护为例子,对数据库调取数据更新流程进行演示: 代码示例: <%@page import="java.io.IOException"%> ...

  3. 使用JDBC连接MySQL数据库操作增删改查

    目录 1.首先这个Myeclipse的包名以及一些实现的类(这样子写是我的习惯) 2.接下来我们创建数据库(MySQL) 3.在数据库里面添加数据 4.首先是BaseDao,这个是重中之重,注意那个数 ...

  4. java jdbc 连接mysql数据库 实现增删改查

    好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...

  5. Crystal Reports 2008(水晶报表) JDBC连接mysql数据库

    在本blog中,主要介绍的是Crystal Reports 2008使用JDBC连接mysql数据库. 在连接之间,首先要确认你电脑上面都安装了mysql数据库. 其次,就是jdbc连接数据时候所使用 ...

  6. JDBC连接MySQL数据库及演示样例

    JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识         JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...

  7. JDBC连接MySQL数据库及示例

      JDBC是Sun公司制定的一个可以用Java语言连接数据库的技术. 一.JDBC基础知识         JDBC(Java Data Base Connectivity,java数据库连接)是一 ...

  8. Java通过JDBC 进行MySQL数据库操作

    转自: http://blog.csdn.net/tobetheender/article/details/52772157 Java通过JDBC 进行MySQL数据库操作 原创 2016年10月10 ...

  9. JDBC 连接mysql数据库

    JDBC 连接mysql数据库jar包:mysql-connector-java-5.1.47.jar 下载:mysql-connector-java-5.1.47.jar jdbc:java dat ...

随机推荐

  1. IDEA 自动化配置

    # IDEA maven web项目:http://www.cnblogs.com/Sinte-Beuve/p/5730553.html # IDEA 数据库自动化 ## 功能 ① SQL 代码自动感 ...

  2. 破处在window7桌面版本下golang连接数上限

    注册表 HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 修改或者添加 MaxUserPort 60000 TcpTimedWaitDel ...

  3. InnoSetup提升系统管理员权限(通过破解方式修改?)

    PrivilegesRequired=admin 1 2 3 4 5   找到```INNO```安装目录下的```SetupLdr.e32```文件(其实就是一个exe程序),将程序中的```Man ...

  4. VS2012 调试Web项目 遭遇 HTTP 错误 500.23 - Internal Server Error

    原文:VS2012 调试Web项目 遭遇 HTTP 错误 500.23 - Internal Server Error 在使用vs2012 调试Web站点时 报错 500.23,详细如图 此错误是因为 ...

  5. C#图片保存与读取,以及图片另存

    照片的保存与读取 /// <summary> /// 图片转二进制 /// </summary> /// <param name="imgPhoto" ...

  6. VS点击调试卡住的问题解决方案(转载)

    本来今天好好的,不知道弄到了什么,调试不了了,一点击立马卡住,就一直在那转,就在网上找了找解决方案,下面给大家列出来几种可能会卡住的问题已经解决方案 1:加载调试符号引起的卡住 解决方案: 在“选项” ...

  7. SimpleMembershipProvider 的 MySql 实现

    认 证我一直用的是微软的 Membership 体系,看 MySql 也实现了对应的 Provider,在新建立了一个 MVC4 项目后,把 Provider 一改就直接启动,然后就出错了.异常是“T ...

  8. QSettings 用法总结(很好用)

    原文  http://hi.baidu.com/fightiger/blog/item/ba69a434f36e18add1a2d350.html 用户对应用程序经常有这样的要求:要求它能记住它的se ...

  9. QT4与QT3的不同

    1)QT4中提供了大量新控件,虽然它也保持了旧的控件,并命名为Qt3XXX,但是这样的控件没准在今后的哪个QT版本中就不被支持了,所以还是换吧,控件替换的工作是巨大的,这些新的控件使用了新的方法.属性 ...

  10. Ruby元编程:单元测试框架如何找到测试用例

    前几天看了Google Testing Blog上的一篇文章讲到C++因为没有反射机制,所以如何注册测试用例就成了一件需要各显神通的事情.从我的经验来看,无论是Google的GTest还是微软的LTM ...