JDBC连接数据库_SQL预编译

本文演示了如何使用Java JDBC的PreparedStatement预编译SQL语句,以防止SQL注入攻击。通过预编译,可以高效且安全地执行插入、更新和查询操作。示例代码展示了如何设置参数和执行预编译的SQL语句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

预编译SQL可以有效的防止SQL注入

package cn.tedu.jdbc.day02;


import java.sql.Connection;
import java.sql.PreparedStatement;
/*
 * 演示预编译的SQL执行计划
 * 
 */

public class Demo04 {
public static void main(String[] args) {
Connection conn = null;
try {
conn = DBUtils.getConnection();
//创建带参数的SQL语句
String sql = "insert into robin_demo_zqk "
+ "(id,name) values(?,?)";
//将sql发送到数据库,创建执行计划
//返回值ps就代表执行计划

PreparedStatement ps = conn.prepareStatement(sql);
//替换执行计划中的参数,2个参数
//按照序号发送参数

ps.setInt(1, 9);
ps.setString(2, "CAX");
//执行执行计划,返回值表示改变的行数
int n = ps.executeUpdate();
System.out.println(n);
//再次插入一条数据
ps.setInt(1, 100);
ps.setString(2, "wang");
n = ps.executeUpdate();
System.out.println(n);
} catch (Exception e) {
e.printStackTrace();
}finally {
DBUtils.close(conn);
}
}

}

——————————————————————————————————————————

package cn.tedu.jdbc.day02;


import java.sql.Connection;
import java.sql.PreparedStatement;
/*
 * 使用执行计划执行更新语句
 */

public class Demo05 {
public static void main(String[] args) {
Connection conn = null;
try {
conn = DBUtils.getConnection();
String sql = "update robin_demo_zqk "
+ "set name = ? "
+ "where id = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, "zhu");
ps.setInt(2, 1);
ps.setString(1, "zhuqian");
ps.setInt(2, 2);
int n = ps.executeUpdate();
//修改成功修改的行数,修改失败返回0
System.out.println(n);
} catch (Exception e) {
e.printStackTrace();
}finally {
DBUtils.close(conn);
}
}

}

——————————————————————————————————————————

package cn.tedu.jdbc.day02;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;


/*
 * 使用执行计划执行查询语句
 */

public class Demo06 {
public static void main(String[] args) {
Connection conn = null;
try {
conn = DBUtils.getConnection();
String sql = "select id,name "
+ "from robin_demo_zqk "
+ "where name like ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, "%C%");
ResultSet rs = ps.executeQuery();
while(rs.next()) {
//getInt(列的序列号),利用序号获取值
int id = rs.getInt(1);
String name = rs.getString(2);
System.out.println(id+":"+name);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
DBUtils.close(conn);
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值