数据库程序接口——JDBC——功能第一篇——第一个程序
流程图

综述
从零开始搭建JDBC环境。通过创建Java项目,在项目中,通过java程序执行SQL,并处理返回的结果。本文通过执行 select 1 from dual 语句来测试,并输出相结果集。首先通过简单java项目的方式。之后创建Maven项目,通过在Spring中配置C3P0数据源的方式。
简单项目方式
- 新建Java项目,名称随便起,例如JDBCTest。
- 导入数据库驱动类jar包。以Oracle数据库为例(前提是已经安装了Oracle数据库),Oralce驱动类jar包为ojdbc6.jar。位置在${Oracle_Home}/product/11.2.0/dbhome_1/jdbc/lib,其中${Oracle_home}为数据库的安装路径。
- 编写测试程序,代码如下
/**
* 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——功能第一篇——第一个程序的更多相关文章
- 数据库程序接口——JDBC——功能第二篇——数据源之C3P0数据源
综述 C3P0由三部分内容组成.实例化对象,各配置项的含义,以及加载配置项的方式. 实例化对象的方式有三种,第一种方式直接new ComboPooledDataSource,第二种方式使用工厂类Dat ...
- 数据库程序接口——JDBC——功能第四篇——事务之Spring事务
综述 事务的实现方式有三种,JTA,Spring事务,Web Container方式.本篇讲述Spring事务. Spring事务分为两个部分核心对象,Spring事务的实现方式. Spring事务实 ...
- 数据库程序接口——JDBC——功能第五篇——批量处理
综述 批量处理一般指批量插入,批量更新,删除通过可以指定where条件实现.批量插入的实现方式有三种类型.statement,preparedStatement,callableStatement. ...
- 第一篇——第一文 SQL Server 备份基础
原文:第一篇--第一文 SQL Server 备份基础 当看这篇文章之前,请先给你的所有重要的库做一次完整数据库备份.下面正式开始备份还原的旅程. 原文出处: http://blog.csdn.net ...
- spring boot实战(第一篇)第一个案例
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] spring boot实战(第一篇)第一个案例 前言 写在前面的话 一直想将spring boot相关内容写成一个系列的 ...
- 数据库程序接口——JDBC——API解读第一篇——建立连接的核心对象
结构图 核心对象 Driver Java通过Driver接口表示驱动,每种类型的数据库通过实现Driver接口提供自己的Driver实现类. Driver由属性,操作,事件三部分组成. 属性 公共属性 ...
- 数据库程序接口——JDBC——初篇——目录
目录 建立连接 核心对象 Driver DriverManager Connection DataSource 常用功能 第一个程序 C3P0数据源 DBCP数据源 事务之Spring事务 执行SQL ...
- 数据库程序接口——JDBC——API解读第二篇——执行SQL的核心对象
结构图 核心对象 Statement Statement主要用来执行SQL语句.它执行SQL语句的步骤为: 第一步:创建statement对象. 第二步:配置statement对象,此步骤可以忽略. ...
- 数据库程序接口——JDBC——API解读第三篇——处理结果集的核心对象
核心对象 处理结果集的核心对象有ResultSet和RowSet.其中ResultSet指定关系型数据库的结果集,RowSet更为抽象,凡是由行列组成的数据都可以. ResultSet ResultS ...
随机推荐
- 项目打jar包和运行
打包成jar包和部署,运行. 1.在pom.xml中加入 <packaging>jar</packaging> <groupId>com.demo02</g ...
- vue配置开发,测试,生产环境api
npm run build 调用开发环境接口,打包开发环境npm run build:test 调用测试环境接口,打包测试环境npm run build:prod 调用生产环境接口,打包生产环境 vu ...
- springBoot 发送邮件图片不显示
解决方案 MimeMessageHelper 的执行顺序错了,先执行 setText() 然后执行 addInline() 添加图片 <img src="cid:p03"/& ...
- 关于在Ubuntu中无法使用tree命令的原因
初学linux系统的时候使用的是Ubuntu的操作系统,边看视频边学习,却发现很多命令行在自己使用的时候没有效果,只会盲目的百度,后面回过头来仔细一看才发现,原来终端早就给你答案了,只是自己一看到英语 ...
- Eclipse创建JSP、HTML、CSS文件默认字符集设置成UTF-8
问题:在使用eclipse的时候总是发现新创建的JSP文件.HTML文件等默认总是ISO-8859-1,每次都要修改成自己使用的utf-8的,很是麻烦,因此在网上查看了一下发现是可以修改字符集的默认值 ...
- C++构造函数和重载函数运算符如何区分
构造函数和重载函数运算符如何区分: class Distance { private: int feet; int inches; public: Distance(){ feet = ; inche ...
- 为什么 K8s 在阿里能成功(转)
为什么 K8s 在阿里能成功?| 问底中国 IT 技术演进 作者:曾凡松 阿里云云原生应用平台高级技术专家张振 阿里云云原生应用平台高级技术专家 导读:本文描述了阿里巴巴在容器管理领域的技术演进历 ...
- AcWing 1019. 庆功会 多重背包求max
//多重背包 max #include <iostream> using namespace std; ; int n, m; int f[N]; int main() { cin > ...
- 题解 【Codeforces988E】Divisibility by 25
本题是数论好题! 首先我们需要了解一个关于数论的性质: 一个数只要后两位能被25(或4)整除,这个数就能被25(或4)整除. 同理,后三位:(或8).后四位:(或16)亦是如此. 所以,我们只需要判断 ...
- visual env VS conda environment of python
1. There's two types of python environment in pycharm: virtualenv Environment conda environment For ...