两个数据库之间的数据同步(学工系统和oa系统信息同步)

本文介绍了如何实现两个数据库——学工系统和OA系统之间的数据同步。涉及内容包括JDBC、数据库连接池、线程以及比较并更新数据库记录的方法。通过比较两个Map类型的链表,保存不同部分并生成SQL语句,实现数据的更新和插入,确保数据一致性。
摘要由CSDN通过智能技术生成


问题描述

现有两个数据库,xg系统和oa系统。要实现这两个数据库之间的数据同步。学⼯系统在进⾏新增或者变更时,需要在OA系统中进⾏相应变化;

需要了解的:(jdbc,数据库,线程,连接池,集合)

数据库部分:

  1. 创建表
#新建数据库
Create database oa;
Create database xg;
#数据库查询语句
drop table if EXISTS data_pjzy;
drop table if EXISTS data_pjgs;
DROP TABLE if EXISTS data_pjsq;
DROP TABLE if EXISTS data_xscj;
DROP TABLE if EXISTS data_xsxx;
#学生信息表
CREATE table data_xsxx(
id VARCHAR(32) PRIMARY KEY COMMENT '主键',
xh VARCHAR(255)  COMMENT '学号',
xm VARCHAR(255)  COMMENT '姓名',
bj VARCHAR(255)  COMMENT '班级',
zy VARCHAR(255)  COMMENT'专业',
yx VARCHAR(255)  COMMENT '院系',
xb VARCHAR(255)  COMMENT '性别',
csrq datetime COMMENT '出生日期',
rxsj datetime  COMMENT'入学时间',
mz VARCHAR(255) COMMENT '民族'
);

#学生成绩表
CREATE table data_xscj(
id varchar(32) primary key COMMENT '主键',
xsid varchar(255) COMMENT '学生主键',
xk varchar(255) COMMENT '学科',
cj varchar(255) COMMENT '学科成绩',
lrsj datetime COMMENT '录入时间'
);

#评奖申请表
create table data_pjsq(
id varchar(32) primary key comment '主键',
sqjx VARCHAR(255) comment '申请奖项' ,
xsid VARCHAR(255) comment '学生主键' ,
sqsj datetime comment '申请时间' ,
shzt VARCHAR(4) comment '审核状态 100' 
);
#评奖公示表
create table data_pjgs(
id varchar(32) primary key COMMENT '主键',
sqid varchar(255) COMMENT '申请主键',
gsbz varchar(255) COMMENT '公示备注',
gssj datetime COMMENT '申请时间'
);
#评奖质疑表
CREATE TABLE data_pjzy(
id VARCHAR(32) PRIMARY KEY COMMENT '主键',
gsid varchar(255) COMMENT '公示主键',
zysm LONGTEXT COMMENT '质疑说明',
zysj datetime COMMENT '质疑时间');

java部分

1.系统流程图


2.连接数据库

应用程序如果直接获取连接,则每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长,这样效率不高,因此采用连接池。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。从而大大提高对数据库操作的性能

public class DataBasicSource  {

	private DataSource ds=null;
	static Logger logger=Logger.getLogger(DataBasicSource.class);
	/**
	 * 获取数据源
	 * @param properties
	 */
	public  DataBasicSource(String properties) {
		Properties pro=new Properties();
		try {
			pro.load(DataBasicSource.class.getClassLoader().getResourceAsStream(properties));
			//从工具包里获得dbcp提供的数据源
			ds=BasicDataSourceFactory.createDataSource(pro);
			logger.info("加载属性文件:"+properties+"成功!");
		} catch (Exception e) {
			logger.error(e.getMessage());
		}
	}
	
	public DataBasicSource() {
		// TODO Auto-generated constructor stub
	}

	/**
	 * 获取连接
	 * @return Connection
	 * @throws SQLException
	 */
	public  Connection getConnection() throws SQLException{
		return ds.getConnection();
	}
	
	public void release(Connection conn,Statement ps,ResultSet rs) {
		try {
			if(rs!=null) {
				rs.close();
				rs=null;
	
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值