流程图

综述

从零开始搭建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. 基于 Ant Desigin 的后台管理项目打包优化实践

    背景 按照 Ant Design 官网用 React 脚手构建的后台项目,刚接手项目的时候大概30条路由左右,我的用的机子是 Mac 8G 内存,打包完成需要耗时2分钟左右,决定优化一下. 项目技术栈 ...

  2. shell变量内字符替换和变量字符修改

    vi test.sh a= #将${a}里的第一个123替换为321 b=${a//}; echo "echo variable a" echo $a echo "ech ...

  3. 机器学习作业(六)支持向量机——Matlab实现

    题目下载[传送门] 第1题 简述:支持向量机的实现 (1)线性的情况: 第1步:读取数据文件,可视化数据: % Load from ex6data1: % You will have X, y in ...

  4. spring boot no identifier specified for entity

    定义Id 时,引用的是 import org.springframework.data.annotation.Id;  实际应该引入: import javax.persistence.Id;

  5. C编译过程

    system()调用系统命令 C语言源代码——> 预编译(1.去掉注释:2.包含文件)——> gcc -o a.o a.c 编译(编译成二进制质量)——> 链接系统库函数——> ...

  6. 154.Ajax处理csrf防御

    在普通的form表单中采用post请求提交数据,可以在form表单的method=post的form标签下面,添加一个csrf_token标签{% csrf_token %},或者是直接手动的添加一个 ...

  7. Web测试控件测试点总结

    1. https://www.testwo.com/blog/344  文本输入框测试用例 验证输入框是否trim处理 注:trim()函数作用是 去掉字符序列左边和右边的空格,中间的空格不管.如果字 ...

  8. EF中的实体关系

    导航属性的理解: 指数据库的表所对应的实体类,除了要有每个字段所对应的属性之外,还应该有一个与之有关联的表的属性,一对一的关系就是关联表的类型,一对多的关系就是关联表的类型的ICollection的泛 ...

  9. 自动构建自己的ASP.NET Core基础镜像

    在开发过程中,我们可以根据自身情况来定制自己的基础镜像,以便加快CI\CD构建速度以及提高开发体验.这里我们就以ASP.NET Core的基础镜像为例来进行讲解. 本次教程代码见开源库:https:/ ...

  10. P4562 [JXOJ2018]游戏

    题目描述 她长大以后创业了,开了一个公司. 但是管理公司是一个很累人的活,员工们经常背着可怜偷懒,可怜需要时不时对办公室进行检查. 可怜公司有 n 个办公室,办公室编号是 l 到 l+n−1 ,可怜会 ...