zoukankan      html  css  js  c++  java
  • JSP-06-使用JDBC操作数据库

    6.1 使用JDBC查询数据 【链接oracle数据库】

     具体操作:

    1)  将odbc文件拷贝到项目中

      Odbc文件所在目录: oracle安装目录下- product – db_1 – jdbc  -lib – odbc14.jar

      复制到项目的 webRoot – webinf  -lib 中

      在项目中添加引用

    2)  实现数据查询

          Connection connection=null;

                       Statement stmt=null;

                       ResultSet rs=null;

                       try {

                                //(1)Class.forName()加载驱动

                                Class.forName("oracle.jdbc.driver.OracleDriver");

                                //(2)DriverManager.getConnection(URL,用户名,密码)获得数据库连接 (Connection)

                                connection=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:news","scott","tiger");

                                //(3)获得Statement对象,执行SQL语句

                                String sql="select * from news_detail";

                                stmt=connection.createStatement();

                                rs=stmt.executeQuery(sql);

                                //(4)处理执行结果(ResultSet)

                                while(rs.next()){

                                         int id=rs.getInt("id");

                                         String title=rs.getString("title");                                

                                         Timestamp time=rs.getTimestamp("createdate");

                                         //输出

                                }

                       } catch (ClassNotFoundException e) {

                                // TODO Auto-generated catch block

                                e.printStackTrace();

                       } catch (SQLException e) {

                                // TODO Auto-generated catch block

                                e.printStackTrace();

                       }finally{

                                //释放资源

                                try {

                                         rs.close();

                                         stmt.close();

                                         connection.close();

                                } catch (SQLException e) {

                                         // TODO Auto-generated catch block

                                         e.printStackTrace();

                                }

                       }

    6.2 使用JDBC操作数据 【链接oracle数据库】

             String sql="insert into news_detail(id,categoryId,createdate) values(?,?,?)";

             pstmt=connection.prepareStatement(sql);

             pstmt.setInt(1, id);

             pstmt.setInt(2, categoryId);                     

             pstmt.setTimestamp(6, new java.sql.Timestamp(createdate.getTime()));

             int i=pstmt.executeUpdate();

             //(4)处理执行结果

             if(i>0)                                   

    System.out.println("插入成功!");       

            

    6.3 升级JDBC (基于属性文件的数据库配置)

    目的: 更改数据库时,便于修改,灵活。

    属性文件: 把相关数据库配置信息写在文件中,并保持在项目内,在程序中读取文件中的信息,从而进行数据库连接。在Java中提供了 Properties 类,来读取 .properties(属性)文件。在项目中默认路径(src)下创建文件,名称为 db.properties (名称可自定义,扩展名必须为 properties), 编辑文件内容

     1) src – 新建 – other - *.properties   (以.properties结尾,保存数据连接信息)

        jdbc.driver_class=oracle.jdbc.driver.OracleDriver 

        jdbc.connection.url=jdbc:oracle:thin:@localhost:1521:news   //路径

        jdbc.connection.username=scott   //用户名

        jdbc.connection.password=tiger   //密码

      

    2) 使用参数连接DB (读取配置文件)

         详见  编写通用DAO中 util 目录下的 ConfigManager.java

    3) 读取属性文件

    package com.pb.news.util;

    import java.io.IOException;

    import java.io.InputStream;

    import java.util.Properties;

    //读取配置文件(属性文件)的工具类

    public class ConfigManager {

         

          private static ConfigManager configManager;

          //properties.load(InputStream);读取属性文件

         

          private static Properties properties;

         

          private ConfigManager(){

                   String configFile="database.properties";

                   properties=new Properties();

                   InputStream in=ConfigManager.class.getClassLoader().getResourceAsStream(configFile);

                   try {

                             properties.load(in);

                             in.close();

                   } catch (IOException e) {

                             // TODO Auto-generated catch block

                             e.printStackTrace();

                   }

          }

         

          //以单例模式创建、获得对象实例

          public static ConfigManager getInstance(){

                   if(configManager != null){

                                               return configManager;

                             }else{

                                               makeInstance();

                                               return configManager;

                             }

          }

         

          //同步方法,保证在同一时间,只能被一个人调用

          private static synchronized void makeInstance(){

                             if(configManager==null){

                                      configManager=new ConfigManager();

                             }

          }

                  

          public String getString(String key){

                   return properties.getProperty(key);

          }

    }

    4) 实现数据查询

    为了避免数据冗余,先编写接口,然后编写实现接口,继承 BaseDao.java 的类。

    6.4    数据库连接池 【看此段内容请忽略6.3】

    数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不再是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接,以避免因为没有释放数据库连接而引起的数据库连接遗漏。

    1、Tomcat中加入数据库驱动文件

        将数据库中的odbc14.jar 文件拷贝到 tomcat 的安装目录的lib 文件中

    2、配置Tomcat的conf/context.xml   (Tomcat的安装目录)

             <Resource name="jdbc/news"

                  auth="Container"  type="javax.sql.DataSource"  maxActive="100"

                  maxIdle="30" maxWait="10000" username="scott"  password="tiger"

                  driverClassName="oracle.jdbc.OracleDriver"

                  url="jdbc:oracle:thin:@localhost:1521:news"/>

      (! 项目编写过程中,有个Server文件夹,里面是项目运行过程中从真实Tomcat中拷贝过来的,所以此处还需要将这段文件拷贝到Server目录中的 conf/context.xml中。此问题和开发工具有关,这是javaee eclipse的一个bug)

    3、配置应用程序的(WEB-INF文件夹中)web.xml文件

    (可选,如果JDBC1.6以上此步可略过)

             <resource-ref>

                       <res-ref-name>jdbc/news</res-ref-name>

                       <res-type>javax.sql.DataSource</res-type>

                       <res-auth>Container</res-auth>

             </resource-ref>

    4、使用JNDI(JAVA的命名和目录接口)获取连接对象

               public Connection getConnection2() {

                                try {

                                         //初始化上下文

                                         Context cxt=new InitialContext();

                                         //获取与逻辑名相关联的数据源对象

                                         DataSource ds=(DataSource)cxt.lookup("java:comp/env/jdbc/news");

                                         conn=ds.getConnection();

                                } catch (NamingException e) {

                                         // TODO Auto-generated catch block

                                         e.printStackTrace();

                                } catch (SQLException e) {

                                         // TODO Auto-generated catch block

                                         e.printStackTrace();

                                }

                                return conn;

                       }

  • 相关阅读:
    LOJ 2550 「JSOI2018」机器人——找规律+DP
    LOJ 2548 「JSOI2018」绝地反击 ——二分图匹配+网络流手动退流
    2019.4.24 一题(CF 809E)——推式子+虚树
    LOJ 2551 「JSOI2018」列队——主席树+二分
    bzoj 2632 [ neerc 2011 ] Gcd guessing game —— 贪心
    bzoj 1927 星际竞速 —— 最小费用最大流
    bzoj 2535 & bzoj 2109 航空管制 —— 贪心+拓扑序
    bzoj 3671 随机数生成器 —— 暴力
    bzoj 2395 Timeismoney —— 最小乘积生成树
    bzoj 3157 & bzoj 3516 国王奇遇记 —— 推式子
  • 原文地址:https://www.cnblogs.com/Theladyflower/p/4502361.html
Copyright © 2011-2022 走看看