需求

1、在mysql与oracle数据库里每个数据库中建立两张表,两张表都插入给数据库,分别把ID,产品的库存,两个数据;

2、使用JDBC把同一个仓库的产品进行两个数据库的比较,把不同的数据定时查询一次,并把数据存取到本地的生成.txt文件一份;

3、把异常的数据以mysql的标准进行更新,并写一个程序用来记录库存变动日志记录的表,并把变动表的数据记录到oracle数据库中;

4、每天定时9点从变动中的数据库表里通过java程序找到前一天变动商品的汇总信息。

用于程序运行测试

 1 //用于程序运行测试
 2 public class StarTest {
 3         public static void main(String[] args) {
 4
 5
 6         //建立一个定时器,定时任务执行,这里设定一小时进行一次
 7
 8         Filewrite filewrite = new Filewrite();
 9
10         Timer timerfile = new Timer();
11
12         timerfile.schedule(filewrite,0,3600000);
13
14
15     }
16
17 }

Filewrite 包括了比较数据,更新数据,插入数据差异的表 和写入文件

  1 //Filewrite 包括了比较数据,更新数据,插入数据差异的表 和写入文件
  2 public class Filewrite extends TimerTask{
  3
  4     //输出流
  5     OutputStream os =null;
  6     //输入流
  7     InputStream in=null;
  8     //建立一个对象实现Mysql函数的调用
  9     MysqlFunction mysql= new MysqlFunction();
 10     //调用函数 查询表different (当时为了理解记住compare()方法和最后run()方法 所以分开了创建map)
 11     Map map = mysql.getFindNotArg("different");
 12
 13     String str = "";
 14
 15     //oracle方法对像
 16     OracleFunction oraclefunction =new OracleFunction ();
 17
 18     MysqlFunction mysqlfunction =new MysqlFunction();
 19
 20     Map maporacle= oraclefunction.getFindNotArg();
 21
 22     Map mapmysql=mysqlfunction.getFindNotArg("huweihui");
 23
 24     Map mapdifferent = mysqlfunction.getFindNotArg("different");
 25
 26
 27     public Filewrite(){
 28         try {
 29             //文件写入路径
 30             os=new FileOutputStream("E:/test/ttt.txt",true);
 31
 32
 33         } catch (FileNotFoundException e) {
 34
 35             e.printStackTrace();
 36         }
 37
 38
 39     }
 40
 41     public void compare (){
 42
 43
 44         OutputStream os =null;
 45
 46         //用迭代器进行读取,并再嵌套一个迭代器,在里面进行比较找到ID相同库存量不同的数据并更新oracle的表,并记录在新表different
 47
 48
 49         //着重记住迭代器for循环遍历读取
 50         //给出第二种格式 数据和这里无关 看格式
 51         /*Map map = new MysqlFunction().getFindNotArg("huweihui");
 52
 53         Iterator iter = map.entrySet().iterator();
 54         while(iter.hasNext()){
 55         Map.Entry entry = (Map.Entry) iter.next();
 56
 57         int key =(int) entry.getKey();
 58         int values = (int) entry.getValue();
 59
 60         System.out.println(key   +"    "+  values);
 61         }*/
 62
 63         Set keyset = mapmysql.keySet();
 64         Set keyset2 = maporacle.keySet();
 65
 66
 67 for (Iterator iterator = keyset.iterator();iterator.hasNext();){
 68
 69             int key = (int) iterator.next();
 70
 71             int values = (int) mapmysql.get(key);
 72
 73
 74             for (Iterator iterator2 = keyset2.iterator();iterator2.hasNext();){
 75                 int key2 = (int ) iterator2.next();
 76
 77                 int values2 =( int ) maporacle.get(key2);
 78
 79
 80                 if (key == key2){
 81                     if(values!=values2){
 82                         System.out.println("id same num difference");
 83                         //插入到different表
 84                         mysqlfunction.insertTest(key2, values-values2);
 85                         //更新oracle表的数据
 86                         oraclefunction.updata(key,values);
 87                     }
 88                         //oraclefunction.up
 89                     }
 90
 91             }
 92
 93         }
 94
 95
 96     }
 97
 98     //重载run方法
 99     @Override
100     public void run() {
101         // TODO Auto-generated method stub
102         Set set = map.keySet();
103         String date= new Date(System.currentTimeMillis()).toLocaleString();
104         try{
105             str="  this is the record for different ";
106
107             os.write(str.getBytes());
108             //迭代器写入文件
109             for(Iterator iter = set.iterator();iter.hasNext();){
110
111                 int key= (int) iter.next();
112
113                 int values = (int) map.get(key);
114
115                  str ="ID: " +key +" num: "+values+ "      time :"+date +"\r\n";
116                 System.out.println(str);
117
118                 os.write(str.getBytes());
119
120                 os.flush();
121             }
122         //  os.write();
123         }catch (Exception e){
124             e.printStackTrace();
125         }finally {
126             try {
127                 os.close();
128             } catch (IOException e) {
129                 // TODO Auto-generated catch block
130                 e.printStackTrace();
131             }
132         }
133     }
134
135 }

