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方式操作数据库的更多相关文章

  1. 重学 Java 设计模式:实战中介者模式「按照Mybaits原理手写ORM框架,给JDBC方式操作数据库增加中介者场景」

    作者:小傅哥 博客:https://bugstack.cn - 原创系列专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 同龄人的差距是从什么时候拉开的 同样的幼儿园.同样的小学.一样 ...

  2. 使用原生JDBC方式对数据库进行操作

    使用原生JDBC方式对数据库进行操作,包括六个步骤: 1.加载JDBC驱动程序 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM.可以通过java.lang.Class类的静态方法forNa ...

  3. jdbc原生操作数据库

    jdbc原生操作数据库流程: 第一步:Class.forName()加载数据库连接驱动: 第二步:DriverManager.getConnection()获取数据连接对象; 第三步:根据 SQL 获 ...

  4. 理解class.forName() ---使用jdbc方式链接数据库时会经常看到这句代码

    目录(?)[-] 官方文档 类装载 两种装载方法的区别 不同的类装载器 是否实例化类 在jdbc链接数据库中的应用 资源   原文地址:http://yanwushu.sinaapp.com/clas ...

  5. Win10 64位系统ADO方式操作数据库失败解决方法

    VC操作Access数据库一般通过ODBC.ADO.DAO等方式,但在我的Win10 64位操作系统中,通过ADO方式操作数据库会失败,无法读取数据.解决方法:1.首先确保Win10操作系统ado目录 ...

  6. JAVA采用JDBC连接操作数据库详解

    JDBC连接数据库概述 一.JDBC基础知识 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供 ...

  7. python_协程方式操作数据库

    # !/usr/bin/python3 # -*- coding: utf-8 -*- import requests import gevent import pymysql from gevent ...

  8. 2017.11.12 web中JDBC 方式访问数据库的技术

    JavaWeb------ 第四章 JDBC数据库访问技术 在JavaWeb应用程序中数据库访问是通过Java数据库连接(JavaDateBase Connectivity简称JDBC)数据库的链接一 ...

  9. 使用JDBC连接操作数据库

    JDBC简介 Java数据库连接(Java Database Connectivity,JDBC),是一种用于执行SQL语句的Java API,它由一组用Java编程语言编写的类和接口组成. JDBC ...

随机推荐

  1. <block/> 并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性

    <block/> 并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性

  2. 【python】-- Django路由系统(网址关系映射)、视图、模板

    Django路由系统(网址关系映射).视图.模板 一.路由系统(网址关系映射) 1.单一路由对应: 一个url对应一个视图函数(类) urls.py: url(r'^test', views.test ...

  3. MySQL中数据中设计中的范式与反范式

    设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小.但是有些时候一昧的追求范式减少冗余,反而会降低数据读写 ...

  4. 我的Android进阶之旅------>解决Bug:打开eclipse报错,发现了以元素 'd:skin' 开头的无效内容。此处不应含有子元素。

    今天来打开Eclipse 报错了,错误信息如下: [2015-08-01 09:07:43 - Android SDK] Error when loading the SDK: Error: Erro ...

  5. nodejs post请求

    const http = require('http'); const querystring = require('querystring'); const postData = querystri ...

  6. scrapy使用笔记

    新建项目 在需要新建项目的目录下发指令 scrapy startproject MySpider 其中MySpider为工程的名字,会新建一个文件夹 进入工程目录 新建一个爬虫 scrapy gens ...

  7. javascript高级语法

    一.JavaScript对象 1.js对象简介 1.1 在JavaScript中除了null和undefined以外其他的数据类型都被定义成了对象,也可以用创建对象的方法定义变量,在JavaScrip ...

  8. 常用模块之hashlib,configparser,logging模块

    常用模块二 hashlib模块 hashlib提供了常见的摘要算法,如md5和sha1等等. 那么什么是摘要算法呢?摘要算法又称为哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定 ...

  9. Funq之Lambda表达式入门

    今天接受了一个Tranning关于.net3.5 framework中的new feature. 其中最不明白的还是Lambda表达式.回来后又仔细的思考了一番,总算有点体会在这里写一下.既然是入门, ...

  10. iOS11 仿大标题 导航栏

    iOS11 SytleTitleController  仿大标题 风格 导航栏 仿 iOS11 大导航标题 风格 UI 适用范围 iOS8 + 前言 iOS11全面应用大标题设计,(岂止于大—— 比逼 ...