JSP
This presentation is the property of its rightful owner.
Sponsored Links
1 / 32

huanghuai PowerPoint PPT Presentation


  • 61 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Huanghuai

JSP

Java Server Pages

www.huanghuai.edu.cn


Huanghuai

数据库编程

  • 主要内容:

  • SQL基础知识

  • JDBC基础知识

  • 数据库编程的基本步骤(重点)

  • 每一步的具体实现(重点)


Huanghuai

动态web最大的特点:可以操作数据库

jsp属于动态web程序-可以操作数据库-jdbc


Huanghuai

JDBC基础知识

  • JDBC由一些Java语言编写的类和接口组成,是一种可用于执行SQL语句的Java API。

  • 为数据库应用开发人员、数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以很方便地将各种SQL语句传送到任何的关系数据库中。


Huanghuai

JDBC的基本结构

Java应用程序

JDBC API

JDBC驱动程序管理器

JDBC Driver API

JDBC-ODBC

桥驱动程序

SQL实现的

JDBC驱动程序

ORACLE实现的

JDBC驱动程序

MYSQL实现的

JDBC驱动程序

MYSQL数据库

ODBC数据源

ORACLE数据库

SQL数据库


Huanghuai

JDBC中的主要类和接口

JDBC由一系列的类和接口组成,包括连接、sql语句和结果集等,分别用于实现建立与数据库的连接、向数据库发出查询请求、处理数据库返回结果等功能。

java.sql包中访问数据库的重要接口和类

类:

DriverMananger SQLException

接口:

Driver Connection Statement ResultSet PreparedStatement


Huanghuai

JDBC访问数据库的基本步骤

1、引入SQL类

2、创建数据库

3、加载JDBC驱动程序

4、创建数据库连接

5、创建Statement

6、执行Statement

7、处理查询结果集

8、关闭数据库连接


Huanghuai

SQL基础知识

SQL是结构化查询语言(Structured Query Language)的缩写。 SQL是用于对存放在计算机数据库中的数据进行组织、管理和检索的一种工具; 是针对一种特定类型的数据库-关系数据库使用的。

SQL的常用语句:

1、Select

2、Insert into

3、Delete

4、Update

5、Create table

6、Drop table


Huanghuai

JDBC访问数据库的基本过程

1、加入sql包

2、引入驱动


Jdbc jdbc

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异常,要对异常进行处理。


Huanghuai

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


Huanghuai

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可以执行数据库的新增、修改、和移除。


Huanghuai

JDBC访问数据库的基本过程

6、执行Statement

SQL语句分为两大类:一类是数据定义和更新语句,用Statement中定义的executeUpdate()成员方法执行;另一类是SELECT查询语句,用Statement中定义的executeQuery()成员方法执行。

ResultSet rs=st.executeQuery("select * from stu");


Huanghuai

JDBC访问数据库的基本过程

7、处理查询结果集

Statement执行SQL语句后,将返回一个结果集对象ResultSet。每个ResultSet对象都有一个游标指向结果集的当前位置,游标的初始位置是在结果集的第一行之前。 ResultSet中定位游标的方法主要有:

absolute(int row) afterLast()

beforeFirst() first()

isAfterLast() isBeforeFirst()

isFirst() isLast()

last() next()

previous()

及其他很多方法和操作。


Huanghuai

JDBC访问数据库的基本过程

8、关闭数据库连接

rs.close();//关闭记录集

st.close();//关闭语句

con.close();//关闭连接


Huanghuai

<%@ 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 ;

%>

<%


Huanghuai

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(“数据库关闭失败!!!”) ; } %>


Huanghuai

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>

查询


Huanghuai

<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>


Huanghuai

<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>


Huanghuai

数据库连接步骤

数据库连接用到的类和方法

复习


Huanghuai

用户输入个人信息,保存到数据库

实例1:用户注册

接收客户端的输入内容

将数据插入数据库

提示用户注册成功

用户注册

用户名:

密 码:

register.jsp

register_conf.jsp

提交

注册


Huanghuai

插入数据 tom,123

插入数据 张三,123


Huanghuai

实例2:用户登录

接收客户端输入

查询数据库是否有此记录

正确输出欢迎。。。

用户注册

用户名:

密 码:

login.jsp

Login_conf.jsp

提交

注册


Huanghuai

输入数据库中的数据:tom,123

张三,123

输入其他数据,用户名:fs’ or ‘x’=‘x


Preparedstatement

PreparedStatement接口继承Statement,并与之在两方面有所不同:

PreparedStatement 继承了 Statement 的所有功能。另外它还添加了一整套方法。executeQuery 和execute、 executeUpdate已被更改以使之不再需要参数。

该语句为每个 参数保留一个问号(“?”)作为占位符。每个问号的值必须在该语句执行之前,通过适当的setXXX 方法来提供。

PreparedStatement


Huanghuai

1、创建 PreparedStatement 对象

以下的代码段(其中 con 是 Connection 对象)创建包含带两个参数占位符的 SQL 语句的 PreparedStatement 对象:

PreparedStatement pstmt = con.prepareStatement("UPDATE table4 SET m = ? WHERE x = ?");

pstmt 对象包含语句 "UPDATE table4 SET m = ? WHERE x = ?",它已发送给DBMS,并为执行作好了准备。


Huanghuai

2、传递 参数

在执行 PreparedStatement 对象之前,必须设置每个 ? 参数的值。这可通过调用 setXXX 方法来完成,其中 XXX 是与该参数相应的类型。

例如,如果参数具有Java 类型 long,则使用的方法就是 setLong。setXXX 方法的第一个参数是要设置的参数的序数位置,第二个参数是设置给该参数的值。

例如,以下代码将第一个参数设为 123456789,第二个参数设为 100000000:

pstmt.setLong(1, 123456789);

pstmt.setLong(2, 100000000);


Huanghuai

3.执行

resultset rs = pstmt .executequery();

pstmt.executeUpdate();

修改用户登录程序


Huanghuai

登录:通过数据库验证,并将用户名保存在session中

留言管理:查询、添加、修改、删除

主要技术:jsp基础语法,request对象、response对象、session对象、jdbc操作、html表单

作业:留言管理模块


Huanghuai

实例3:留言管理程序

登录

login.jsp:表单

login_conf.jsp:接收表单参数,连接数据库进行验证,成功将用户名保存在session中跳转到login_success.jsp,失败转到login.jsp

login_success.jsp:验证用户是否登录,打印欢迎信息,给出超超链接到list_notes.jsp


Huanghuai

留言管理

list_notes.jsp:验证用户是否登录,列出全部数据,连接增加、修改、删除、查询

insert.jsp:验证用户是否登录。表单,插入新的留言,返回list_notes.jsp的超链接

insert_do.jsp:验证用户是否登录,向数据库插入数据

update.jsp:验证用户是否登录,取出要修改的记录,将记录填写在表单中

update_do.jsp:验证用户是否登录,接收修改后的内容,并在数据库中更新

delete_do.jsp:验证用户是否登录,从数据库中删除信息


  • Login