Java se课程设计详解——数据库接口类(1)
开始做课程设计的时候根本无从下手,后来查阅资料后发现是先从数据库开始的。整个课程设计需要用到的如下图,今天总结一下数据库接口!

数据库接口需要用到两个类,一个是DAO.java,另一个是properties.java。
1、properties.java文件
因为使用 JDBC 操作数据库,基本流程是相同的,只是操作的内容不同,因此,可将数据库的连接和有关操作封装成类,后续操作数据库时只要调用相关类的方法即可。
步骤
(1)先创建一个以properties 为后缀的文件,比如my.properties ,双击打开,然后在文件写入数据库的相关信息,如下:

(2)将数据库驱动程序、 UTL、用户名、密码等写入到数据库配置文件(即properties 文件, 它是一种特殊类型的 Map 结构,关键字与值都是字符串, 中间用“=”连接,既可以用文件保存,也可以从文件中装入)中;
(3)properties.java这个文件中的properties类专门读取配置文件中参数:用 static块加载配置文件,且提供 static 方法 String getValue(String key);
package hr.dao;
import java.io.FileInputStream;
import java.util.Properties;
public class properties {
private static Properties p = null;
static {
try {
p = new Properties();
p.load(new FileInputStream("mysql.properties"));// 加载配置文件
} catch (Exception e) {
e.printStackTrace();
}
}
// 获取键对应的值
public static String getValue(String key) {
return p.get(key).toString();
}
}
创建一个properties类的对象,调用load()方法加载配置文件,通过一个文件输入字节流来获取文件内容,getValue()方法就是方便DAO类获取文件中的内容,以达到封装的效果。
package hr.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import javax.swing.JOptionPane;
/**
* 数据库接口类
*
* @author DELL
*
*/
public class DAO {
private static DAO dao = new DAO(); // 声明DAO类的静态实例
/**
* 利用静态模块加载数据库驱动
*/
static {
try {
String driver=properties.getValue("driver");
Class.forName(driver); // 加载数据库驱动
} catch (ClassNotFoundException e) {
JOptionPane.showMessageDialog(null, "数据库驱动加载失败,请将驱动包配置到构建路径中。\n" + e.getMessage());
e.printStackTrace();
}
}
/**
* 获得数据库连接的方法
*
* @return Connection
*/
public static Connection getConnection() {//一定要声明为静态的方法
try {
Connection conn = null; // 定义数据库连接
String url = properties.getValue("url"); // 数据库admin_class
String username = properties.getValue("user"); // 数据库的用户名
String password = properties.getValue("pwd"); // 数据库密码
conn = DriverManager.getConnection(url, username, password); // 建立连接
return conn; // 返回连接
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "数据库连接失败。请检查数据库用户名和密码是否正确。" + e.getMessage());
return null;
}
}
public static void main(String[] args) {
System.out.println(getConnection());//后台打印可以检测是否连接成功
}
}
同样DAO类把连接数据库类的操作也封装了起来,如果程序中哪里需要连接数据库直接调用DAO的getgetConnection()方法即可。需要注意:getConnection()方法已经声明为静态(全局)方法,如果不声明为static,则其他类无法调用这个方法!
附上一个课程设计的视频!哈哈,也可以关注我公众号【物联网技术猿】
[video(video-geynaYB2-1576209828594)(type-bilibili)(url-https://player.bilibili.com/player.html?aid=79055224)(image-https://ss.csdn.net/p?http://i2.hdslb.com/bfs/archive/bf4a42da69f85e7830417705b1083d4a7c0a71dd.jpg)(title-java se 课程设计)]
Java se课程设计详解——数据库接口类(1)的更多相关文章
- C++课程设计详解-12306的模拟实现
目录 设计思路... 3 思路分析:.... 3 数据组织:.... 4 具体功能实现过程... 4 管理端具体功能实现:.... 4 用户端具体功能实现:.... 5 调试截图和调试过程中遇到的问题 ...
- 《JAVA高并发编程详解》-类的加载过程简介
- Java生鲜电商平台-Java后端生成Token架构与设计详解
Java生鲜电商平台-Java后端生成Token架构与设计详解 目的:Java开源生鲜电商平台-Java后端生成Token目的是为了用于校验客户端,防止重复提交. 技术选型:用开源的JWT架构. 1. ...
- java反射机制深入详解
java反射机制深入详解 转自:http://www.cnblogs.com/hxsyl/archive/2013/03/23/2977593.html 一.概念 反射就是把Java的各种成分映射成 ...
- java web.xml配置详解(转)
源出处:java web.xml配置详解 1.常规配置:每一个站的WEB-INF下都有一个web.xml的设定文件,它提供了我们站台的配置设定. web.xml定义: .站台的名称和说明 .针对环境参 ...
- java.util.Scanner应用详解++扫描控制台输入
java.util.Scanner应用详解 java.util.Scanner是Java5的新特征,主要功能是简化文本扫描.这个类最实用的地方表现在获取控制台输入,其他的功能都很鸡肋,尽管Java ...
- (转)java.util.Scanner应用详解
java.util.Scanner应用详解 java.util.Scanner是Java5的新特征,主要功能是简化文本扫描.这个类最实用的地方表现在获取控制台输入,其他的功能都很鸡肋,尽管Java ...
- java并发编程 | 锁详解:AQS,Lock,ReentrantLock,ReentrantReadWriteLock
原文:java并发编程 | 锁详解:AQS,Lock,ReentrantLock,ReentrantReadWriteLock 锁 锁是用来控制多个线程访问共享资源的方式,java中可以使用synch ...
- java ssl https 连接详解 生成证书 tomcat keystone
java ssl https 连接详解 生成证书 我们先来了解一下什么理HTTPS 1. HTTPS概念 1)简介 HTTPS(全称:Hypertext Transfer Protocol over ...
随机推荐
- HeadFirst设计模式---装饰者
定义装饰者模式 装饰者模式动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案.这句话摘自书中,给人读得很生硬难懂.通俗地来说,装饰者和被装饰者有相同的父类,装饰者的行为组装着 ...
- 【转】面试还搞不懂redis,快看看这40道Redis面试题(含答案和思维导图)
———————————————— 版权声明:本文为CSDN博主「程序员追风」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog. ...
- pandas - groupby 深入及数据清洗案例
import pandas as pd import numpy as np 分割-apply-聚合 大数据的MapReduce The most general-purpose GroupBy me ...
- 1021--RemoveOutermostParentheses
public class RemoveOutermostParentheses { /* 解法一:栈,( 进栈,) 出栈,栈为空时,则找到原语,然后去括号. */ public String remo ...
- Linux 信号量之Posix有名字的信号量
信号量(semaphore),也和互斥锁一样提供了线程间或者进程间的同步功能. 信号量有三种: Posix有名字的信号量 Posix基于内存的信号量 System V信号量 信号量比互斥锁高级,互斥锁 ...
- odoo10学习笔记十一:视图综述
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/11189322.html 一:视图标签等公共结构 name (必选) 用于通过名字查找标签 model: 与v ...
- 数据库操作之DBUtils
概述 DBUtils是Java编程中的数据库操作实用工具,小巧简单实用. DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码. DBUtils三个核心功能介绍 QueryRunne ...
- appium---app输入中文
在app自动化的过程中,都会遇到输入中文的问题,今天总结下app自动化如何输入中文 app输入中文 在启动app的时候在参数里面添加unicodeKeyboard和resetKeyboard后,运行代 ...
- matlab的clc,close,close all,clear,clear all命令
clc:清除命令窗口的内容,对工作环境中的全部变量无任何影响 close:关闭当前的Figure窗口 close all:关闭所有的Figure窗口 clear:清除工作空间的所有变量 clear a ...
- itsdangerous模块
使用场景: 在取消订阅时,可以在URL里序列化并且签名一个用户的ID或在任何的激活账户的链接或类似的情形下使用.这种情况下不需要生成一个一次性的token并把它们存到数据库中. 被签名的对象可以被存入 ...