一个数据导入导出系统,怎样设计,请指教

eyeieye 2002-12-16 09:55:25
j2ee构架的一个软件,有数据导入导出模块,可以将数据库中指定的表按某些条件导出至普通文件,like:dbf,excel,xml…… ,也可将用户指定文件中的数据库直接录入数据库表,目前文件类型还未定,如果做到增加数据文件时系统不必太大的调整,易于扩展?

多多指教哦
...全文
247 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
LongWayToGo 2002-12-20
  • 打赏
  • 举报
回复
在这里,你要封装的变化是你的数据导入(导出)过程。这些过程可看作是一些算法,抽象出这些算法的操作定义为一个接口(或是两个,导入导出),在用户做出选择后根据参数确定所使用的具体对象(Abstract Factory)--这些对象是实现了前述接口的,在客户代码中使用得到的对象(Stratrgy)。
mty 2002-12-18
  • 打赏
  • 举报
回复
中间格式的内容是动态的,但格式应该是固定的吧(起码你得在这个中间格式的文件中生成一些必要的信息,根据这些信息,就能单独完成导入或导出数据)!!所以关键也就是你这个中间文件的格式的定义了!!

zfluo 2002-12-17
  • 打赏
  • 举报
回复
看一下《设计模式》或《think in java 2nd》
eyeieye 2002-12-16
  • 打赏
  • 举报
回复
是的,我有自定义的中间格式,但问题是,得到中间格式的内容是动态的(根据一些sql条件),中间格式转换成的物理文件也是可变的
lynxliu 2002-12-16
  • 打赏
  • 举报
回复
你需要的是一个中间格式而不是什么设计模式:)
先把数据库甚至任何文件的内容导出到一个中间形态(比如一个数组,或者Grid里面,你甚至可以预览数据),然后再从数组到出到你要的格式。这样,你需要一些类比如DataBaseToGrid,ExcelToGrid,GridToExcel,GridTotxt,GridToDataBase等等,当然了他们需要ToGrid,GridTo两个借口来区分推导的方向。如果你希望客户一次调用成功,可以建立Pipe这样的类,里面的属性分别是ToGrid,GridTo这样的类型,然后依据要求把世纪的对象放置到里面就可以了。此外,我认为这里不需要管理类,你可以把组织类型的逻辑直接放到Pipe类里面,你要做的是一条智能管道:)
谢谢你的问题。
eyeieye 2002-12-16
  • 打赏
  • 举报
回复
初步设计,factory是少不了的了
这两天下了一个使用UDP传输目录内文件的程序,发出来给大家一起看看,共同进步。有问题指教。 由于udp丢包比较厉害,因此使用了自定义的内部协议,进行双方的确认。 程序跑起来后,看网络状况,有时候会一卡一卡的。 以下是程序说明: * 本程序集成了数据导出端(服务器端)和数据导入端(客户端),使用UDP进行文件传递 * 服务器端的文件来源目录,见Tools中SOURCEPATH的设置 * 客户端的文件保存目录,见Tools中DESTINATIONPATH的设置,可以根据自己需要进行调整 * * 由于UDP存在丢包问题,因此Server和Client的通讯需要来回包进行确认,协议包头如下: * 1. "55 aa 99 01",表示客户端发起广播求,求服务器响应 * 2. "55 aa 99 02 + 服务器的设备名称",表示服务器接收到广播后,响应客户端求,把此包指定IP发送客户端(此指定IP地址可以UDP广播信息包中获取) * 3. "55 aa 99 03",表示客户端接收到服务器的响应,接着向服务器指定IP求:需要传递的文件总数目和文件总容量(单位为KB) * 4. "55 aa 99 04 + 4字节文件总数目和4字节的文件总容量",表示服务器接收到客户端的0x03求,统计SOURCEPATH中的所有文件数目和文件总容量,发送指定IP地址的客户端 * 5. "55 aa 99 05",客户端接收到文件总数目和文件总容量,求服务器发送文件具体内容 * 6. "55 aa 99 10 + 文件名称",服务器发送文件名称 * 7. "55 aa 99 11",客户端响应,表示接收到服务器发送的0x10包 * 8. "55 aa 99 12+文件内容",服务器端发送具体文件内容 * 9. "55 aa 99 13",客户端响应,表示接收到服务器发送的0x12包 * 10."55 aa 99 14",服务端高速客户端发送完毕 * * 注意:服务器发送0x10包后,收到客户端的0x11响应包,将把文件具体内容拆分成N个0x12包,每个包的大小见Tools.byteSize的设置,目前设置为10K, * 服务器没收到一个0x13响应包,才能继续发下一个0x12包,已放置UDP的丢包,另外每个0x12包最多发送10次而无0x13包的响应,则发送进程结束,界面提示 * * 本程序已经封装好,调用见TransportFilesActivity.java文件

51,402

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