package com.homewoek3_4.dao;

 import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties; /**
* 数据库连接通用类
* @author Administrator
*/
public abstract class BaseDao {
private static final String path = "database.properties";
private static String DB_DRIVER;
private static String DB_URL;
private static String DB_USER;
private static String DB_PWD; protected Connection conn = null;
protected PreparedStatement ps = null;
protected ResultSet rs = null; static {
Properties pro = new Properties();
InputStream io = BaseDao.class.getClassLoader().getResourceAsStream(path);
try {
//读取配置文件
pro.load(io);
} catch (IOException e) {
e.printStackTrace();
}
DB_DRIVER = pro.getProperty("DB_DRIVER");
DB_URL = pro.getProperty("DB_URL");
DB_USER = pro.getProperty("DB_USER");
DB_PWD = pro.getProperty("DB_PWD");
try {
//加载驱动类
Class.forName(DB_DRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
* 打开数据库连接
*/
protected void openConn() {
try {
conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PWD);
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 关闭数据库连接
*/
protected void closeConn() {
try {
if (rs != null) {
rs.close();
}
if (ps != null) {
ps.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 增删改
* @param sql
* @param obj
* @return
*/
protected int executeUpdate(String sql, Object...obj) {
int result = -1;
this.openConn();
try {
ps = conn.prepareStatement(sql);
if (obj != null) {
for (int i = 0; i < obj.length; i++) {
ps.setObject(i+1, obj[i]);
}
}
result = ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}
/**
* 查询
* @param sql
* @param obj
* @return
*/
protected void executeQuery(String sql, Object...obj) {
this.openConn();
try {
ps = conn.prepareStatement(sql);
if (obj != null) {
for (int i = 0; i < obj.length; i++) {
ps.setObject(i+1, obj[i]);
}
}
rs = ps.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

创建database.properties文件,注意:后缀名一定是properties。此格式的文件在MyEclipse中图标会变,这点很容易写错,要注意。

 DB_DRIVER=com.mysql.jdbc.Driver
DB_URL=jdbc:mysql://localhost:3306/Pet?useUnicode=true&characterEncoding=utf8&useSSL=true
DB_USER=root
DB_PWD=111111

Java_JDBC连接数据库_使用读取配置文件的方式的更多相关文章

  1. C#连接数据库_使用读取配置文件的方式

    using System; using System.Collections.Generic; using System.Configuration; using System.Data.SqlCli ...

  2. python读取配置文件的方式

    python读取配置文件的方式 1.从config.ini中读取,后缀无所谓,文件名字也无所谓,不过config.ini是常用写法,所谓见名知意 config.ini内容: [global] ip = ...

  3. Java读取配置文件的方式

    Java读取配置文件的方式-笔记 1       取当前启动文件夹下的配置文件   一般来讲启动java程序的时候.在启动的文件夹下会有配置文件 classLoader.getResource(&qu ...

  4. python中读取配置文件的方式

    方式1:argparse argparse,是Python标准库中推荐使用的编写命令行程序的工具.也可以用于读取配置文件. 字典样式的配置文件*.conf 配置文件test1.conf { " ...

  5. JavaWeb中servlet读取配置文件的方式

    我们在JavaWeb中常常要涉及到一些文件的操作,比如读取配置文件,下载图片等等操作.那我们能不能采用我们以前在Java工程中读取文件的方式呢?废话不多说我们来看看下我们以前在Java工程中读取文件是 ...

  6. Spring中@Value注解使用——一种新的直接读取配置文件的方式

    1.@Value注解作用 该注解的作用是将我们配置文件的属性读出来,有@Value(“${}”)和@Value(“#{}”)两种方式. 2.@Value注解作用的两种方式 场景 假如有以下属性文件de ...

  7. SpringBoot两种读取配置文件的方式

    方式一 @Value("${custom.group}") private String customGroup; 方式二 @Autowired private Environme ...

  8. Spring读取配置文件的方式总结

    一.基于XML配置的方式 1.使用 PropertyPlaceholderConfigurer - 在 applicationContext.xml 中配置: <context:property ...

  9. scala读取jar包外配置文件的方式

    在scala的开发过程中,经常会修改程序的参数,将这些参数放到配置文件中避免了重复编译,打包的过程 这里给出读取配置文件的三种方式 方式一: 这是最常见的读取配置文件方式 val postgprop ...

随机推荐

  1. MySQL运行计划不准确 -概述

    为毛 MySQL优化器的运行计划 好多时候都不准确,不是最优的呢(cpu+io)??? 因素太多了:: 存在information_schema的信息是定期刷新上去的,好多时候不是最真的,甚至相差好大 ...

  2. MVC+ZTree实现对树的CURD及拖拽操作

    上一讲中,我们学习了如何使用zTree对一棵大树(大数据量的树型结构的数据表,呵呵,名称有点绕,但说的是事实)进行异步加载,今天这讲,我们来说说,如何去操作这棵大树,无非就是添加子节点,删除节点,编辑 ...

  3. TCP协议,UDP协议

    帅爆太阳的男人 1,TCP协议 回环地址:127.0.0.1(所有电脑都这一个默认回环地址)每个计算机都有这么一个本机地址只能被本机识别,不会被其他机器识别(因为你用这个地址传内容他就传不出去) TC ...

  4. vc字符串转换处理:(绝对精华,收集所有的例子)

    vc字符串转换处理:(绝对精华,收集所有的例子) 1.头文件中要定义宏;   #define   UNICODE         #define   _UNICODE     //////////// ...

  5. Linux MTD下获取Nand flash各个参数的过程的详细解析【转】

    本文转载自:https://www.crifan.com/files/doc/docbook/nand_get_type/release/html/nand_get_type.html 文章不错可以看 ...

  6. docker随谈

    最近在搞Docker,其实去年就听老师说过这个东西,说非常火,当时不以为然,还错把它当成docky.当时想想docky不就是一个快速启动工具么,有什么.现在想想真是惭愧... Docker的牛逼之处网 ...

  7. I.MX6 Android CAN 命令行测试

    /********************************************************************* * I.MX6 Android CAN 命令行测试 * 说 ...

  8. ASP.NET Core MVC 打造一个简单的图书馆管理系统 (修正版)(二)数据库初始化、基本登录页面以及授权逻辑的建立

    前言: 本系列文章主要为我之前所学知识的一次微小的实践,以我学校图书馆管理系统为雏形所作. 本系列文章主要参考资料: 微软文档:https://docs.microsoft.com/zh-cn/asp ...

  9. E20180218-hm-xa

    更新: 2019/02/19 原来忘记分类,把此博文归入单词类 vocabulary  n. (某一语言的) 词汇; (尤指外语教科书中附有释义的) 词汇表; grammar  n. 语法; 语法书; ...

  10. postgresql数据库基本信息查看

    切换至postgresql数据库用户pguser 或 postgres(根据自己实际情况) 1.   SELECT version(); 2.对的 2. 查看数据库大小: SELECT pg_size ...