流程图

综述

从零开始搭建JDBC环境。通过创建Java项目,在项目中,通过java程序执行SQL,并处理返回的结果。本文通过执行 select 1 from dual 语句来测试,并输出相结果集。首先通过简单java项目的方式。之后创建Maven项目,通过在Spring中配置C3P0数据源的方式。

简单项目方式

  1. 新建Java项目,名称随便起,例如JDBCTest。
  2. 导入数据库驱动类jar包。以Oracle数据库为例(前提是已经安装了Oracle数据库),Oralce驱动类jar包为ojdbc6.jar。位置在${Oracle_Home}/product/11.2.0/dbhome_1/jdbc/lib,其中${Oracle_home}为数据库的安装路径。
  3. 编写测试程序,代码如下
 /**
* java与数据库交互的简单示例,运行select 1 from dual;
* @throws SQLException
*/
public static void RunSQLTest() throws SQLException
{
// 驱动方式获取Connection对象
Connection conn = getConnectionByDriver();
// 创建Statement对象
Statement statement = conn.createStatement();
// sql语句
String sql = "select 1 from dual";
// 获取结果集对象
ResultSet rs = statement.executeQuery(sql);
while(rs.next())
{
System.out.println("执行"+sql+"的运行结果为:"+rs.getInt(1));
}
close(rs,statement,conn);
} /**
* 通过Driver驱动方式,创建Connection对象
* @return
* @throws SQLException
*/
public static Connection getConnectionByDriver() throws SQLException
{
// Driver方式
OracleDriver driver = new OracleDriver();
// jdbcUrl地址:格式为jdbc:subProtocol:subName
String jdbcUrl = "jdbc:oracle:thin:@localhost:1521:ORCL";
// 建立连接属性
Properties prop = new Properties();
// 指定用户名和密码
prop.setProperty("user", "system");
prop.setProperty("password", "password");
// 建立连接
Connection conn = driver.connect(jdbcUrl, prop);
return conn;
}
/**
* DriverManager的方式获取Connection
* @return
* @throws ClassNotFoundException 无法加载驱动类异常
* @throws SQLException
*/
public static Connection getConnectionByDriverManager() throws ClassNotFoundException, SQLException
{
// 驱动类名称
String driverClassName = "oracle.jdbc.OracleDriver";
// jdbc地址
String jdbcUrl = "jdbc:oracle:thin:@localhost:1521:ORCL";
// 加载驱动,这一过程伴随着驱动注册
Class.forName(driverClassName);
// 建立连接
Connection conn = DriverManager.getConnection(jdbcUrl, "system", "password");
return conn;
}
/**
* 关闭Connection,statement,Resultset等对象
* @param rs
* @param statement
* @param conn
* @throws SQLException
*/
private static void close(ResultSet rs, Statement statement, Connection conn)
throws SQLException
{
rs.close();
statement.close();
conn.close();
}

异常总结:

lThe Network Adapter could not establish the connection:监听程序没有打开。

l  TNS:listener does not currently know of SID given in connect descriptor:jdbcUrl存在错误。

Spring配数据源方式

第一步:创建Maven项目,随便命名,例如MasterJDBC

第二步:导入数据库驱动jar包,参考简单项目方式第二步。

第三步:配置pom文件,配置Spring依赖,C3P0依赖

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<springVersion>4.3.7.RELEASE</springVersion>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${springVersion}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${springVersion}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${springVersion}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${springVersion}</version>
</dependency>
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
</dependencies>

第四步: 在Spring文件中配置C3P0数据源

 <!--引入properties文件-->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" value="jdbc.properties"/>
</bean>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClass}"></property>
<property name="jdbcUrl" value="${jdbc.url}"></property>
<property name="user" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>

jdbc.properties文件的内容如下

jdbc.driverClass=oracle.jdbc.driver.OracleDriver

jdbc.url=jdbc:oracle:thin:@localhost:1521:masteroracle

jdbc.username=system

jdbc.password=password

第五步:编写测试程序

  * 验证spring配置的C3P0数据源
