数据库程序接口——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 ...
随机推荐
- 转载:openmax基本概念
https://yellowmax.blog.csdn.net/article/details/78080168 https://yellowmax.blog.csdn.net/article/det ...
- vscode设置成中文
打开 VS Code Ctrl + Shift +p打开搜索框 搜索框内输入Configure Display Language 回车 修改代码中“locale”后面引号内内容为zh-CH 重新启动V ...
- 5G将至,4G降速:是谣言还是真相?
畅用移动智能终端设备,早已成为大众日常生活中的一部分.卫报专栏作家伯克曼提到,"据估计,70%的人会抱着手机或iPad刷资讯入睡."当移动智能终端变得如此重要时,与之息息相关的网络 ...
- js替换从excel复制的文本的换行
var newStr=oldStr.replace(/\n/g,','); 该代码即可将文本中的换行替换为, oldStr为从excel复制过来的值 newStr为替换后的值
- Opencv之像素值的获取
灰度图像${\rm{M}} \times {\rm{N}}$的像素矩阵值为0~255,像素值越大越亮.${{\rm{I}}_{{\rm{i}}{\rm{j}}}}$,i表示行的位置,j 表示列的位置即 ...
- TCL 包
包用于创建代码的可重用单元. 程序包提供特定功能的文件集合. 1.创建代码 2.创建包index 打开tclsh,切换到HelloWorld目录,并使用pkg_mkindex 命令创建索引文件. %c ...
- JS高级---正则表达式
正则表达式 也叫规则表达式, 按照一定的规则组成的一个表达式, 这个表达式的作用主要是匹配字符串的 "我的电话:10086,他的电话:10010,你的电话:10000" 正则 ...
- 网易云信融合CDN方案及实践
日前,网易云信视频云架构师席智勇在第七届GFIC全球家庭互联网大会进行了题为<网易云信融合CDN方案及实践>的分享,以下是演讲内容回顾. 图为 网易云信视频云架构师席智勇 CDN所面临的问 ...
- Execl导入系统
文件导入功能 前台代码: Content\JS\jquery.ajaxfileupload.js<script src="~/Content/JS/jquery.ajaxfileupl ...
- 通过css修改input的边框
input{ border:1px solid #d2d2d2; background-color:transparent; } 可以看到主要是把背景色调成透明的颜色,从而来进行边框的设置