JDBC(4)—Preparedstatement
- 功能:使用PreparedStatement操作数据表,其功能与Statement一致,但为何要使用PreparedStatement呢。
- 一、原因:
- 1.使用sql语句进行操作数据表时,需要拼写sql语句,在拼写时容易出错,且不易排查,所以使用PreparedStatement
*操作数据表时,降低sql语句的拼写难度,简化拼写sql语句的步骤,提高代码的可维护性和可读性。 - 2.同时还可以有效的防SQL注入。
*SQL注入:利用某些系统没有对用户输入的数据进行充分的检查,而而在用户中注入非法的SQL语句段或命令从而利用系统的SQL引擎
*完成恶意操作。
例如:select from user where username = ‘a’ OR PASSWORD = ’ and password = ’ OR ‘1’ = ‘1’
*即使不知道账号密码,却可以登录成功。 - 3.PerparedStatement能够最大可能的提高性能
- 二、 介绍:PreparedStatement是Statement的子接口,可以传入带占位符的sql语句,也提供了补充占位符变量的方法。
- 三、操作:向数据表中插入一条Student记录
步骤:
- 1.sql = “insert into examStudent values (?,?,?,?,?,?)”;其中?表示:占位符
- 2.获取连接Connection
- 3.创建PreparedStatement ps = conn.preparedStatement(sql);
- 4.调用PreparedStatement的setXxx(int index,Object value);设置占位符的值
*其中索引值index从1开始。 - 5.执行sql语句,使用executeQuery()方法进行查询和executeUpdate()方法进行更新,执行时也不需要传入sql语句。
- 6.关闭连接
实例
//插入一条记录
@Test
public void test(){
//1.sql语句
String sql = "insert into customers(name,age,birth,address) values(?,?,?,?)";
Connection conn = null;
PreparedStatement ps = null;
try {
//2.连接
conn = TestTools.getConnection();
//3.获取PerparedStatement对象
ps = conn.prepareStatement(sql);
//4.PreparedStatement对象调用setXxx()方法,设置占位符的值
ps.setString(1, "张强");
ps.setString(2, "32");
ps.setDate(3, new Date(new java.util.Date().getTime()));
ps.setString(4, "河南省");
//5.执行sql语句
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}finally{
//6.关闭连接
TestTools.release(ps, conn);
}
}
JDBC(4)—Preparedstatement的更多相关文章
- JDBC(4)PreparedStatement
PreparedStatement: 是一个预编译对象 是Statement的子接口 允许数据库预编译SQL 执行SQL的时候,无需重新传入SQL语句,它们已经编译SQL语句 执行SQL语句 :exe ...
- Java基础(三十二)JDBC(2)连接数据库
一.连接数据库的过程 连接数据库的过程:加载数据库驱动程序,不过只需在第一次访问数据库时加载一次,然后在每次访问数据库时创建一个Connection实例,然后执行操作数据库的SQL语句,并返回执行结果 ...
- 跟着刚哥学习Spring框架--JDBC(六)
Spring的JDBC框架 Spring JDBC提供了一套JDBC抽象框架,用于简化JDBC开发. Spring主要提供JDBC模板方式.关系数据库对象化方式.SimpleJdbc方式.事务管理来简 ...
- JDBC 学习笔记(六)—— PreparedStatement
1. 引入 PreparedStatement PreparedStatement 通过 Connection.createPreparedStatement(String sql) 方法创建,主要用 ...
- 浅谈JDBC(一)
一.JDBC技术引言 1.什么是JDBC技术 提供了一套接口规范,利用java代码进行数据库操作. 2.JDBC技术的核心思想 对于程序员来说,代码访问数据库分为三个步骤:1.通过数据库的账号密码.2 ...
- JDBC(一)之细说JDBC
Properties info = new Properties();//要参考数据库文档 info.setProperty("user", "root"); ...
- JDBC(三)数据库连接池(DBCP、C3P0)
前言 这段时间状态有一点浮躁,希望自己静下心来.还有特别多的东西还没有学懂.需要学习的东西非常的多,加油! 一.JDBC复习 Java Data Base Connectivity,java数据库连接 ...
- JAVA基础-JDBC(一)
一.JDBC的简介 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,由与各种数据库都有着一套自己的规范,JAVA对其操 ...
- JDBC(四)
1 Apache DBUtils框架 1.1 DBUtils简介 commons-dbutils是Apache组织提供的一个开源JDBC工具类库,它是对JDBC的简单封装,学习成本非常低,并且使用db ...
随机推荐
- JavaScript中unicode编码与String互转(三种方法)
1.引言 JS本身就支持unicode转string功能,一共有三种方式和String单个字符转unicode编码. 2.方法 //unicode转String 1. eval("'&quo ...
- 解决win 10下git bash中文乱码
解决步骤如下: 1.在git bash窗体下右键,选择options 2.在打开的配置窗口左侧选择 Text,然后在右侧选择locale为zh_CN,Character set 为GBK,点击OK保 ...
- Android开发之深入理解Android Studio构建文件build.gradle配置
摘要: 每周一次,深入学习Android教程,TeachCourse今天带来的一篇关于Android Studio构建文件build.gradle的相关配置,重点学习几个方面的内容:1.applica ...
- 面向对象编程其实很简单——Python 面向对象(初级篇)
出处:http://www.cnblogs.com/wupeiqi/ 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函 ...
- Windows环境selenium+Python环境配置
1.安装Python 访问Python官方网站. 根据自己的操作系统32/64 位,选择相应的版本. 安装过程我就不详细描述了,动动手指头,Google一下,你就知道.我的安装目录为:C:\Pytho ...
- java多线程快速入门(十五)
使用violate关键字解决了变量的可见性问题(volatile让多线程刷新falg的值) package com.cppdy; class MyThread11 extends Thread { / ...
- LINUX UBUNTU 快捷键
一.打开关闭终端 ctrl + alt + t //打开一个新终端 shift + ctrl +n //在打开终端的情况下再打开一个新终端shift + ctrl + q //关闭一个新终端 二.文件 ...
- POJ 3181 Dollar Dayz 【完全背包】
题意: 给出两个数,n,m,问m以内的整数有多少种组成n的方法完全背包+大数划分 思路: dp[i][j] := 用i种价格配出金额j的方案数. 那么dp[i][0] = 1,使用任何价格配出金额0的 ...
- thinkphp自定义分页类
先来看下这个分页的样式,没写css,确实丑 什么时候写样式再来上传下css吧...... 就是多一个页面跳转功能 先把这个代码贴一下 <?php namespace Component; cla ...
- UOJ Round #1 题解
题解: 质量不错的一套题目啊..(题解也很不错啊) t1: 首先暴力显然有20分,把ai相同的缩在一起就有40分了 然后会发现由于原来的式子有个%很不方便处理 so计数题嘛 考虑一下容斥 最终步数=初 ...