JdbcBaseReview系列之JdbcPrepare(一)--预处理
2017-06-03 10:51
302 查看
之前在JdbcBase这个系列里我们学习到了Statement这个类来获得连接对象 但是这个类我们在前言里面说到有一些缺点 现在我们就要学习一下比这类好用的另一个相似的类PreparedStatement
声明:—— Stu类依旧是我在终端创建的表和相对应的实体类 jdbc是之前创建的数据库 之后的系列也会用到就不一一讲了 这里先声明一下 以免小伙伴不知道我的stu 和jdbc是怎么回事—–
首先 创建一个JdbcPrepare类
声明:—— Stu类依旧是我在终端创建的表和相对应的实体类 jdbc是之前创建的数据库 之后的系列也会用到就不一一讲了 这里先声明一下 以免小伙伴不知道我的stu 和jdbc是怎么回事—–
首先 创建一个JdbcPrepare类
//PreparedStatement: //1, 可以防止SQL注入 //2, 采取的是预编译的操作,将sql语句先交给数据库编译, // 只需要等待执行就可以了,当多个重复语句被执行时效率会比Statement高,速度快 @Test public void t1() throws ClassNotFoundException, SQLException { Class.forName("com.mysql.jdbc.Driver"); Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc", "root", "111111"); //之前的写法 // Statement statement = connection.createStatement(); //现在的写法 //?就是一个占位符 //占位符 :就是先占住一个固定的位置,等着你再往里面添加内容的符号 PreparedStatement pstmt = connection.prepareStatement("INSERT INTO stu VALUES (NULL , ?, ?);"); //第一个参数是?的位置 //与values后面括号中是否有null,是否有具体的值无关 // 在sql语句中有几个问号, // 那么就需要向sql中传递几个参数 // 第几个问号, // 那么下面方法中的第一个参数就填几 pstmt.setString(1, "张三"); pstmt.setInt(2, 40); pstmt.executeUpdate(); } @Test public void t2Update() throws SQLException { Connection connection = JdbcUtil.getConnection(); String update = "update stu set name=? where id=?;"; //获得预处理对象 PreparedStatement pstm = connection.prepareStatement(update); //将参数传到sql语句中 pstm.setString(1, "大华"); //查找id为7的数据,将该条数据的name字段改为大华 pstm.setInt(2, 7); //执行语句 pstm.executeUpdate(); } @Test public void t3Query() throws SQLException { Connection connection = JdbcUtil.getConnection(); PreparedStatement pstm = connection.prepareStatement("SELECT *FROM stu WHERE name=?;"); pstm.setString(1, "大华"); ResultSet resultSet = pstm.executeQuery(); while (resultSet.next()) { System.out.println("找到了:id 为" + resultSet.getInt(1) + "\t" + " name: " + resultSet.getString(2)); // System.out.println(resultSet.getString("name") + resultSet.getInt("age")); } } @Test public void t4Delete() throws SQLException { Connection connection = JdbcUtil.getConnection(); PreparedStatement pstm = connection.prepareStatement("DELETE FROM stu WHERE name=?;"); pstm.setString(1, "张三"); int i = pstm.executeUpdate(); System.out.println("删除了名字为张三的值: " + i); } }
相关文章推荐
- JdbcBaseReview系列之JdbcPrepare的前言
- JdbcBaseReview 系列之JdbcDBUtils(四)-----jbdc的jar包
- JDBC小总结 ===前四个系列说的是JDBCBase的全部内容
- JdbcBaseRevpiew系列之JdbcBatch(二)--批处理
- Redis入门系列(二)NoSql的数据库的CAP原理+Base
- IOS开发系列--C语言之预处理
- Java系列:Add Microsoft SQL JDBC driver to Maven
- 鸡啄米:C++编程入门系列之二十四(C++程序设计必知:多文件结构和编译预处理命令)
- jdbc连接操作mysql,直接操作和预处理方式
- java.lang.AbstractMethodError: com.microsoft.jdbc.base.BaseDatabaseMetaData.supportsGetGeneratedKeys()
- JDBC系列教程(六)---可调用语句
- [mssql-jdbc故障]java.lang.AbstractMethodError: com.microsoft.jdbc.base.BaseDatabaseMetaData.supportsGe
- Oracle在JDBC中预处理模糊查询语法
- Office系列运行错误:The setup controller has encountered a problem during install.Please review the log f..
- mysql之预处理语句prepare、execute、deallocate
- JDBC中Statement和PrepareStatement的区别及特性
- iOS开发技巧系列---打造强大的BaseModel
- java.lang.AbstractMethodError: com.microsoft.jdbc.base.BaseDatabaseMetaData.supportsGetGeneratedKeys
- JDBC系列教程(一)---连接
- Jdbc预处理