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

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注入

转载于:https://www.cnblogs.com/hckblogs/p/7701184.html

JDBC连接mysql数据库操作相关推荐

  1. jdbc mysql增删改查_使用JDBC连接MySQL数据库操作增删改查

    更多精彩内容欢迎访问我的个人博客皮皮家园:http://www.zhsh666.xyz或者http

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

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

  3. jaba窗体连接mysql增删改查_知识实现——Java使用jdbc连接MySql数据库,实现增删改查...

    Java使用jdbc连接MySql数据库,实现增删改查 首先,导入MySql连接数据库的jar包,我用的是 mysql连接jar包 DB类,用于获得数据库连接 import java.sql.Driv ...

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

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

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

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

  6. java mysql教程基于_java基于jdbc连接mysql数据库功能实例详解

    本文实例讲述了java基于jdbc连接mysql数据库的方法.分享给大家供大家参考,具体如下: 一.JDBC简介 Java 数据库连接,(Java Database Connectivity,简称JD ...

  7. mysql分页查询出租房屋信息_分页查询信息(使用jdbc连接mysql数据库实现分页查询任务)...

    分页查询信息 使用jdbc连接mysql数据库实现分页查询任务 通过mysql数据库提供的分页机制,实现商品信息的分页查询功能,将查询到的信息显示到jsp页面上. 本项目时一个简单的运用eclipse ...

  8. java JDBC连接MySQL数据库调用存储过程进行查询

    java JDBC连接MySQL数据库调用存储过程进行查询 主程序代码 工具类 文件信息 存储过程 结果截图 主程序代码 package Mysql;import util.JDBCUtils; im ...

  9. JDBC连接MySQL数据库,访问数据库信息完成登录功能——保姆级详细教程(附所有java和jsp源代码)

    目录 前言 JDBC的介绍 通过JDBC连接MySQL数据库 导入mysql驱动 连接数据库 连接数据库 判断连接是否成功 使用数据库实现登录 获取前端表单的用户输入 判断用户名和密码为空 查询表 判 ...

最新文章

  1. 全方位复盘GNN,12位大神寄望2021年大爆发
  2. 【django之admin,单例模式】
  3. 毛笔日常保养注意事项
  4. GIS中常用的高程系
  5. st7735屏幕移植-高清图片显示
  6. android9 apk自动安装功能,Android自动安装APK
  7. Child returned status 1问题解决
  8. 极客时间马哥教育-云原生训练营第一周作业-20221016
  9. VOT 数据集下载toolkit
  10. 【前端】Qt简明教程
  11. STM32CubeIDE配置使用
  12. EARTH DATA网站注册走过的坑
  13. 龙芯平台OsTools-Gmac更新
  14. 【UI学习】Android github开源项目,酷炫自定义控件(View)汇总
  15. Android消息机制(Handler机制) - 线程的等待和唤醒
  16. 2018年终个人总结
  17. How to Write a Spelling Corrector
  18. XDOJ例题及答案第八更 密码编译 密码强度 排序2 排序3 排序算法比较器 判断奇偶性 平均数 气温波动 亲和数 求交错序列前N项和 求平均值求奇数的和
  19. 自制Kindle电子书转化的实用技巧
  20. varnish 简单应用

热门文章

  1. SAP C4C Opportunity和SAP ERP Sales流程的集成
  2. linux内核5.4,Linux Kernel 5.4 RC8 发布,一切都很正常
  3. 如果要用thinkphp框架_php需要改哪些配置,thinkPHP框架动态配置用法实例分析
  4. html实体转化字符串 php_PHP htmlentities() 函数
  5. 求根节点到叶节点数字之和Python解法
  6. Python的注释方式
  7. android 权限管理框架,Android 运行时权限管理最佳实践
  8. Linux非系统盘挂载,[转载] Linux mount 挂载分区、硬盘
  9. oracle删除unique key,概述Oracle Unique约束
  10. python 列表解析式_python列表解析式,字典解析式,集合解析式和生成器