JDBC增删改查,PreparedStatement和Statement的区别
更多精彩文章欢迎关注公众号“Java之康庄大道”

此篇是在上一篇的基础上使用PreparedStatement对象来实现JDBC增删改查的
具体工具类JDBCTools和实现类和配置文件在上一篇Statement对象实现的时候有写。
上一篇地址http://www.cnblogs.com/yunqing/p/6136896.html
1、增加
/**
* 新建一个使用PreparedStatement的方法
* PreparedStatement与Statement的区别
* 1.不需要sql语句拼接,防止sql注入,更加安全
* 2.用占位符的方式写sql,便于后期维护,提高代码可读性,可以自动对类型进行转换
* 3.有预编译功能,可以大批量处理sql,(mysql不明显,Oracle很明显)
*
* 向数据库中添加一条数据
*
* PreparedStatement:用于执行sql语句的对象
* 用connection的PreparedStatement(sql)方法获取
* 用executeUpdate(sql)执行sql语句
* 注意:只能执行 insert,update,delect,不能执行select
*
*/
public void testPreparedStatement(){
Connection conn=null;
PreparedStatement preStatement=null;//创建PreparedStatement对象
try {
//1、准备Connection连接数据库
conn=JDBCTools.getConnection2();
//2、准备sql语句
//sql语句不再采用拼接方式,应用占位符问号的方式写sql语句。
String sql="insert into t_student(name,age,email) values(?,?,?)";
//3、准备prepareStatement
//对占位符设置值,占位符顺序从1开始,第一个参数是占位符的位置,第二个参数是占位符的值。
preStatement=conn.prepareStatement(sql);
//4、占位符设置值
preStatement.setString(1, "klkl");
preStatement.setInt(2, 12);
preStatement.setString(3, "kkk@jjj");
//5、执行sql
preStatement.executeUpdate(); } catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
//6、关闭数据库等
JDBCTools.guanbi(null, preStatement, conn);
}
}
2.修改
    public void testPreparedStatement(){
        Connection conn=null;
        PreparedStatement preStatement=null;//创建PreparedStatement对象
        try {
            conn=JDBCTools.getConnection2();
            //sql语句不再采用拼接方式,应用占位符问号的方式写sql语句。
            String sql="update t_student set name=?,age=?,email=? where id=?";
            //对占位符设置值,占位符顺序从1开始,第一个参数是占位符的位置,第二个参数是占位符的值。
            preStatement=conn.prepareStatement(sql);
            preStatement.setString(1, "asas");
            preStatement.setInt(2, 12);
            preStatement.setString(3, "asa@jjj");
            preStatement.setInt(4, 11);
            //执行sql
            preStatement.executeUpdate();
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }finally{
            JDBCTools.guanbi(null, preStatement, conn);
        }
    }
3、删除
    public void testPreparedStatement(){
        Connection conn=null;
        PreparedStatement preStatement=null;//创建PreparedStatement对象
        try {
            conn=JDBCTools.getConnection2();
            //sql语句不再采用拼接方式,应用占位符问号的方式写sql语句。
            String sql="delete from t_student where id=?";
            //对占位符设置值,占位符顺序从1开始,第一个参数是占位符的位置,第二个参数是占位符的值。
            preStatement=conn.prepareStatement(sql);
            preStatement.setInt(1, 12);
            //执行sql
            preStatement.executeUpdate();
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }finally{
            JDBCTools.guanbi(null, preStatement, conn);
        }
    }
4.查询
    public void testPreparedStatement(){
        Connection conn=null;
        PreparedStatement preStatement=null;//创建PreparedStatement对象
        ResultSet rs=null;
        try {
            //1.准备Connection连接数据库
            conn=JDBCTools.getConnection2();
            //2.准备sql字符串
            String sql="select * from t_student";
            //3.准备prepareStatement
            preStatement=conn.prepareStatement(sql);
            //4.执行sql得到ResultSet
            rs=preStatement.executeQuery();
            //5.处理ResultSet显示查询到的结果
            while(rs.next()){
                int id=rs.getInt(1);
                String name=rs.getString(2);
                int age=rs.getInt(3);
                String email=rs.getString(4);
                System.out.println(id);
                System.out.println(name);
                System.out.println(age);
                System.out.println(email);
            }
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }finally{
                        //6.关闭
            JDBCTools.guanbi(rs, preStatement, conn);
        }
    }                    
