JDBC | 3
来源:互联网 发布:网络人身攻击怎么办 编辑:程序博客网 时间:2024/06/11 21:14
Statement 的执行模式采用拼凑字符串的形式,不适合处理一些敏感性字符。
PreparedStatement 执行的是一个完整的具备特殊占位标记的 SQL 语句,并且可以动态地设置所需要的数据。
使用 PreparedStatement 的优点
代码拥有更好的可读性和可维护性。
尽可能提升性能。用Statement对象时,每次执行一个 SQL 命令,都会对它进行解析编译。而使用 PreparedStatement 时,数据库会对 SQL 语句进行预编译,下次执行相同的 SQL 语句时,数据库端不会再进行预编译了,而直接用数据库的缓冲区,提高数据访问的效率
极大地提高了安全性。传递给 PreparedStatement 对象的参数可以被强制进行类型转换,使开发人员可以确保在插入或查询数据时与底层的数据库格式匹配。从安全性上来看, PreparedStatement 是通过 ? 来传递参数的,避免了拼 sql 而出现 sql 注入的问题,所以安全性较好。
import java.sql.*;public class Main { private static final String DBDRIVER = "com.mysql.jdbc.Driver"; private static final String DBURL = "jdbc:mysql://localhost:3306/TEACH?characterEncoding=utf-8&useSSL=true"; private static final String DBUSER = "root"; private static final String DBPASSWORD = "newpass"; public static void main(String[] args) throws Exception{ // 加载数据库驱动程序 Class.forName(DBDRIVER); // 连接数据库 Connection connection = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD); System.out.println(connection); String sql = "INSERT into ELECTIVE VALUES (?,?,?)"; PreparedStatement preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1,"100"); preparedStatement.setString(2,"D"); preparedStatement.setString(3,"99"); preparedStatement.executeUpdate(); String sql2 = "SELECT SNO,CNO,SCORE FROM ELECTIVE"; PreparedStatement preparedStatement1 = connection.prepareStatement(sql2); ResultSet resultSet = preparedStatement1.executeQuery(); while (resultSet.next()){ String SNO = resultSet.getString("SNO"); String CNO = resultSet.getString("CNO"); String SCORE = resultSet.getString("SCORE"); System.out.println(SNO + " " + CNO + " " + SCORE); } // 关闭连接 connection.close(); }}
阅读全文
0 0
- JDBC 3
- JDBC(3)
- JDBC | 3
- jdbc学习笔记(3)
- jdbc简单封装3
- jdbc笔记3
- JDBC性能技巧(3)
- 使用Spring Jdbc (3)
- JDBC复习3 20110914
- jdbc开发(3)
- 数据库相关(3) JDBC
- Java JDBC(3)
- 24、jdbc入门3
- JDBC 笔记(3)
- JDBC连接3-JDBCSearch
- JDBC程序3:事务
- jdbc学习笔记3
- Spring-JDBC-3
- MNISTtwo
- TCP协议相关面试总结
- 实习笔记
- 安卓--XListView--pizifusheng
- `Hacker, pack your bags!
- JDBC | 3
- 测试js程序运行时间
- TCP/IP协议层级个人笔记
- 【2017.12.02】C组比赛总结
- LeetCode-27. Remove Element
- 使用线程来实现一个时间倒计时
- 读书笔记_MySQL必知必会
- 《kubernetes-1.8.0》15-addon-vSphere Cloud Provider
- LintCode-第一题:A+B problem (不用“+”等运算符)(位运算实现加法)