首页 > 代码库 > JAVA EE 学习笔记[V3 JDBC连接数据库]

JAVA EE 学习笔记[V3 JDBC连接数据库]

Going on

 在前面两节实力浅学了Servlet和Jsp一波。然而这些东西离我们实际开发还有很远的距离(至少作业都完成不了=-=),所以想更进一步靠近实际开发的话,那就一定得对数据库的知识有一定程度的掌握和了解(这里暂时先来点简单的,毕竟数据库又是学科分支,分分钟搞大),我暂时对JAVA访问数据库的技术即JDBC进行学习和了解。

JDBC简介

  商业应用的后台数据一般存放在数据库中,很明显,可以通过 Java 代码来访问数据库。

  在 Java 技术系列中,访问数据库的技术叫做 JDBC(Java DateBase Connectivity),它提供了一系列的 API,让 Java 语言编写的代码连接数据库,对数据库的数据进行添加、删除、修改和查询。

JDBC编程接口

JDBC提供了两种编程接口:面向普通程序员用于数据库连接操作的的JDBC API,和面向JDBC驱动程序开发的JDBC Driver Interface.

技术分享

 

JDBC API只关心java调用sql的抽象接口,而不考虑具体使用哪种方式实现,具体数据库调用靠JDBC驱动程序完成。

因此,我们普通程序员只要按照JDBC API撰写一次程序,然后搭建不同的JDBC驱动程序,便可以操作不同的数据库。

针对不同类型的数据库,JDBC 机制中提供了“驱动程序”的的概念。程序只需要使用数据库厂商提供的驱动程序,就可以连接数据库并进行操作。

技术分享

JDBC 驱动器程序

   JDBC驱动程序有两种主要的类型:

         JDBC驱动:大多数数据库系统都实现的JDBC驱动程序,JSP可以用它直接访问数据库。

         ODBC桥:有些数据库系统没有直接提供JDBC驱动,但是它们往往提供了ODBC驱动,ODBC即微软公司设计开发的windows系统开放数据库互联接口(Open Database                                Connectivity)。JSP可以通过SUN公司的JDBC-ODBC桥来实现对它们的访问。

JDBC API

   JDBC API由用户调用,以实现基本的数据库操作。

     其中包括四个类: java.sql.Connection:负责连接数据库

                                 java.sql.Statement:负责执行数据库 SQL 语句

                                 java.sql.ResultSet:负责存放查询结果

                                 java.sql.DriverManager:负责装载驱动程序

而一般使用JDBC开发的流程如下

技术分享

 

在了解JDBC之后我们继续按照惯例(以Myeclipse 2016 CI4为例):

  在这里我们使用 IDE自带的 DerBy数据库=-=

 先创建完Web Service Project 之后右键工程 打开properties(得手动添加 DerBy.jar 没这东西剩下的都是瞎扯)

技术分享

  这里我手贱加进去了,还有记得把derbyclient.jar添加到.classpath 当中

技术分享

 

然后编辑Derby数据库的属性

技术分享

搞定之后上代码(放入JSP):

<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="http://www.mamicode.com/">
    
    <title>My JSP ‘index.jsp‘ starting page</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="http://www.mamicode.com/styles.css">
    -->
  </head>
  
  <body>
    This is my JSP page. <br>
    <%
    //全局变量,数据库名
    String DBNAME = "MyEclipse Derby";
    //连接端口
    int NETWORKSERVER_PORT=1527;
    //驱动类名
    String DERBY_CLIENT_DRIVER = "org.apache.derby.jdbc.ClientDriver";
    
    //以以上内容组装一个 Derby JDBC Driver URL
    String DERBY_CLIENT_URL=
        "jdbc:derby://localhost:" +
        NETWORKSERVER_PORT +
        "/" +
        DBNAME +
        ";create=true";
    
    Connection conn = null;
    
    try{
        //装载驱动程序
        Class.forName(DERBY_CLIENT_DRIVER).newInstance();
        //建立连接,三个参数:url,username,password
        conn = DriverManager.getConnection(DERBY_CLIENT_URL,"xr", "111111");
        //创建statement对象
        Statement st = conn.createStatement();
        
        //执行sql语句
        //建一个名为USERINFO的表,使用execute方法
        st.execute("create table USERINFO (USERID INT NOT NULL, USERNAME VARCHAR(10) NOT NULL)");
        //增删改查表中的内容,用executeUpdate方法
        st.executeUpdate("insert into USERINFO(USERID, USERNAME) values (1, ‘NOSTRING‘)");
        st.executeUpdate("insert into USERINFO(USERID, USERNAME) values (2, ‘BECHAR‘)");
        st.executeUpdate("insert into USERINFO(USERID, USERNAME) values (3, ‘ALEXVIEW‘)");
        //读取表的内容,用executeQuery方法
        ResultSet rs = st.executeQuery("select * from USERINFO");
        //循环输出内容
        while(rs.next()){
            int userID = rs.getInt(1);
            String username = rs.getString(2);
            out.println("-------------------<br>");
            out.println("用户ID:"+ userID +"<br>");
            out.println("用户用户名:"+ username +"<br>");
            out.println("-------------------<br>");
        }
        
    }catch(SQLException e){
        out.print(e.getErrorCode() + "<br>");
        out.print(e.getCause() + "<br>");
        out.print(e.getMessage() + "<br>");
        if(conn != null )
            conn.close();
    }

 %>
  </body>
</html>

 

搞定=-=  这个底下过几日把MySql的版本试一下吧  

 待更新-————————2017.4.6

 

JAVA EE 学习笔记[V3 JDBC连接数据库]