使用Statment安全性差,存在SQL注入隐患

public static void main(String[] args) {

Connection conn=null;

Statement stmt=null;

ResultSet rs=null;

//根据控制台提示输入用户名和密码

Scanner input=new Scanner(System.in);

System.out.println("\t宠物主人登陆");

System.out.println("请输入用户名:");

String name=input.next();

System.out.println("请输入密码:");

String password=input.next();

try {

//加载数据库驱动

Class.forName("com.mysql.jdbc.Driver");

conn=DriverManager.getConnection("jdbc:mysql:///day01","root","root");

stmt=conn.createStatement();

String sql="SELECT * FROM master WHERE name='"+name+"' AND password='"+password+"'";

System.out.println(sql);

rs=stmt.executeQuery(sql);

if(rs.next()){

System.out.println("登陆成功!");

}else{

System.out.println("登陆失败");

}

} catch (Exception e) {

e.printStackTrace();

}finally{

try {

if(null!=rs){

rs.close();

}if(null!=stmt){

stmt.close();

}if(null!=conn){

conn.close();

}

} catch (Exception e2) {

}

使用PreparedStatement对象更新宠物信息

public static  void main(String[] args) {

Connection conn=null;

PreparedStatement pstmt=null;

String sql="UPDATE dog SET health=?,love=? WHERE id=?";

try {

//加载数据库驱动

Class.forName("com.mysql.jdbc.Driver");

conn=DriverManager.getConnection("jdbc:mysql:///day01","root","root");

//conn.createStatement();

pstmt=conn.prepareStatement(sql);

pstmt.setInt(1, 1234);

pstmt.setInt(2, 78);

pstmt.setInt(3, 2);

pstmt.executeUpdate();

} catch (Exception e) {

e.printStackTrace();

}finally{

try {

if(null!=pstmt){

pstmt.close();

}if(null!=conn){

conn.close();

}

} catch (Exception e2) {

}

}

}

PreparedStatement和Statment的更多相关文章

  1. PreparedStatement 和 Statment区别

    PreparedStatement vs Statment 1)语法不同:PreparedStatement可以使用预编译的sql,而Statment只能使用静态的sql 2)效率不同: Prepar ...

  2. Java的JDBC操作

    Java的JDBC操作 [TOC] 1.JDBC入门 1.1.什么是JDBC JDBC从物理结构上来说就是java语言访问数据库的一套接口集合,本质上是java语言根数据库之间的协议.JDBC提供一组 ...

  3. JDBC(上)

    1. 课程回顾 mysql加强 1)数据约束(表约束) 默认值: default 默认值 非空:   not null 唯一: unique 主键: primary key (非空+唯一) 自增长: ...

  4. Java jdbc入门

    1 jdbc入门 1.1 之前操作数据 1)通过mysql的客户端工具,登录数据库服务器  (mysql -u root -p 密码) 2)编写sql语句 3)发送sql语句到数据库服务器执行 1.2 ...

  5. jdbc之防sql注入攻击

    1.SQL注入攻击:    由于dao中执行的SQL语句是拼接出来的,其中有一部分内容是由用户从客户端传入,所以当用户传入的数据中包含sql关键字时,就有可能通过这些关键字改变sql语句的语义,从而执 ...

  6. 学习日常笔记<day17>jdbc基础

    1.jdbc入门 1.1.jdbc定义 使用java代码发送sql语句的技术就是jdbc技术 1.2.使用jdbc发送sql前提 需要登录数据库服务器(数据库的IP地址,端口,数据库用户名,密码) / ...

  7. 一个基础又很重要的知识点:JDBC原理(基本案例和面试知识点)

    JDBC全称又叫做Java DataBase Connectivity,就是Java数据库连接,说白了就是用Java语言来操作数据库.这篇文章主要是对JDBC的原理进行讲解.不会专注于其使用.主要是理 ...

  8. 聊聊SQL注入

    SQL注入问题 概述: 首先SQL注入是一个非常危险的操作,很可能被一些不怀好意的人钻空导致我们系统出现异常等状况,比如数据库遭到破坏或被入侵. 原因:使用JDBC的Statement语句添加SQL语 ...

  9. Java Statement和PreparedStatement性能测试(转)

    本文转载自http://blog.csdn.net/liubo5005/article/details/7239935 先上代码: import java.sql.Connection; import ...

随机推荐

  1. linux杂谈

    1. 目录的stick位 一般情况下,如果一个用户对一个目录有写权限,那么他就可以删除该目录下的文件,即使这些文件不是他的.为了防止这种情况,我们需要为目录设置stick位: chmod a+t yo ...

  2. Python 数据排序和列表迭代和列表推导应用

    1.In-place sorting 原地排序 data=[6,4,5,2,3,1] print ('before sort', data) data.sort() print ('after sor ...

  3. 从1970年1月1日00:00:00 GMT以来此时间对象表示的毫秒数转化为Datetime

    1970年1月1日(00:00:00 GMT)Unix 时间戳(Unix Timestamp)对时间转换 将Long类型转换为DateTime类型 /// <summary> /// 将L ...

  4. TMS320C54x系列DSP的CPU与外设——第1章 绪论

    第1章 绪论 TMS320C54x DSP是TMS320系列DSP产品中的定点数字信号处理器.C54x DSP满足了实时嵌入式应用的一些要求,例如通信方面的应用. C54x的中央处理单元(CPU)具有 ...

  5. (C#) Action, Func, Predicate 等泛型委托

    (转载网络文章) (1). delegate delegate我们常用到的一种声明   Delegate至少0个参数,至多32个参数,可以无返回值,也可以指定返回值类型.   例:public del ...

  6. aptana studio 3 自动换行(无需插件)

    菜单-Window-Preferences-Aptana Studio-Editors,勾选“Enable word wrap”,然后重启编辑器.

  7. PLSQL_低效SQL的识别和查询汇总(案例)

    2014-12-18 Created By BaoXinjian

  8. Hololens开发笔记之使用Unity开发一个简单的应用

    一.Hololens概述 Hololens有以下特性 1.空间映射借助微软特殊定制的全息处理单元(HPU),HoloLens 实现了对周边环境的快速扫描和空间匹配.这保证了 HoloLens能够准确地 ...

  9. OOP三个基本特征:封装、继承、多态

    面向对象的三个基本特征是:封装.继承.多态. 封装 封装最好理解了.封装是面向对象的特征之一,是对象和类概念的主要特性. 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类 ...

  10. bootstrap小例子等

    一个简单的表单样式: <div class="row"> <form action="#" class="form-horizont ...