JDBC方式操作数据库
1.读取配置文件,我将配置信息写入配置文件(.properties)中,方便后期数据库变更后或者其他项目使用,扩展性好些,尽量避免硬编码.
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
username=test
password=test
根据key获取配置文件方法之前的blog中有写.
2.获取数据库连接
/**
* 实例化数据库连接
* @return
*/
private Connection getConnection() {
String fileName = "thirdconfig.properties";
Connection conn = null;
try {
String driver = PropertiesUtil.readPropertiesInfo(fileName, "driver");
Class.forName(driver);
String url = PropertiesUtil.readPropertiesInfo(fileName, "url");
String username = PropertiesUtil.readPropertiesInfo(fileName, "username");
String password = PropertiesUtil.readPropertiesInfo(fileName, "password");
conn = DriverManager.getConnection(url, username, password);
} catch (Exception e) {
logger.error("数据库连接失败", e);
}
return conn;
}
3查询数据总量
private int getTotalCount(Connection conn, PreparedStatement prep) {
ResultSet rs = null;
int rowNum = 0;
String querySql = "select count(1) from BACKUP_ALARM_INFO";
try {
prep = conn.prepareStatement(querySql);
rs = prep.executeQuery();
if (rs.next()) {
rowNum = rs.getInt(1);
}
} catch (SQLException e) {
logger.error("执行查询出错", e);
} finally {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
}
rs = null;
}
}
return rowNum;
}
4JDBC读取PG数据库
driver=org.postgresql.Driver
url=jdbc:postgresql://localhost:5432/postgres
username=postgres
password=postgres
querysql=select count(*) from test where id='#'
private boolean validatePgExist(String hashValue) {
String driver = IncrementSysConfigHandler.readSystemConfig("driver");
String url = IncrementSysConfigHandler.readSystemConfig("url");
String username = IncrementSysConfigHandler.readSystemConfig("username");
String password = IncrementSysConfigHandler.readSystemConfig("password");
String sqlStr = IncrementSysConfigHandler.readSystemConfig("querysql");
sqlStr = sqlStr.replace("#", hashValue);
Connection c = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName(driver);
c = DriverManager.getConnection(url, username, password);
c.setAutoCommit(false);
logger.info("Opened database successfully");
stmt = c.createStatement();
rs = stmt.executeQuery(sqlStr);
while (rs.next()) {
String result = rs.getString(1);
int count = Integer.valueOf(result);
if (count > 0) {
return true;
}
}
} catch (Exception e) {
logger.error(e.getClass().getName() + ": " + e.getMessage());
} finally {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
c.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return false;
}
JDBC方式操作数据库的更多相关文章
- 重学 Java 设计模式:实战中介者模式「按照Mybaits原理手写ORM框架,给JDBC方式操作数据库增加中介者场景」
作者:小傅哥 博客:https://bugstack.cn - 原创系列专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 同龄人的差距是从什么时候拉开的 同样的幼儿园.同样的小学.一样 ...
- 使用原生JDBC方式对数据库进行操作
使用原生JDBC方式对数据库进行操作,包括六个步骤: 1.加载JDBC驱动程序 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM.可以通过java.lang.Class类的静态方法forNa ...
- jdbc原生操作数据库
jdbc原生操作数据库流程: 第一步:Class.forName()加载数据库连接驱动: 第二步:DriverManager.getConnection()获取数据连接对象; 第三步:根据 SQL 获 ...
- 理解class.forName() ---使用jdbc方式链接数据库时会经常看到这句代码
目录(?)[-] 官方文档 类装载 两种装载方法的区别 不同的类装载器 是否实例化类 在jdbc链接数据库中的应用 资源 原文地址:http://yanwushu.sinaapp.com/clas ...
- Win10 64位系统ADO方式操作数据库失败解决方法
VC操作Access数据库一般通过ODBC.ADO.DAO等方式,但在我的Win10 64位操作系统中,通过ADO方式操作数据库会失败,无法读取数据.解决方法:1.首先确保Win10操作系统ado目录 ...
- JAVA采用JDBC连接操作数据库详解
JDBC连接数据库概述 一.JDBC基础知识 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供 ...
- python_协程方式操作数据库
# !/usr/bin/python3 # -*- coding: utf-8 -*- import requests import gevent import pymysql from gevent ...
- 2017.11.12 web中JDBC 方式访问数据库的技术
JavaWeb------ 第四章 JDBC数据库访问技术 在JavaWeb应用程序中数据库访问是通过Java数据库连接(JavaDateBase Connectivity简称JDBC)数据库的链接一 ...
- 使用JDBC连接操作数据库
JDBC简介 Java数据库连接(Java Database Connectivity,JDBC),是一种用于执行SQL语句的Java API,它由一组用Java编程语言编写的类和接口组成. JDBC ...
随机推荐
- Hystrix 基于注解开发
不对地方,请指出!相互学习! 背景:Hystrix 没有无参构造函数,所以Spring管理bean时候没办法进行管理, 每个类都进行编码 个人感觉不方便,基于注解开发!方便速度快,不侵入代码!引入的j ...
- iOS 多线程之 NSThread的基本使用
一个NSThread对象就代表一条线程 下面是NSThread开启线程的方法 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEv ...
- jquery拓展插件开发
学习参考网址整理: http://blog.csdn.net/chenxi1025/article/details/52222327 http://www.cnblogs.com/ellisonDon ...
- MySQL复制(一):复制的基本步骤
从这里开始,对复制的内容开始做一些详细的描述,复制从简单到入门 复制最简单的模式如下 基本的三个简单步骤 1 配置一个服务器为master 2 配置一个服务器为slave 3 将slave连接到mas ...
- 006-搭建框架-实现AOP机制【三】AOP技术
2.3.spring+aspectj Spring在集成了aspectj后,同时也保留了以上的切面与代理的配置方式. 将Spring与aspectj集成与直接使用aspectj不同,不需要定义Aspe ...
- 集成富文本编辑器XSS预防过滤措施
# https://github.com/phith0n/python-xss-filter import re import copy from html.parser import HTMLPar ...
- 2.3 使用ARDUINO控制MC20进行GPRS的TCP通讯
需要准备的硬件 MC20开发板 1个 https://item.taobao.com/item.htm?id=562661881042 GSM/GPRS天线 1根 https://item.taoba ...
- PAT 天梯赛 L1-023. 输出GPLT 【水】
题目链接 https://www.patest.cn/contests/gplt/L1-023 AC代码 #include <iostream> #include <cstdio&g ...
- iOS 点击注释图标 弹出对应解释
需求:如题目 接上一篇的开发内容 效果图: 这种情况存在tableView 的一个cell中. 要点 1, 弹出的对应解释 要在可视区域,并且小尖角 要指着 图片 2, 文本不能过高 有极大高度 ...
- VSCode eslint校验 tab改为2个空格
修改:.eslintrc.json