更多精彩文章欢迎关注公众号“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的区别的更多相关文章

  1. JDBC增删改查和查唯一的完整代码

    第一部分代码(实体类) package com.wf.entity; public class Hehe{ private int hehe_id; private String hehe_name; ...

  2. JDBC增删改查

    /* db.properties的配置 driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/day14 username=root ...

  3. jdbc 增删改查以及遇见的 数据库报错Can't get hostname for your address如何解决

    最近开始复习以前学过的JDBC今天肝了一晚上 来睡睡回笼觉,长话短说 我们现在开始. 我们先写一个获取数据库连接的jdbc封装类 以后可以用 如果不是maven环境的话在src文件下新建一个db.pr ...

  4. jdbc增删改查进行封装

    jdbc封装 1 dao (代码分层) com.aaa.dao 存放dao相关的类型 例如 StudentDAOImpl 处理 数据库的链接 存取数据 com.aaa.servlet 存放servle ...

  5. JAVA JDBC 增删改查简单例子

    1.数据库配置文件jdbc.properties driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/test username= ...

  6. JDBC 增删改查代码 过滤查询语句

    package test; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; i ...

  7. JDBC增删改查简单测试

    首先编写一个entity以便与数据库表文件相对应 lyTable.java public class LyTable implements java.io.Serializable { private ...

  8. 商城项目整理(三)JDBC增删改查

    商品表的增加,修改,删除,订单表的增加,确认,用户表的查看,日志表的增加,查看 商品表建表语句: create table TEST.GOODS_TABLE ( gid NUMBER not null ...

  9. 增删改查——PreparedStatement接口

    1.添加 package pers.Pre.add; import java.sql.Connection; import java.sql.DriverManager; import java.sq ...

随机推荐

  1. UVA 11076 - Add Again(组合)

    题目链接 脑子抽了,看错题了,神奇的看成没有0了.主要问题把n个数插入m个相同的数,把m个数给分成1-m堆,然后插到n+1空里. #include <cstdio> #include &l ...

  2. 【JAVA】LOG4J使用心得

    一.LOG4J基础: 1.日志定义        简单的Log4j使用只需要导入下面的包就可以了 // import log4j packages import org.apache.log4j.Lo ...

  3. 在Javascript中监听flash事件(转)

    在Javascript中监听flash事件,其实有两种做法: 1.在特定的环境下(例如专门制作的flash),大家约定一个全局函数,然后在flash的事件中用ExternalInterface.cal ...

  4. 一个不错的安卓下ssh客户端

    1.使用安卓作为ssh客户端连接ssh服务器 软件名:JuiceSSH 版本   :1.4.8 大小   :4.22 M 百度网盘地址:JuiceSSH_1.4.8.apk  或 JuiceSSH_1 ...

  5. 最详细eclipse汉化插件安装教程

    最详细eclipse汉化插件安装教程(转) 转自:http://blog.csdn.net/dai_zhenliang/article/details/8588576#t4 教程作者:戴振良 本文与& ...

  6. [LintCode] Valid Parentheses 验证括号

    Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the inpu ...

  7. Spark cache 和 persist

    1)RDD的cache()方法其实调用的就是persist方法,缓存策略均为MEMORY_ONLY:2)可以通过persist方法手工设定StorageLevel来满足工程需要的存储级别:3)cach ...

  8. 网络地址转换NAT原理及其作用

    1 概述 1.1 简介 NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”,它是一个IETF(Internet Engineering Task F ...

  9. CCLabelAtlas

    1.CCLabelAtlas 的具体用法 CCLabelAtlas *pLabel = new CCLabelAtlas;pLabel ->initWithString("0123&q ...

  10. 【iCore3 双核心板_FPGA】实验十八:基于单口RAM的ARM+FPGA数据存取实验

    实验指导书及代码包下载: http://pan.baidu.com/s/1i58Ssvz iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...