JDBC增删改查,PreparedStatement和Statement的区别的更多相关文章
- JDBC增删改查和查唯一的完整代码
		第一部分代码(实体类) package com.wf.entity; public class Hehe{ private int hehe_id; private String hehe_name; ... 
- JDBC增删改查
		/* db.properties的配置 driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/day14 username=root ... 
- jdbc 增删改查以及遇见的 数据库报错Can't get hostname for your address如何解决
		最近开始复习以前学过的JDBC今天肝了一晚上 来睡睡回笼觉,长话短说 我们现在开始. 我们先写一个获取数据库连接的jdbc封装类 以后可以用 如果不是maven环境的话在src文件下新建一个db.pr ... 
- jdbc增删改查进行封装
		jdbc封装 1 dao (代码分层) com.aaa.dao 存放dao相关的类型 例如 StudentDAOImpl 处理 数据库的链接 存取数据 com.aaa.servlet 存放servle ... 
- JAVA JDBC 增删改查简单例子
		1.数据库配置文件jdbc.properties driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/test username= ... 
- JDBC 增删改查代码 过滤查询语句
		package test; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; i ... 
- JDBC增删改查简单测试
		首先编写一个entity以便与数据库表文件相对应 lyTable.java public class LyTable implements java.io.Serializable { private ... 
- 商城项目整理(三)JDBC增删改查
		商品表的增加,修改,删除,订单表的增加,确认,用户表的查看,日志表的增加,查看 商品表建表语句: create table TEST.GOODS_TABLE ( gid NUMBER not null ... 
- 增删改查——PreparedStatement接口
		1.添加 package pers.Pre.add; import java.sql.Connection; import java.sql.DriverManager; import java.sq ... 
随机推荐
- 深入浅出 - Android系统移植与平台开发(三)- 编译并运行Android4.0模拟器
			作者:唐老师,华清远见嵌入式学院讲师. 1. 编译Android模拟器 在Ubuntu下,我们可以在源码里编译出自己的模拟器及SDK等编译工具,当然这个和在windows里下载的看起来没有什么区别 ... 
- Application Initialization Module for IIS 7.5
			http://www.iis.net/downloads/microsoft/application-initialization IIS7.5也有Warm Up功能 让ASP.NET第一次Reque ... 
- JS代码判断字符串中有多少汉字【转】
			$("form").submit(function () { 2 var content = editor.getContentTxt(); 3 var sum = 0; 4 re ... 
- MyBatis调用存储过程,含有返回结果集、return参数和output参数
			Ibatis是我们经常使用的O/R映射框架,mybats是ibatis被Google收购后重新命名的一个工程,当然也做了大量的升级.而调用存储过程也是一次额C/S架构模式下经常使用的手段,我们知道,i ... 
- Weka使用介绍
			(转) http://baidutech.blog.51cto.com/4114344/1033714/ 1.简介 数据挖掘.机器学习这些字眼,在一些人看来,是门槛很高的东西.诚然,如果做算法实现甚至 ... 
- java分享第四天(循环)
			While循环: while(Boolean_expression){ //statements } 在执行时,如果布尔表达式的结果为真,则循环中的动作将被执行,这将继续下去,只要该表达式的结果为真 ... 
- javascrit2.0完全参考手册(第二版)  第2章第1节 基本定义
			在这里,我们介绍一些将要使用的编程语言术语.表2-1提供了精确定义的概念. Table 2-1: 编程语言的基本术语 名字 定义 例子 Token令牌 最小的不可分割的词汇的语言单位.一个连续的字符序 ... 
- Objective-c的内存管理MRC与ARC
			Objective-c的内存管理MRC与ARC Objective-c中提供了两种内存管理机制MRC(MannulReference Counting)和ARC(Automatic Referen ... 
- Android基于XMPP的即时通讯2-文件传输
			本文是在上一篇博文Android基于XMPP的即时通讯1-基本对话的基础上,添加新的功能,文件传输 1.初始化文件传输管理类 public static FileTransferManager get ... 
- JS开发HTML5游戏《神奇的六边形》(二)
			近期出现一款魔性的消除类HTML5游戏<神奇的六边形>,今天我们一起来看看如何通过开源免费的青瓷引擎(www.zuoyouxi.com)来实现这款游戏. (点击图片可进入游戏体验) 因内容 ... 
