1、山东商业职业技术学院Java程序设计课程开发组Statement和PreparedStatement的区别2 2 学习目标知识目标掌握PreparedStatement的使用掌握语句对象与预处理语句对象的区别能力目标能够使用PreparedStatement对象实现数据维护操作3 3 使用Statement维护SQL Server数据库表中的数据,对数据表进行增删改查操作使用Statement对象根据运行时输入的数据对数据表进行增删改查操作使用Statement执行SQL语句4 4 使用Statement对象添加数据3-1try Class.forName(com.microsoft.sqls
2、erver.jdbc.SQLServerDriver); catch (ClassNotFoundException e) System.out.println(无法找到驱动类);Connection con = null; Statement stmt = null; ResultSet rs = null; 使用Statement对象把运行时输入的员工信息添加到数据表emp5 5 使用Statement对象添加数据3-2try con = DriverManager.getConnection(“”, “, “); stmt = con.createStatement(); System.
3、out.println(“请输入姓名:“); String eName = input.next(); System.out.println(“请输入性别:“); String eSex = input.next(); String sql = “insert into emp(eName, eSex) value(” + eName + ”, ” + eSex + ”)”; int rows = stmt.executeUpdate(sql);6 6 使用Statement对象添加数据3-3catch (SQLException e) e.printStackTrace(); finally
4、 try if(stmt != null) stmt.close(); if(con != null & !con.isClosed() con.close(); catch (SQLException e) e.printStackTrace(); 7 7 练习 使用Statement对象更新数据表emp中的员工信息,对应的更新信息需要运行时输入 使用Statement对象删除数据表emp中符合条件的员工信息,对应的条件取值需要运行时输入 使用Statement对象在emp表中查询符合条件的员工信息,对应的条件取值需要运行时输入8 8 PreparedStatement PreparedSt
5、atement接口继承Statement接口 实现将SQL语句预先处理,减轻数据库的负担,提高访问数据库的速度 简化SQL语句的书写 PreparedStatement接口接口 (预编译的(预编译的 SQL 语句)语句) Statement 接口接口 提高了代码的可读提高了代码的可读性和可维护性性和可维护性 提高了提高了SQL语句执语句执行的性能行的性能 提高了安全性提高了安全性9 9 JDBC工作步骤第三步try String sql = “SQL语句”; PreparedStatementPreparedStatement pstmtpstmt = = con.prepareStateme
6、ntcon.prepareStatement( (sqlsql); ); catch (SQLException e) e.printStackTrace(); 第三步:创建PreparedStatement对象以下为创建添加员工语句对象示例:try Connection con = DriverManager.getConnection(); String sql = “insert into emp(eName, eSex) values(?, ?)”; PreparedStatement pstmt = con.prepareStatement(sql); catch (SQLExcep
7、tion e) e.printStackTrace(); 创建语句对象前,要先确定预处理的创建语句对象前,要先确定预处理的SQL语句语句1010 JDBC工作步骤第四步try pstmt.setXXXpstmt.setXXX( (第第n n个问号个问号, , 对应问号位置上的赋值对应问号位置上的赋值); ); int row = pstmt.executeUpdatepstmt.executeUpdate() (); catch (SQLException e) e.printStackTrace(); 第四步:执行SQL的增删改语句以下为执行添加员工信息示例:try System.out.p
8、rintln(“请输入姓名:“); String eName = input.next(); System.out.println(“请输入性别:“); String eSex = input.next(); pstmt.setString(1, eName); pstmt.setString(2, eSex); int row = pstmt.executeUpdate(); catch (SQLException e) e.printStackTrace(); 1111 使用PreparedStatement对象添加数据3-1try Class.forName(com.microsoft.
9、sqlserver.jdbc.SQLServerDriver); catch (ClassNotFoundException e) System.out.println(无法找到驱动类);Connection con = null; PreparedStatement pstmt = null; ResultSet rs = null; 使用PreparedStatement对象把运行时输入的员工信息添加到数据表emp1212 使用PreparedStatement对象添加数据3-2try con = DriverManager.getConnection(“”, “, “); String
10、sql = “insert into emp(eName, eSex) values(?,?)”; pstmt = con.prepareStatement(sql); System.out.println(“请输入姓名:“); String eName = input.next(); System.out.println(“请输入性别:“); String eSex = input.next(); pstmt.setString(1, eName); pstmt.setString(2, eSex); int row = pstmt.executeUpdate();1313 使用Prepar
11、edStatement对象添加数据3-3catch (SQLException e) e.printStackTrace(); finally try if(pstmt != null) pstmt.close(); if(con != null & !con.isClosed() con.close(); catch (SQLException e) e.printStackTrace(); 1414 JDBC工作步骤第四步try pstmt.setXXXpstmt.setXXX( (第第n n个问号个问号, , 对应问号位置上的赋值对应问号位置上的赋值); ); ResultSet rs
12、= pstmt.executeQuerypstmt.executeQuery() (); catch (SQLException e) e.printStackTrace(); 第四步:执行SQL的查询语句以下为执行查询指定性别的员工信息示例:try String sql = “select eName, eSex from emp where eSex=?”; System.out.println(“请输入性别:“); String eSex = input.next(); pstmt.setString(1, eSex); ResultSet rs = pstmt.executeQuery
13、(); catch (SQLException e) e.printStackTrace(); 1515 使用PreparedStatement对象查询数据3-1try Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver); catch (ClassNotFoundException e) System.out.println(无法找到驱动类);Connection con = null; PreparedStatement pstmt = null; ResultSet rs = null; 使用PreparedStateme
14、nt对象根据运行时输入的员工性别查询用户信息1616 使用PreparedStatement对象查询数据3-2try con = DriverManager.getConnection(“”, “, “); String sql = “select eName, eSex from emp where eSex=?”; System.out.println(“请输入性别:“); String eSex = input.next(); pstmt.setString(1, eSex); ResultSet rs = pstmt.executeQuery(); while(rs.next() Sy
15、stem.out.print(rs.getString(“eName”) + “t”); System.out.println(rs.getString(“eSex”); 1717 使用PreparedStatement对象查询数据3-3catch (SQLException e) e.printStackTrace(); finally try if(rs != null) rs.close(); if(stmt != null) stmt.close(); if(con != null & !con.isClosed() con.close(); catch (SQLException e
16、) e.printStackTrace(); 1818 知识点小结1.1.语句对象执行查询语句的方法是什么语句对象执行查询语句的方法是什么2.2.语句对象执行增删改查语句的方法是什么语句对象执行增删改查语句的方法是什么3.3.如何判断结果集中是否还有数据行如何判断结果集中是否还有数据行4.4.如何获取结果集中对应行的字段取值如何获取结果集中对应行的字段取值1919 JDBC工作模板try Class.forNameClass.forName(JDBC(JDBC驱动类驱动类); ); catch (ClassNotFoundException e) System.out.println(无法找到
17、驱动类); Connection con = null; Statement stmt = null; ResultSet rs = null;try con=DriverManager.getConnectionDriverManager.getConnection(JDBC (JDBC URL,URL,数据库用户名数据库用户名, ,密码密码); ); stmt = con.createStatementcon.createStatement() (); rs = stmt.executeQuerystmt.executeQuery(SELECT a, b, c FROM Table1);
18、while (rs.nextrs.next() () int x = rs.getInt(a); String s = rs.getString(b); float f = rs.getFloat(c); catch (SQLException e) e.printStackTrace();finally try rs.closers.close(); (); stmt.closestmt.close(); (); con.closecon.close(); (); catch(SQLException e) . 第 一 步第 二 步第 三 步第 四 步第 七 步第 八 步第 五 步第 六 步山东商业职业技术学院Java程序设计课程开发组感谢您的学习