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 ...
随机推荐
- AppStore上传条例
1. 条款和条件1.1 为App Store开发程序,开发者必须遵守 Program License Agreement (PLA).人机交互指南(HIG)以及开发者和苹果签订的任何协议和合同.以下规 ...
- vue.js中v-for的使用及索引获取
1.v-for 直接上代码. 示例一: <!DOCTYPE html> <html> <head> <meta charset="utf-8&quo ...
- Windows Maven package时报错问题的解决
google了一把,看到别人的说法是Stack size 不够大. Stack Space用来做方法的递归调用时压入Stack Frame.所以当递归调用太深的时候,就有可能耗尽Stack Space ...
- 除法 Division
除法 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=84562#problem/A 题意: 输入正整数n按从小到大的顺序输出所有 ...
- 给自定义cell赋值代码
// // ViewController.m // 11 - 投资管理 - 李洪强 // // Created by vic fan on 16/4/8. // Copyright © 201 ...
- java ReentrantLock可重入锁功能
1.可重入锁是可以中断的,如果发生了死锁,可以中断程序 //如下程序出现死锁,不去kill jvm无法解决死锁 public class Uninterruptible { public static ...
- android-时间选择器和日期选择器
一.实现动态输入日期和时间 * DataPicker(日历选择器) * DataPicker对象以init()方法指定DatePicker初始的年月日及OnDateChangedListener事件 ...
- LeetCode(43. Multiply Strings)
题目: Given two numbers represented as strings, return multiplication of the numbers as a string. Note ...
- apache中.htaccess不起作用
找到apache的配置文件httpd.conf文件,找到: 代码如下 复制代码 #LoadModule rewrite_module modules/mod_rewrite.so 去掉前面的#号. ...
- html中标签的含义及作用
链接:http://www.w3chtml.com/html/tag/div.html