JSP与JDBC

上传人:ths****59 文档编号:54644896 上传时间:2018-09-16 格式:PPT 页数:23 大小:152KB
返回 下载 相关 举报
JSP与JDBC_第1页
第1页 / 共23页
JSP与JDBC_第2页
第2页 / 共23页
JSP与JDBC_第3页
第3页 / 共23页
JSP与JDBC_第4页
第4页 / 共23页
JSP与JDBC_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《JSP与JDBC》由会员分享,可在线阅读,更多相关《JSP与JDBC(23页珍藏版)》请在金锄头文库上搜索。

1、JSP 与 JDBC,青软实训,JDBC简介,JDBC是一种用于执行SQL的Java API,MySQL的使用,MySQL的基本安全设定 MySQL安装在Window环境时,默认的MySQL权限是允许所有的用户都有完整存取数据库的权限。这样的问题是非常严重且不安全的,因此,我们必须为MySQL的root设定密码,并且设定不允许所有的用户有完整存取数据库的权限。,mysqlUSE mysql; mysqlDELETE FROM user WHERE User=_; mysqlQUIT;,MySQL的使用,MySQL常用的指令,MySQL的使用,MySQL的SQL语句,JDBC连接MySQL,使用

2、JDBC连接数据库存取数据时,必须要执行下列三个步骤: 用DriverManager加载及注册适当的JDBC驱动程序; 用JDBC URL定义驱动程序与数据来源之间的连接,并且建立一个连接对象; 建立一个SQL陈述式对象(Statement Object),并且利用它来执行SQL语句;,JDBC连接MySQL,加载及注册JDBC驱动程序 JDBC与数据库建立连接的第一个步骤为加载(load)适当的驱动程序,我们一般使用Class.forName()来加载驱动程序:一般加载驱动程序时,可能会遇到两种问题: 加载失败,错误信息为“Class not found” 这个问题通常是因为加载驱动程序时,

3、无法找到该JDBC驱动程序。一般解决方法是将它放置到你的web程序/WEB-INF/lib目录 加载失败,错误信息为“Driver not found” 这个错误信息表示你没有用DriverManager类来注册JDBC驱动程序。有时候当我们用Class.forName()来加载驱动程序时,会碰到JDBC规范和某些JVM产生问题。当遇到这种情况时,我们可以改为:,Class.forName(“com.mysql.jdbc.Driver”);,Class.forName(“com.mysql.jdbc.Driver”).newInstance();,JDBC连接MySQL,JDBC URL定义驱

4、动程序与数据来源之间的连接 MySQL的JDBC URL如下列格式hostname表示联机主机名称,也可以为一有效IP地址;port为连接数据库所使用的端口;dbname就是数据库的名称;最后就是一些参数的设定,不过必须注意到,别忘记在dbname之后加上“?”,jdbc:mysql:/hostname:port/dbname?param1=value¶m2=value2,JDBC连接MySQL,JDBC连接MySQL,主要过程 建立一个连接对象(Connection Object) 建立一个SQL语句对象(Statement Object) 使用SQL Statement对象来执行S

5、QL语句,JDBC连接MySQL,JDBC连接MySQL的中文问题 从网页取得信息,并将信息存入MySQL中这个过程很简单,但是中文经常会出现乱码问题。 编程实例 MySQL.html MySQL.jsp,PreparedStatement,预编语句(PreparedStatement)接口是继承Statement接口的,它和Statement接口有两个不同之处: 预编语句是包含已编译好的SQL语句;而Statement的SQL语句是当程序要执行时,才会去编译它们。 预编语句中的SQL语句具有一个或多个参数,每个参数用问好“?”替代。每个问好的值必须在执行之前用setXXX方法来设定它所代表的

