各位大虾,我现在写一个socket通信的东西
直接说请教内容:
1.我是这样想的:两个PC跑socket程序,两边都有数据库,一个程序(PC_A)读取数据,将读取的RS结果集通过socket流到另一个socket程序(PC_B)上,然后再把RS结果集插入到新的数据库中。为了方便我两边的数据库表都一样。
2.我现在不懂的地方是:1---怎么把取到的RS结果集插入到新的数据库中(两边表都一样)
                      2---如果源数据库中的表中的个别字段更新了,如何更新另一边的?3.补充:我现在用的是TCP协议的socket。
        数据量不是很大,大概10个表左右,每个表每天40行左右,每行20列左右,已char和int为主。本人很菜,希望各位能说下具体用到的类和方法(我再查API),如果有代码例子更是感激不尽~

解决方案 »

  1.   

    把ResultSet里的数据读取出来,如放到String里,或者List里,再使用Socket传吧。ResultSet不能用Socket传,传了也没有用的。
      

  2.   

    如果可以的话,建议楼主用数据库来解决这个问题吧。
    如果两个PC上面使用的是相同的数据库,应该问题不大。
    通过使用触发器和存储过程,应该就能够实现了。
    当然,还要配置一下数据库的相关信息,才可以。实际上,楼主的方案还可以再简化一点,就是省略TCP的数据传输。
    直接在PC_A或者PC_B上面部署一个程序,这个程序同时连接两个数据库,
    进行数据的备份操作。开发复杂度应该会有所降低才是。楼主的设计思路,比较麻烦。
    两个问题,
    第一个,还好解决,最简单的,使用JDBC就可以实现数据的插入。
    第二个,应该是数据的同步问题了。
    这个比较麻烦,如果两个数据库,要求双机热备,那么,采用楼主的方案是无法实现的。
    如果,两个数据库的数据同步,允许有时间间隔,那么,相对还要一些。参考方案如下:
    将源数据库的所有数据表中,添加一个update_time时间字段,
    每次对记录进行插入和更改操作的时候,更新update_time字段,设置值为当前时间。
    (如果使用数据库的项目比较复杂,无法更改,可以考虑添加触发器,当插入新纪录和更改记录的时候,
    更新update_time字段为当前时间)
    数据同步程序,每次同步数据,都要选择起至时间点进行操作,
    第一次运行程序的起始时间设置为零,终止时间设置为当前时间,
    同步完成后,记录本次的终止时间,作为下次同步操作的起始时间。
    以后每次同步操作,起始时间都是上一次操作的终止时间,本次的终止时间都是当前时间。
    当然,这个起止时间点的选择条件,就是update_time字段,
    通过update_time字段来选取所要更新的数据。
    然后分批次同步到另一个数据库中。