JSP与数据库应用(II)

来源:互联网 发布:淘宝品牌授权是正品吗 编辑:程序博客网 时间:2024/06/05 10:53

JSP网络数据库应用架构

      存取Web数据库的JSP数据库网络架构如图一所示。基本上来说,这个存取架构是一个B/S架构。在服务器端由Web服务器和数据库服务器组成,而浏览器只需要一个支持Java语言的浏览器即可。

图一  JSP数据库网络架构

      服务器端的Web服务器负责执行JSP程序,在JSP程序中通过JDBC(Java DataBase Connectivity)接口来和数据库服务器相连,并取得数据库中的数据,也可以通过JDBC向数据库发送SQL命令,对数据库进行操作(靠JDBC提供的类与方法)。Web服务器还有一个工作,将用户操作数据库的结果,以HTML的形式通过HTTP回传给前端的浏览器。

 

JDBC驱动:

      驱动程序用于连接应用程序和数据库。

      主要数据库的JDBC驱动类名:

      SQL Server2000的驱动类是:com.microsoft.jdbc.sqlserver.SQLServerDriver。

      Oracle的驱动类是:oracle.jdbc.driver.OracleDriver。

      MySQL的驱动类是:com.mysql.jdbc.Driver。

      MySQL数据库JDBC配置:

      对于MySQL的驱动程序,根据所安装的MySQL数据库的版本,从网上下载相应的驱动程序包(http://dev.mysql.com )。将驱动程序所在的jar包(如:mysql-connector-java-5.1.11-bin.jar)复制到%Tomcat%\common\lib(Tomcat5.0)或%Tomcat%\lib(Tomcat6.0)目录下。

 

JDBC简介

      JDBC(Java DataBase Connectivity)是Java语言用来连接和操作关系数据库的应用程序接口(API),由类(Class)和接口(Interface)所组成。

JDBC中常用的类和接口:

    DriverManager类:用于处理驱动器的加载、数据库连接的建立。

    Connection类:用于处理特定数据库的连接。

    Statement接口:处理数据库连接中的SQL语句。

    ResultSet接口:用于处理数据库操作的结果集。

    PreparedStatement接口:用于处理带有参数的SQL语句。

    CallableStatement接口:用于处理数据库存储过程。

注意:调用JDBC的类和接口,需要包含java.sql.*包。(<%@page import="java.sql.*"%>) 

JDBC访问数据库主要步骤:

      JDBC对数据库的操作通过5个JDBC的类/接口来实现:数据库的JDBC Driver类、DriverManager类、Connection接口、Statement接口和ResultSet接口。

      1、加载驱动程序

                  调用Class.for.Name()方法。

           格式:

                   Class.forName("MyDriver");

           例如:Class.forName("com.mysql.jdbc.Driver");

      2、创建与数据库的连接

                  调用DriverManager.getConnection()方法取得一个Connection对象,以此来访问数据库表中的记录。

           A、数据库的位置:Oracle port=1521; MS SQL Server port=1433; MySQL port=3306;

           B、数据库的信息:数据库的名字;

           C、用户信息:用户名和口令。

           格式:

                   Connection con=DriverManager.getConnection(url, user, password);

           例如:Connection con=

                       DriverManager.getConnection("jdbc:mysql://localhost:3306/mytest", "root", "root");

                    Connection con=

                       DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=dbname", "sa", "");

                    Connection con=

                       DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL", "user", "pwd");

      3、建立语句

                  需要一种方式向数据库服务器发送SQL语句,通过创建Statement对象来完成。              

                  Connection.createStatement()方法创建一个Statement对象。如果需要传递给数据库服务器的SQL是带参数的,则用PreparedStatement对象,该对象是由Connection.prepareStatement()方法创建的。

            格式:

                     Statement stmt=conn.createStatement();

                     PreparedStatement pstmt=conn.prepareStatement("sql语句");       

            例如:

                    String sql="select * from myuser where user_id=? and user_pass=?";

                    PreparedStatement stmt=conn.prepareStatement(sql);  

                    pstmt.setString(1, user_id);

                    pstmt.setString(2, user_pass);

            说明:PreparedStatement对象所代表的SQL语句中的参数用(?)来表示,setXXX方法来设置这些参数,第一个参数表示要设置的参数的索引(从1开始),第二个参数表示要设置的参数的值。

      4、执行SQL语句:

                  使用语句对象来执行SQL语句。(通过Statement.executeQuery()方法或Statement.executeUpdate()方法来查询或更新数据库记录。)

                  executeQuery():主要用于执行有结果集返回的SQL语句。(例如如果要查询数据,需要处理查询结果。创建ResultSet的对象来接收这个结果集。通过该对象可以进行数据库记录的浏览、新增、删除和修改。)

                  executeUpdate():主要用于执行没有结果集返回的SQL语句。(例如对系统发送INSERT、UPDATE、DELETE不需返回结果的SQL语句,返回类型为int,表示数据库中受影响的记录个数)

            例如:String sql="select * from students";

                     ResultSet rs=stmt.executeQuery(sql);

            例如:String sql="delete from student where score<=60";

                     int ret=stmt.executeUpdate(sql);

      5、处理结果集:

                  当发送的SQL语句SELECT语句时,返回的是ResultSer对象表示的结果集,包含了返回数据的行和列。可以通过getXXX方法获取当前行中各数据列中的数据(getString()、getDate()、getInt()等,根据数据列的数据库类型,采用不同的获取方法),并且可以通过使用next()方法每次向前移动一行。

      6、关闭数据库连接:

                  完成数据库操作后,一次调用各个对象的Close()方法,关闭数据库连接,释放JDBC资源。

            例如:rs.close();      //关闭结果集

                     stmt.close();   //关闭语句对象

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

            注意:关闭对象的顺序和创建对象的顺序刚好相反。

      7、异常处理:

            try{

            ...  //要执行的可能出错的代码

            }catch(Exception e){

            ...  //出错后的处理代码

            }finally{

            ...  //不管是否出错都要执行的代码

            } 

      

                    

                    

  • 大小: 20.1 KB
  • 查看图片附件
原创粉丝点击