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;

}

JSP-06-使用JDBC操作数据库的更多相关文章

  1. 用于JDBC操作数据库的公共类

    /* * @(#)CommonSql.java 2011-9-5 * * Copyright 2011 Bianjing,All rights reserved. */ import java.sql ...

  2. JDBC操作数据库的学习(2)

    在上一篇博客<JDBC操作数据库的学习(1)>中通过对例1,我们已经学习了一个Java应用如何在程序中通过JDBC操作数据库的步骤流程,当然我们也说过这样的例子是无法在实际开发中使用的,本 ...

  3. JDBC操作数据库的学习(1)

    单单对数据库的操作,比如说MySQL,我们可以在命令行窗口中执行,但是一般是应用程序要操作数据库,因此我们应该在程序中的代码上体现对数据库的操作,那么使用程序应用如何操作数据库呢?那就要使用到数据库的 ...

  4. JDBC操作数据库的三种方式比较

    JDBC(java Database Connectivity)java数据库连接,是一种用于执行上sql语句的javaAPI,可以为多种关系型数据库提供统一访问接口.我们项目中经常用到的MySQL. ...

  5. Spark Streaming通过JDBC操作数据库

    本文记录了学习使用Spark Streaming通过JDBC操作数据库的过程,源数据从Kafka中读取. Kafka从0.10版本提供了一种新的消费者API,和0.8不同,因此Spark Stream ...

  6. JDBC操作数据库的基本步骤:

    JDBC操作数据库的基本步骤: 1)加载(注册)数据库驱动(到JVM). 2)建立(获取)数据库连接. 3)创建(获取)数据库操作对象. 4)定义操作的SQL语句. 5)执行数据库操作. 6)获取并操 ...

  7. springboot学习-jdbc操作数据库--yml注意事项--controller接受参数以及参数校验--异常统一管理以及aop的使用---整合mybatis---swagger2构建api文档---jpa访问数据库及page进行分页---整合redis---定时任务

    springboot学习-jdbc操作数据库--yml注意事项--controller接受参数以及参数校验-- 异常统一管理以及aop的使用---整合mybatis---swagger2构建api文档 ...

  8. Spring入门(十五):使用Spring JDBC操作数据库

    在本系列的之前博客中,我们从没有讲解过操作数据库的方法,但是在实际的工作中,几乎所有的系统都离不开数据的持久化,所以掌握操作数据库的使用方法就非常重要. 在Spring中,操作数据库有很多种方法,我们 ...

  9. Java笔记(第七篇 JDBC操作数据库)

    JDBC是连接数据库和java程序的桥梁,通过JDBC API可以方便地实现对各种主流数据库的操作.学习java语言,必须学习JDBC技术,因为JDBC技术实在java语言中被广泛使用的一种操作数据库 ...

  10. JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一

    系列博文: JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一 传送门 JavaWeb_(Mybatis框架)使用Mybatis对表进行增.删.改.查操作_ ...

随机推荐

  1. Android OpenGL ES 开发教程 从入门到精通

    感谢,摘自:http://blog.csdn.net/mapdigit/article/details/7526556 Android OpenGL ES 简明开发教程 Android OpenGL ...

  2. Linux下对各种压缩文件处理

    Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的.生成tar包后,就可以用其它的程序来进 行压缩了,所以首先就来讲讲ta ...

  3. SQL 2008 RAISERROR语法在SQL 2012/2014不兼容问题

    原文 旧的RAISERROR语法在SQL 2012不兼容问题 raiserror 写法: SQL 2008: raiserror 55030 'text error' SQL 2012: raiser ...

  4. ArcGIS API for Silverlight中加载Google地形图(瓦片图)

    原文:ArcGIS API for Silverlight中加载Google地形图(瓦片图) 在做水利.气象.土地等行业中,若能使用到Google的地形图那是再合适不过了,下面就介绍如何在ArcGIS ...

  5. hdu1045 Fire Net

    在一张地图上建立碉堡(X),要求每行没列不能放两个,除非中间有强挡着.求最多能放多少个碉堡 #include<iostream> #include<cstdio> #inclu ...

  6. 【转】Android 获得view的宽和高

     转自:http://blog.csdn.net/yangdeli888/article/details/25405263 Android 获得view的宽和高 分类: android 技术点项目20 ...

  7. Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never diffe

    class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } public class ...

  8. java.lang.IllegalArgumentException: No converter found for return value of type: class Person

    在http://www.cnblogs.com/winner-0715/p/6033462.html我们讲到三个条件就能实现SpringMVC返回json的功能 但是按照这三个条件配置后,运行出现了错 ...

  9. GCD Demo (先存起来自己看)

    // 原代码块一 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // 原代码块二 N ...

  10. saltstack之(二)软件包下载安装

    由于salt组件的安装依赖较多,最好使用yum源安装(不建议使用源码安装).由于试验环境限制,不能使用网络,故增加了实验的难度.下面分可以访问internet和不可以访问internet两方面介绍sa ...