View Code

ORACLE函数的方法

  1 //ORACLE函数的方法
  2 public class OracleFunction {
  3
  4     //查询表的方法
  5     public HashMap getFindNotArg (){
  6         JdbcOracle jdbc =new JdbcOracle();
  7
  8         Connection con =null;
  9
 10         Statement  st = null;
 11
 12         ResultSet result =null;
 13
 14         String sql = "";
 15
 16         HashMap map =new HashMap();
 17
 18         try {
 19             sql = "select * from THREE_STOCK";
 20
 21             con = jdbc.getConnection();
 22
 23             st = con.createStatement();
 24
 25             result = st.executeQuery(sql);
 26
 27
 28             while(result.next()){
 29                 int id = result.getInt("PRODUCT_ID");
 30
 31                 int num = result.getInt("STOCK");
 32
 33                 //System.out.println("PRODUCT_ID:"+id+ "  STOCK:"+num);
 34
 35                 map.put(id,num);
 36             }
 37         }catch(Exception e){
 38
 39             e.printStackTrace();
 40
 41         }finally {
 42             try {
 43                 st.close();
 44                 result.close();
 45                 con.close();
 46             } catch (SQLException e) {
 47                 // TODO Auto-generated catch block
 48                 e.printStackTrace();
 49             }
 50         }
 51
 52         return map;
 53
 54     }
 55     //更新数据的方法
 56     public void updata(int id,int num){
 57         JdbcOracle jdbcOracle = new JdbcOracle();
 58
 59         Connection connection = null;
 60
 61         Statement statement = null;
 62
 63         ResultSet rs =null;
 64
 65         String sql = "";
 66
 67         try {
 68             connection = jdbcOracle.getConnection();
 69
 70             statement = connection.createStatement();
 71
 72             sql="update THREE_STOCK set STOCK= "
 73             +num
 74             +"where PRODUCT_ID = "
 75             +id;
 76
 77             System.out.println("update successful ");
 78
 79             statement.executeUpdate(sql);
 80
 81
 82
 83         } catch (Exception e) {
 84             // TODO: handle exception
 85             e.printStackTrace();
 86         }finally {
 87             try {
 88                 rs.close();
 89                 statement.close();
 90                 connection.close();
 91             } catch (SQLException e) {
 92                 // TODO Auto-generated catch block
 93                 e.printStackTrace();
 94             }
 95         }
 96
 97     }
 98
 99
100
101
102
103
104
105     /*public static void main(String[] args) {
106         Map map=new OracleFunction().getFindNotArg();
107         Set keyset2 = map.keySet();
108         for (Iterator iterator2 = keyset2.iterator();iterator2.hasNext();){
109             int key2 = (int ) iterator2.next();
110
111             int values2 =( int ) map.get(key2);
112
113             System.out.println(key2+ "           "+values2);
114         }
115     }*/
116 }

View Code

