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;
}
JSP-06-使用JDBC操作数据库的更多相关文章
- 用于JDBC操作数据库的公共类
/* * @(#)CommonSql.java 2011-9-5 * * Copyright 2011 Bianjing,All rights reserved. */ import java.sql ...
- JDBC操作数据库的学习(2)
在上一篇博客<JDBC操作数据库的学习(1)>中通过对例1,我们已经学习了一个Java应用如何在程序中通过JDBC操作数据库的步骤流程,当然我们也说过这样的例子是无法在实际开发中使用的,本 ...
- JDBC操作数据库的学习(1)
单单对数据库的操作,比如说MySQL,我们可以在命令行窗口中执行,但是一般是应用程序要操作数据库,因此我们应该在程序中的代码上体现对数据库的操作,那么使用程序应用如何操作数据库呢?那就要使用到数据库的 ...
- JDBC操作数据库的三种方式比较
JDBC(java Database Connectivity)java数据库连接,是一种用于执行上sql语句的javaAPI,可以为多种关系型数据库提供统一访问接口.我们项目中经常用到的MySQL. ...
- Spark Streaming通过JDBC操作数据库
本文记录了学习使用Spark Streaming通过JDBC操作数据库的过程,源数据从Kafka中读取. Kafka从0.10版本提供了一种新的消费者API,和0.8不同,因此Spark Stream ...
- JDBC操作数据库的基本步骤:
JDBC操作数据库的基本步骤: 1)加载(注册)数据库驱动(到JVM). 2)建立(获取)数据库连接. 3)创建(获取)数据库操作对象. 4)定义操作的SQL语句. 5)执行数据库操作. 6)获取并操 ...
- springboot学习-jdbc操作数据库--yml注意事项--controller接受参数以及参数校验--异常统一管理以及aop的使用---整合mybatis---swagger2构建api文档---jpa访问数据库及page进行分页---整合redis---定时任务
springboot学习-jdbc操作数据库--yml注意事项--controller接受参数以及参数校验-- 异常统一管理以及aop的使用---整合mybatis---swagger2构建api文档 ...
- Spring入门(十五):使用Spring JDBC操作数据库
在本系列的之前博客中,我们从没有讲解过操作数据库的方法,但是在实际的工作中,几乎所有的系统都离不开数据的持久化,所以掌握操作数据库的使用方法就非常重要. 在Spring中,操作数据库有很多种方法,我们 ...
- Java笔记(第七篇 JDBC操作数据库)
JDBC是连接数据库和java程序的桥梁,通过JDBC API可以方便地实现对各种主流数据库的操作.学习java语言,必须学习JDBC技术,因为JDBC技术实在java语言中被广泛使用的一种操作数据库 ...
- JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一
系列博文: JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一 传送门 JavaWeb_(Mybatis框架)使用Mybatis对表进行增.删.改.查操作_ ...
随机推荐
- QFile文件操作-QT
#include <QCoreApplication> #include<QFile> #include<QString> #include<QDebug&g ...
- Sparse Graph---hdu5876(set+bfs+补图求最短路)
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5876 题意:有一个含有n个点的无向图,已知图的补图含有m条边u, v:求在原图中,起点s到 ...
- Selenium2学习-016-WebUI自动化实战实例-014-Selenium 窗口选择
在日常的 WebUI 自动化测试脚本编写过程中,经常需要打开新的页面,或者在多个打开的页面之间进行切换,以对页面元素进行相应的操作,以模拟用户的行为,实现 UI 的自动化测试.在过往的时间中,经常有初 ...
- debian linux下配置lnmp环境
用到哪些就安装哪些 安装配置时遇到: deb cdrom:[Debian GNU/Linux 7.1.0 _Wheezy_ - Official amd64 CD Binary-1 20130615- ...
- String的类型的数据
字符串类型的数据也是计算机基础. var box = "lc"; var box1 = 'lc1'; //不管是单引号还双引号,都必须成对出现 1.ECMAscript规定字符串是 ...
- JavaScript: JavaScript的简介和入门代码演示
1.Javascript的发展历史介绍: javascript是指的实在网页上编写的编程语言,其主要是控制器html的动态显示效果.HTMl能带来的只是一些基本的页面的风格,而要展示的漂亮使用CSS, ...
- 10月26日 奥威Power-BI基于微软示例库(MSOLAP)快速制作管理驾驶舱 腾讯课堂开课啦
本次课是基于olap数据源的案例实操课,以微软olap示例库Adventure Works为数据基础. AdventureWorks示例数据库为一家虚拟公司的数据,公司背景为大型跨国生产 ...
- Windows网络共享权限设置
文件共享权限有两种权限设置,只要理解这两种权限设置就可以在域控灵活运用. 第一种是网络共享权限 共享权限是控制用户通过网络访问共享文件夹的手段,共享权限仅当用户通过网络访问时才有效,本地用户不受此权限 ...
- 如何让CRectTracker的m_rect不超出一定的范围,比如screen或者某个document的范围
最近在尝试做一个QQ截图那样的工具,其中一个功能就是要做一个选择框,自然用到了CRectTracker 但是有一个很关键的东西就是,拖拽CRectTracker的时候,不能让CRectTracker“ ...
- iOS UICollectionView之二(垂直滚动)
#import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @pr ...