问题描述:
现有两个数据库,xg系统和oa系统。要实现这两个数据库之间的数据同步。学⼯系统在进⾏新增或者变更时,需要在OA系统中进⾏相应变化;
需要了解的:(jdbc,数据库,线程,连接池,集合)
数据库部分:
- 创建表
#新建数据库
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;