html5-img
1 / 32

huanghuai

JSP. Java Server Pages. www.huanghuai.edu.cn. 数据库编程. 主要内容: SQL 基础知识 JDBC 基础知识 数据库编程的基本步骤(重点) 每一步的具体实现(重点). 动态 web 最大的特点:可以操作数据库 jsp 属于动态 web 程序 -  可以操作数据库 -  jdbc. JDBC 基础知识. JDBC 由一些 Java 语言编写的类和接口组成,是一种可用于执行 SQL 语句的 Java API 。

arwen
Télécharger la présentation

huanghuai

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. JSP Java Server Pages www.huanghuai.edu.cn

  2. 数据库编程 • 主要内容: • SQL基础知识 • JDBC基础知识 • 数据库编程的基本步骤(重点) • 每一步的具体实现(重点)

  3. 动态web最大的特点:可以操作数据库 jsp属于动态web程序-可以操作数据库-jdbc

  4. JDBC基础知识 • JDBC由一些Java语言编写的类和接口组成,是一种可用于执行SQL语句的Java API。 • 为数据库应用开发人员、数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以很方便地将各种SQL语句传送到任何的关系数据库中。

  5. JDBC的基本结构 Java应用程序 JDBC API JDBC驱动程序管理器 JDBC Driver API JDBC-ODBC 桥驱动程序 SQL实现的 JDBC驱动程序 ORACLE实现的 JDBC驱动程序 MYSQL实现的 JDBC驱动程序 MYSQL数据库 ODBC数据源 ORACLE数据库 SQL数据库

  6. JDBC中的主要类和接口 JDBC由一系列的类和接口组成,包括连接、sql语句和结果集等,分别用于实现建立与数据库的连接、向数据库发出查询请求、处理数据库返回结果等功能。 java.sql包中访问数据库的重要接口和类 类: DriverMananger SQLException 接口: Driver Connection Statement ResultSet PreparedStatement

  7. JDBC访问数据库的基本步骤 1、引入SQL类 2、创建数据库 3、加载JDBC驱动程序 4、创建数据库连接 5、创建Statement 6、执行Statement 7、处理查询结果集 8、关闭数据库连接

  8. SQL基础知识 SQL是结构化查询语言(Structured Query Language)的缩写。 SQL是用于对存放在计算机数据库中的数据进行组织、管理和检索的一种工具; 是针对一种特定类型的数据库-关系数据库使用的。 SQL的常用语句: 1、Select 2、Insert into 3、Delete 4、Update 5、Create table 6、Drop table

  9. JDBC访问数据库的基本过程 1、加入sql包 2、引入驱动

  10. JDBC访问数据库的基本过程-加载JDBC驱动程序 3.1)加载jdbc-odbc桥驱动程序 Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); 3.2)加载microsoft sql server JDBC驱动程序 Class.forName(“ com.microsoft.jdbc.sqlserver.SQLServerDriver”); 3.3) 加载mysql JDBC驱动程序 Class.forName(“com.jdbc.mysql.Driver”); 以上操作时如果找不到驱动程序,会抛出ClassNotFoundException异常,要对异常进行处理。

  11. JDBC访问数据库的基本过程 4、创建数据库连接 调用DriverManager类的静态方法 getConnection(String connect_string) Connection con =DriverManager.getConnection(url,user,pwd); 其中url用于定位数据库,参数格式为:jdbc:<subprotocol>:<subname> 常用的url实例有: jdbc:oracle:thin:@host:1521:orcl jdbc:microsoft:sqlserver://host;DataName=student jdbc:odbc:datasoucer jdbc:mysql://host/myDB

  12. JDBC访问数据库的基本过程 5、创建Statement 创建SQL语句对象,以便执行用户定义的SQL语句。 Statement st=con.createStatement() throws SQLException; Statement st=con.createStatement(int ResultSetType,int ResultSetConcurrency) throws SQLException; 其中参数resultsettype有三个取值 TYPE_FORWORD_ONLY,只可向前滚动;    TYPE_SCROLL_INSENSITIVE,双向滚动,但不及时更新,就是如果数据库里的数据修改过,并不在ResultSet中反应出来。    TYPE_SCROLL_SENSITIVE,双向滚动,并及时跟踪数据库的更新,以便更改ResultSet中的数据。参数ResultSetConcurrency有两个取值 ResultSet.CONCUR_READ_ONLY不能用结果集更新数据 ResultSet.CONCUR_UPDATABLE可以执行数据库的新增、修改、和移除。

  13. JDBC访问数据库的基本过程 6、执行Statement SQL语句分为两大类:一类是数据定义和更新语句,用Statement中定义的executeUpdate()成员方法执行;另一类是SELECT查询语句,用Statement中定义的executeQuery()成员方法执行。 ResultSet rs=st.executeQuery("select * from stu");

  14. JDBC访问数据库的基本过程 7、处理查询结果集 Statement执行SQL语句后,将返回一个结果集对象ResultSet。每个ResultSet对象都有一个游标指向结果集的当前位置,游标的初始位置是在结果集的第一行之前。 ResultSet中定位游标的方法主要有: absolute(int row) afterLast() beforeFirst() first() isAfterLast() isBeforeFirst() isFirst() isLast() last() next() previous() 及其他很多方法和操作。

  15. JDBC访问数据库的基本过程 8、关闭数据库连接 rs.close();//关闭记录集 st.close();//关闭语句 con.close();//关闭连接

  16. <%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.sql.*"%> <%! // 定义数据库驱动 String DBDRIVER = "sun.jdbc.odbc.JdbcOdbcDriver" ; // 定义数据库连接地址 String DBURL = "jdbc:odbc:mldn" ; // 定义数据库连接对象,属于java.sql包中的接口 Connection conn = null ; // 定义Statement对象,用于操作数据库 Statement stmt = null ; // 定义一字符串变量,用于保存SQL语句 String sql = null ; %> <%

  17. try{ Class.forName(DBDRIVER) ; // 1、加载驱动程序 conn = DriverManager.getConnection(DBURL) ; // 2、连接数据库 stmt = conn.createStatement() ; // 3、操作数据库 // 为sql变量赋值// 插入语句 sql = "INSERT INTO person (name,password,age) VALUES ('LH','zzzzzz',28)" ; // sql = "UPDATE person SET name='李华',password='www.hhxy.cn' WHERE id=3" ; // 更新语句 // sql = “DELETE FROM person WHERE id=4” ; // 按ID删除 stmt.executeUpdate(sql) ; // 通过Statement执行此SQL语句 } catch(Exception e) {out.println("数据库驱动程序加载失败!!!") ; } try// 4、关闭数据库 {stmt.close() ; conn.close() ;} catch(Exception e) {out.println(“数据库关闭失败!!!”) ; } %>

  18. stmt = conn.createStatement() ; // 编写查询的SQL语句 sql = "SELECT id,name,password,age FROM person" ; // 查询数据库,此方法返回ResultSet对象 rs = stmt.executeQuery(sql) ; while(rs.next()) { int id = rs.getInt(1) ; String name = rs.getString(2) ; String password = rs.getString(3) ; int age = rs.getInt(4) ; %> <h2>ID:<%=id%>,姓名:<%=name%>, 密码:<%=password%>,年龄:<%=age%></h2> 查询

  19. <table border="1" width="80%"> <tr><td>ID</td><td>姓名</td> <td>密码</td><td>年龄</td> </tr> <% while(rs.next()) { int id = rs.getInt(1) ; String name = rs.getString(2) ; String password = rs.getString(3) ; int age = rs.getInt(4) ; %> <tr> <td><%=id%></td><td><%=name%></td> <td><%=password%></td><td><%=age%></td> </tr> <%} %> </table>

  20. <form action="login_conf.jsp" method="post"> <table> <tr><td colspan="2">用户登陆</td></tr> <tr><td>用户名:</td> <td><input type="text" name="uname"></td> </tr> <tr><td>密&nbsp;&nbsp;码:</td> <td><input type="password" name="upassword"></td> </tr> <tr><td colspan="2"> <input type="submit" value="登陆"> <input type="reset" value="重置"> </td> </tr> </table> </form>

  21. 数据库连接步骤 数据库连接用到的类和方法 复习

  22. 用户输入个人信息,保存到数据库 实例1:用户注册 接收客户端的输入内容 将数据插入数据库 提示用户注册成功 用户注册 用户名: 密 码: register.jsp register_conf.jsp 提交 注册

  23. 插入数据 tom,123 插入数据 张三,123

  24. 实例2:用户登录 接收客户端输入 查询数据库是否有此记录 正确输出欢迎。。。 用户注册 用户名: 密 码: login.jsp Login_conf.jsp 提交 注册

  25. 输入数据库中的数据:tom,123 张三,123 输入其他数据,用户名:fs’ or ‘x’=‘x

  26. PreparedStatement接口继承Statement,并与之在两方面有所不同:PreparedStatement接口继承Statement,并与之在两方面有所不同: PreparedStatement 继承了 Statement 的所有功能。另外它还添加了一整套方法。executeQuery 和execute、 executeUpdate已被更改以使之不再需要参数。 该语句为每个 参数保留一个问号(“?”)作为占位符。每个问号的值必须在该语句执行之前,通过适当的setXXX 方法来提供。 PreparedStatement

  27. 1、创建 PreparedStatement 对象 以下的代码段(其中 con 是 Connection 对象)创建包含带两个参数占位符的 SQL 语句的 PreparedStatement 对象: PreparedStatement pstmt = con.prepareStatement("UPDATE table4 SET m = ? WHERE x = ?"); pstmt 对象包含语句 "UPDATE table4 SET m = ? WHERE x = ?",它已发送给DBMS,并为执行作好了准备。

  28. 2、传递 参数 在执行 PreparedStatement 对象之前,必须设置每个 ? 参数的值。这可通过调用 setXXX 方法来完成,其中 XXX 是与该参数相应的类型。 例如,如果参数具有Java 类型 long,则使用的方法就是 setLong。setXXX 方法的第一个参数是要设置的参数的序数位置,第二个参数是设置给该参数的值。 例如,以下代码将第一个参数设为 123456789,第二个参数设为 100000000: pstmt.setLong(1, 123456789); pstmt.setLong(2, 100000000);

  29. 3.执行 resultset rs = pstmt .executequery(); pstmt.executeUpdate(); 修改用户登录程序

  30. 登录:通过数据库验证,并将用户名保存在session中登录:通过数据库验证,并将用户名保存在session中 留言管理:查询、添加、修改、删除 主要技术:jsp基础语法,request对象、response对象、session对象、jdbc操作、html表单 作业:留言管理模块

  31. 实例3:留言管理程序 登录 login.jsp:表单 login_conf.jsp:接收表单参数,连接数据库进行验证,成功将用户名保存在session中跳转到login_success.jsp,失败转到login.jsp login_success.jsp:验证用户是否登录,打印欢迎信息,给出超超链接到list_notes.jsp

  32. 留言管理 list_notes.jsp:验证用户是否登录,列出全部数据,连接增加、修改、删除、查询 insert.jsp:验证用户是否登录。表单,插入新的留言,返回list_notes.jsp的超链接 insert_do.jsp:验证用户是否登录,向数据库插入数据 update.jsp:验证用户是否登录,取出要修改的记录,将记录填写在表单中 update_do.jsp:验证用户是否登录,接收修改后的内容,并在数据库中更新 delete_do.jsp:验证用户是否登录,从数据库中删除信息

More Related