java预处理_Java连载138-数据库删除数据以及编译预处理

本文详细介绍了Java中删除数据库数据的三种方法,包括Statement、PreparedStatement和CallableStatement的使用,并通过实例演示了如何执行DELETE操作。同时,讨论了PreparedStatement作为编译预处理的特性,解释了其占位符机制和参数设置过程。
摘要由CSDN通过智能技术生成

一、删除数据

DELETE语句如下

DELETE FROM WHERE

方法:(1)利用Statement实例执行静态DELETE语句完成;(2)利用PreparedStatement实例通过执行动态DELETE语句完成;(3)利用CallableStatement实例通过执行存储过程完成。

第一种方式:

String sql = "delete from tb_record where date

statement.executeUpdate(sql);

第二种方式:

String sql = "delete from tb_record where date";

PreparedStatement prpdStmt = connection.preparedStatement(sql);

prpdStmt.setString(1,'2017-2-14');//为日期型参数赋值

prpdStmt.executeUpdate();

注意点:当前未使用java.sql.Date,所以方法setString(int parameterIndex,String x),如果使用了java.sql.Date,那么使用方法setDate(int parameterIndex,java.sql.Date date)

第三种方式:

String sql = "{call pro_record_delete_by_date(?)}";

CallableStatement cablStmt = conneciton.prepareCall(call);

cablStmt.setString(1,"2017-2-14");

cablStmt.executeUpdate();

下面我们通过一个实例来演示代码

package com.bjpowernode.java_learning;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.sql.Statement;

public class D138_1_deleteSQL {

private static final String URL = "jdbc:Access:///e:/xsgl.mdb";

static {

try {

Class.forName("com.hxtt.sql.access.AccessDriver");

}catch(ClassNotFoundException e) {

e.printStackTrace();

}

}

public static void main(String args) {

try {

Connection conn = DriverManager.getConnection(URL);

Statement statement = conn.createStatement();

String sql = "delete from tb_record where Salary<1000";

statement.executeUpdate(sql);

statement.close();

conn.close();

}catch(SQLException e) {

e.printStackTrace();

}

}

}

下面通过PreparedStatement实例一次执行多条DELETE语句

package com.bjpowernode.java_learning;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.SQLException;

import java.sql.Statement;

public class D138_2_PreparedStatementDelete {

private static final String URL = "jdbc:Access:///e:/xsgl.mdb";

static {

try {

Class.forName("com.hxtt.sql.access.AccessDriver");

}catch(ClassNotFoundException e) {

e.printStackTrace();

}

}

public static void main(String args) {

try {

Connection conn = DriverManager.getConnection(URL);

String[] names = {"部门经理","会计"};

String sql = "delete from tb_record where duty=?";

PreparedStatement prpdStmt = conn.prepareStatement(sql);

prpdStmt.clearBatch();

for(int i=0;i

prpdStmt.setString(1,names[i]);

prpdStmt.addBatch();

}

prpdStmt.executeBatch();

prpdStmt.close();

conn.close();

}catch(SQLException e) {

e.printStackTrace();

}

}

}

二、编译预处理

PreparedStatement始于编译预处理有关的类,是Statement的一个子类,它与Statement类的一个重要区别是:用Statement定义的语句是一个功能明确而具体的语句,而用PraparedStatement类定义的SQL语句 中则包含一个或者多个?占位符,他们对应多个IN参数,带占位符的SQL语句可以被编译,而在后续执行过程中,这些占位符需要使用set方法设置为具体的IN参数值,再将这些语句发送到数据库获得执行。

给出若干编译预处理语句实例说明PreparedStatement的用法

(1)创建对象

PraparedStatement pstmt = conn.prapareStatement("update tablel set=? where y=?");

对象pstmt中包含了语句"update tablel set x=? where y=?",该语句被发送到DBMS进行编译预处理,为执行做准备

(2)为每个IN参数设定参数值,即每个占位符?对应一个参数值。设定参数值是通过调用setXxx方法实现的,其中Xxx是与参数相对应的类型,加入上面例子中的参数类型为long,则用下面的代码为参数设定值。

pstmt.setLong(1,123456789);

pstmt.setLong(2,987654321);

这里的1,2是与占位符从左到有的次序相对应的序号,他们不是从0开始计数。

(3)执行语句

Pstmt.executeUpdate();

三、源码:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值