* @throws SQLException
*/
public static void runSpringSQLTest() throws SQLException
{
// spring的ApplicationContext对象
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring-context.xml");
// C3P0数据源对象
ComboPooledDataSource dataSource = context.getBean("dataSource", ComboPooledDataSource.class);
// Connection连接对象
Connection conn = dataSource.getConnection();
// 创建Statement对象
Statement statement = conn.createStatement();
// SQL语句
String sql = "select 1 from dual";
// 结果集ResultSet
ResultSet rs = statement.executeQuery(sql);
while (rs.next())
{
System.out.println("执行" + sql + "语句的结果为:" + rs.getInt(1));
}

至此环境搭建完成。之后博客所有的内容都以此为基础。

数据库程序接口——JDBC——功能第一篇——第一个程序的更多相关文章

  1. 数据库程序接口——JDBC——功能第二篇——数据源之C3P0数据源

    综述 C3P0由三部分内容组成.实例化对象,各配置项的含义,以及加载配置项的方式. 实例化对象的方式有三种,第一种方式直接new ComboPooledDataSource,第二种方式使用工厂类Dat ...

  2. 数据库程序接口——JDBC——功能第四篇——事务之Spring事务

    综述 事务的实现方式有三种,JTA,Spring事务,Web Container方式.本篇讲述Spring事务. Spring事务分为两个部分核心对象,Spring事务的实现方式. Spring事务实 ...

  3. 数据库程序接口——JDBC——功能第五篇——批量处理

    综述 批量处理一般指批量插入,批量更新,删除通过可以指定where条件实现.批量插入的实现方式有三种类型.statement,preparedStatement,callableStatement. ...

  4. 第一篇——第一文 SQL Server 备份基础

    原文:第一篇--第一文 SQL Server 备份基础 当看这篇文章之前,请先给你的所有重要的库做一次完整数据库备份.下面正式开始备份还原的旅程. 原文出处: http://blog.csdn.net ...

  5. spring boot实战(第一篇)第一个案例

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   spring boot实战(第一篇)第一个案例 前言 写在前面的话 一直想将spring boot相关内容写成一个系列的 ...

  6. 数据库程序接口——JDBC——API解读第一篇——建立连接的核心对象

    结构图 核心对象 Driver Java通过Driver接口表示驱动,每种类型的数据库通过实现Driver接口提供自己的Driver实现类. Driver由属性,操作,事件三部分组成. 属性 公共属性 ...

  7. 数据库程序接口——JDBC——初篇——目录

    目录 建立连接 核心对象 Driver DriverManager Connection DataSource 常用功能 第一个程序 C3P0数据源 DBCP数据源 事务之Spring事务 执行SQL ...

  8. 数据库程序接口——JDBC——API解读第二篇——执行SQL的核心对象

    结构图 核心对象 Statement Statement主要用来执行SQL语句.它执行SQL语句的步骤为: 第一步:创建statement对象. 第二步:配置statement对象,此步骤可以忽略. ...

  9. 数据库程序接口——JDBC——API解读第三篇——处理结果集的核心对象

    核心对象 处理结果集的核心对象有ResultSet和RowSet.其中ResultSet指定关系型数据库的结果集,RowSet更为抽象,凡是由行列组成的数据都可以. ResultSet ResultS ...

随机推荐

  1. webservice后台起调试

    https://blog.csdn.net/smile00_0/article/details/72763114

  2. chrome js报错Uncaught SyntaxError: Unexpected string

    个人博客 地址:http://www.wenhaofan.com/article/20180912123136 js报错,最后发现是$(function(){})这部分()不完整 $(function ...

  3. CenterOS下 Mysql数据库中数据字符乱码

    1.修改数据库字符编码 mysql> alter database mydb character set utf8 ; 2.创建数据库时,指定数据库的字符编码 mysql> create ...

  4. c语言 printf格式化输出

    #include <iostream> #include<stdio.h> #include <cstring> using namespace std; int ...

  5. zabbix4.4.2安装部署

    1.下载阿里的源,执行 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 2 ...

  6. xshell连接本地虚拟机中的centos

    1. 一开始Xshell连接不上(设置为DHCP 动态IP)虚拟机上的centos8 参考这篇博文,将centos上的DHCP改为static 静态IP xshell连接本地虚拟机中的centos 2 ...

  7. 动态规划 ---- 最长公共子序列(Longest Common Subsequence, LCS)

    分析: 完整代码: // 最长公共子序列 #include <stdio.h> #include <algorithm> using namespace std; ; char ...

  8. Linux - Shell - diff

    概述 linux diff 命令 背景 一个 比较文本差异 的工具 老实说, 之前 git/gitlab 上比较代码差异, 我是有点懵逼的 diff 命令, 可以作为理解这些东西的基础 diff 命令 ...

  9. Python 入门【一】Python 初识及学习资料

    Python 初识及学习路线: CodeCademy Python 在线教学: 廖雪峰 Python 2.7 教程: 廖雪峰 Python 3.0 教程: Python 官方文档(2.7~3.7:英文 ...

  10. 基于Java+HttpClient+TestNG的接口自动化测试框架(八)------ 针对文件的处理

    在实际的接口测试中,有时需要根据情况进行文件的上传和下载.在文件数量比较小的时候,我们当然可以直接处理(比如若干个接口都用一个文件).但是,如果我们上传的文件需要使用不同文件夹里不同的文件,而且数量又 ...