Mysql的方法函数

 1 //Mysql的方法函数
 2
 3
 4 public class MysqlFunction {
 5
 6     public Map getFindNotArg (String tablename){
 7         JdbcMysql jdbc =new JdbcMysql();
 8
 9         Connection con =null;
10
11         Statement  st = null;
12
13         ResultSet result =null;
14
15         String sql = "";
16
17         Map map = new LinkedHashMap();
18 ;
19         try {
20             sql = "select * from "+ tablename;
21
22             con = jdbc.getConnection();
23
24             st = con.createStatement();
25
26             result = st.executeQuery(sql);
27
28             while(result.next()){
29                 int id = result.getInt("ID");
30
31                 int num = result.getInt("STOCK");
32
33 //              System.out.println("商品ID:"+id+ "  库存数量:"+num);
34
35                 map.put(id, num);
36             }
37         }catch(Exception e){
38
39             e.printStackTrace();
40
41         }finally {
42             try {
43                 st.close();
44                 con.close();
45                 result.close();
46             } catch (SQLException e) {
47                 // TODO Auto-generated catch block
48                 e.printStackTrace();
49             }
50         }
51         return map;
52     }
53
54
55
56     public void insertTest(int id ,int num){
57         JdbcMysql jdbc=new JdbcMysql();
58         Connection con=null;
59         PreparedStatement pst=null;
60         String sql;
61         int result = 0;
62         try {
63
64             System.out.println("congratulation , inserted successedful ");
65             con=jdbc.getConnection();
66
67             sql="insert into different values(?,?)";
68
69             pst=con.prepareStatement(sql);
70
71             pst.setInt(1, id);
72
73             pst.setInt(2, num);
74
75              pst.executeUpdate();
76
77
78         } catch (SQLException e) {
79             // TODO Auto-generated catch block
80             e.printStackTrace();
81         }finally {
82             try {
83
84                 pst.close();
85                 con.close();
86
87             } catch (SQLException e) {
88                 // TODO Auto-generated catch block
89                 e.printStackTrace();
90             }
91
92         }
93
94
95     }
96
97 }

View Code

Oracle JDBC

 1 //Oracle JDBC
 2 public class JdbcOracle {
 3     static {
 4         try {
 5             Class.forName("oracle.jdbc.driver.OracleDriver");
 6         } catch (ClassNotFoundException e) {
 7             // TODO Auto-generated catch block
 8             e.printStackTrace();
 9         }
10
11     }
12
13
14
15     public Connection getConnection(){
16         String url = "jdbc:oracle:thin:@192.168.15.59:1521:orcl";
17
18         String user = "C##msuser02";
19
20         String password ="Password1";
21
22         Connection con =null;
23
24         try {
25             con =DriverManager.getConnection(url, user, password);
26         }catch (Exception e){
27             e.printStackTrace();
28         }
29
30         return con;
31     }
32
33 }

View Code

MySQLJDBC

 1 //MySQLJDBC
 2 public class JdbcMysql {
 3     static{
 4         try {
 5             Class.forName("com.mysql.jdbc.Driver");
 6         } catch (ClassNotFoundException e) {
 7             // TODO Auto-generated catch block
 8             e.printStackTrace();
 9         }
10     }
11
12     public Connection getConnection(){
13         String url="jdbc:mysql://127.0.0.1:3306/test?useSSL=false";
14
15         String user="hui";
16
17         String password="123456";
18
19         Connection con=null;
20
21         try {
22             con = DriverManager.getConnection(url, user, password);
23         } catch (SQLException e) {
24             // TODO Auto-generated catch block
25             e.printStackTrace();
26         }
27
28         return con;
29     }
30
31 }

View Code

转载于:https://www.cnblogs.com/ithuhui/p/5921179.html