6、值。,CallableStatement,所谓存储过程(Stored Procedure)是指:在你执行应用程序之前,存储过程就已经内建在数据库中;在执行应用程序期间,直接以名称存取存储过程。存储过程有一下优点: 由于大多数的数据库都会事先将存储过程编译好暂存在数据库中,因此,存储过程的执行速度会比在程序中调用SQL语句要快。 存储过程的语法有错误时,可以在编译期间解决,而非在执行期间。 Java开发人员只需要指导存储过程的名称、输入和输出,就能够顺利执行工作。 注意:Mysql4不支持存储过程。目前大部分商业数据库都支持存储过程。,CallableStatement,CREATE OR RE

7、PLACE PROCEDURE count_interest(id IN INTEGER, bal OUT FLOAT) IS BEGIN SELECT balance INTO bal FROM account WHERE account_id = id; bal := bal + bal * 0.02; UPDATE account SET balance = bal WHERE account_id = id; END;,CallableStatement,tryConnection conn;CallableStatement callstmt;int i;conn.setAutoCo

8、mmit(false);callstmt = conn.prepareCall(“Call count_interest (?,?)”);callstmt.registerOutParameter(2,java.sql.Types.FLOAT);for(int=1;iaccounts.length;i+)callstmt.setInt(1, accountsi.getId();callstmt.execute();System.out.println(“New balance:”+callstmt.getFloat(2);mit();callstmt.close();conn.close();

9、 ,BLOB和CLOB,JDBC2.0引入两个最重要的数据类型:BLOB和CLOB。BLOB指的是二进制大型对象(Binary Large Object),CLOB指的是字符大型对象(Character Large Object)。它们都是用来处理大量数据的数据类型,BLOB和CLOB分别代表大量的二进制数据和文字数据。 java支持两种Java类型,以应对SQL的BLOB和CLOB类型:java.sql.Blob和java.sql.Clob。如果要从查询结果中取出数据,方式和其他数据类型一样,使用getBlob()和getClob()方法。,JNDI数据源与连接池,数据源(Data Sour

10、ce) JDBC2.0提供DataSource的接口用于:减少你将一些数据库连接信息写死(hard code)在你的JSP程序代码之内。 连接池(Connection Pool) 每次建立数据库连接将会耗费大量的时间与资源。因为数据库每次建立Connection时,都要先将Connection加载内存,再来验证用户的名称与密码,等到一切通过之后,再与用户建立连接,断线后又重新来一次。如此冗长的程序,既耗时且没有效率。 连接池的运作方式是一开始向数据库要求很多的Connection存储在一个Pool内,让需要的人从连接池中取得Connect,等到用完后再放回连接池内,其实说穿了就等于做一个缓冲区

11、。,JNDI数据源与连接池,JNDI JNDI全名为Java Naming and Directory Interface。JNDI主要提供应用程序所需资源上命名与目录的服务。在J2EE环境中,JNDI扮演了一个很重要的角色,它提供了一个接口让用户在不知道资源所在位置的情形下,取得该资源服务。,JNDI数据源与连接池,设定JNDI的JDBC数据源和DBCP连接池 安装JDBC Driver 设定Tomcat的Server.xml 编程实例,Connection Pool Proxool,除我们常用的Tomcat内置的连接池DBCP之外,还有一个更加强大的连接池工具Proxool。 下载地址:h

12、ttp:/ Pool Proxool,安装与使用Proxool 将类库copy到你的web目录/WEB-INF/lib下。,Class.forName(“org.logicalcobwebs.proxool.ProxoolDriver“); con = DriverManager.getConnection(“proxool.JSPBook:com.mysql.jdbc.Driver:jdbc:mysql:/localhost:3306/sample_db?user=root,Connection Pool Proxool,设定Proxool Proxool提供许多连接池的设定参数,例如:连接池最多有几个Connection、最少有几个Connection、Connection的生命期限等。 Proxool提供几种方式来进行设定: 通过java.util.Properties 通过xml文件来设定 通过Properties文件来设定,Connection Pool Proxool,Proxool后端统计接口 web.xml,Adminorg.logicalcobwebs.proxool.admin.servlet.AdminServletAdmin/Admin,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号