zoukankan      html  css  js  c++  java
  • 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="<%=basePath%>">
        
        <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="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

  • 相关阅读:
    PHP基础入门(五)---PHP面向对象实用基础知识
    PHP基础入门(四)---PHP数组实用基础知识
    PHP基础入门(三)---PHP函数基础
    PHP基础入门(二)---入门基础知识必备
    PHP基础入门(一)---世界上最好用的编程语言
    【JavaScript OPP基础】---新手必备
    高级软件工程第六次作业:“希希敬敬对”团队作业-3
    高级软件工程第五次作业:“希希敬敬对”团队作业-2
    第四次软件工程团队作业:“希希敬敬对”队团队展示
    高级软件工程第三次作业:数独游戏界面功能
  • 原文地址:https://www.cnblogs.com/Stringair/p/6675177.html
Copyright © 2011-2022 走看看