java基础 - 综合训练相关推荐

  1. Java基础入门语法和安装

    1. Java概述 1.1 Java语言背景介绍(了解) 语言:人与人交流沟通的表达方式 计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言 Java语言是美国Sun公司(Stanford Un ...

  2. Java笔记整理-02.Java基础语法

    1,标识符 由英文字母.数字._(下划线)和$组成,长度不限.其中英文字母包含大写字母(A-Z)和小写字母(a-z),数字包含0到9. 标识符的第一个字符不能是数字(即标识符不能以数字开头). 标识符 ...

  3. java基础(十三)-----详解内部类——Java高级开发必须懂的

    java基础(十三)-----详解内部类--Java高级开发必须懂的 目录 为什么要使用内部类 内部类基础 静态内部类 成员内部类 成员内部类的对象创建 继承成员内部类 局部内部类 推荐博客 匿名内部 ...

  4. Java基础概念性的知识总结

    属于个人的所学的知识总结,不是全面的 1.JDK.JRE和JVM三者的区别 01.JDK:(Java Development ToolKit)Java开发工具包,是整个Java的核心.包括了Java的 ...

  5. 我的面试标准:第一能干活,第二Java基础要好,第三最好熟悉些分布式框架!...

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:hsm_computer www.cnblogs.com/J ...

  6. 叮!您收到一份超值Java基础入门资料!

    摘要:Java语言有什么特点?如何最大效率的学习?深浅拷贝到底有何区别?阿里巴巴高级开发工程师为大家带来Java系统解读,带你掌握Java技术要领,突破重点难点,入门面向对象编程,以详细示例带领大家J ...

  7. java重要基础知识点_必看 | 新人必看的Java基础知识点大梳理

    原标题:必看 | 新人必看的Java基础知识点大梳理 各位正在认真苦学Java的准大神,在这烈日炎炎的夏季里,老九君准备给大家带来一个超级大的"冰镇西瓜,"给大家清凉一下,压压惊. ...

  8. Java基础-Date类常用方法介绍

    Java基础-Date类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.毫秒值概念 我们在查阅Date类的API文档时,会发现这样的一句话:"The cl ...

  9. [Spring 深度解析]第1章 Java基础

    第1章 ◄Java基础► 在学习Spring之前我们需要对Java基础语法有一定的了解,Java中最重要的两个知识点是注解和反射.注解和反射在Spring框架中应用的最广泛.掌握注解和反射,有助于后面 ...

最新文章

  1. [转]Visual Studio 2010帮助文件MSDN安装说明
  2. java文件file字符集_获取文件字符集(或文件编码) 的工具类
  3. html 超链接打开Excel,计算机打开Excel超链接时提示的解决方案
  4. boost::fusion::traits::is_sequence用法的测试
  5. no nlsxbe in java.library.path
  6. python实现一个简单的加法计算器_Python简易项目 加减计算器的实现
  7. C++|Java混合实验-Spring Boot获取客户端操作系统,浏览器,Ip等信息,Qt端展示
  8. [原]ASP.Net常用功能整理--生成图片的缩略图
  9. OPENGGL深度测试
  10. Linux 离线安装软件
  11. tensorflow RGB三通道图转换为灰度图
  12. centos 搭建nfs服务器
  13. 跟开涛老师学shiro -- 身份验证
  14. Linux开发环境搭建之cmake安装
  15. Java学习心得(集合、泛型)
  16. 超频到3200最佳时序_ddr4内存时序多少为好
  17. 追星女孩彩虹屁情话合集100条 ✔︎ (三)
  18. CTU Open Contest 2019 F. Beer Marathon(贪心)
  19. DSB2017第一名代码复现
  20. 挑战程序设计竞赛——详解DFS及BFS

热门文章

  1. E人E本让中国人多了一种选择
  2. 使用AfxGetMainWnd函数的一个心得
  3. iOS11以后启动图尺寸
  4. python 全栈开发,Day54(关于DOM操作的相关案例,JS中的面向对象,定时器,BOM,client、offset、scroll系列)...
  5. 英特尔玩VR有多认真?看看Project Alloy的细节就知道了
  6. 未来网络安全重塑,保障安全的会不会只有四五家?
  7. AngularJs 实战 -慕课网
  8. linux 之静默安装oracle
  9. [每天一个知识点]31-乱七八糟-如何判断预言有效
  10. 很喜欢的一首歌曲《Take me to your heart》