当前位置:  技术问答>java相关

一个程序如何连接任何一个大型数据库呢?

    来源: 互联网  发布时间:2015-02-03

    本文导语:  一个程序,Java写的,可能运行在不同平台上,但更重要的是可能连接不同的数据库。平台不会有什么大问题,但连接数据库有什么较好的办法吗?前提是程序不会只用标准的SQL语句,肯定会有数据库特定的SQL函数等...

一个程序,Java写的,可能运行在不同平台上,但更重要的是可能连接不同的数据库。平台不会有什么大问题,但连接数据库有什么较好的办法吗?前提是程序不会只用标准的SQL语句,肯定会有数据库特定的SQL函数等等。
目前想出的方法是写一个配置文件,文件中定义若干SQL格式与各种数据库的实现方式,但这种方法很不方便,实现很困难,SQL语句格式不可能穷尽的,且参数个数/表的个数等都会影响格式,有哪位大虾碰到过类似的问题吗?请指教!!!

|
除了尽量少使用非标准sql外,没有很好的解决方法
如果你的java程序要移植到不同的后台数据库上,不修改代码是完全不可能的,你的driver和connection string总要改的吧
碰到特定函数只有修改没有办法
而返回值不一样可以先转换成为某一个java类,然后再作别的处理
我的程序中碰到的日期的问题就是这样解决的

|
to stellaxyq:
   当然driver和connection是要改的,但是对于特定函数,我觉得这是jdbc作的事,你可以
举个具体例子说明吗?假如某sql语句有oracle的特定函数,那么这个sql在sqlserver就会出错,那么看SQLException就行了。
   我不知道你说的是不是这个意思,把某一数据库的特定函数转换成其他数据库的特定函数。
我觉得这样没有必要,对于select count(field1),field2,field3 from table group by 
field1这个语句来说,有的数据库可以运行,有的数据库group by后面加上所有查询字段才可以
运行,对于这样的情况,那是不是要程序每次都要解析sql,这样会使效率很差,得不偿失。
   总之,我觉得使用者必须有一定的限制,这是当时我们公司作需求时得出的结论。请
stellaxyq指教。
   

|
加一层中间代码
例如时间的问题,sql server用#2001-1-1#来表示时间,可用作比较
而oracle 要求转换 to_date(2001-1-1,'yyyy-mm-dd')才表示时间

这样你可以写一个中间函数,在程序中可以用String(或别的)来表示时间字串
遇到要和数据库交互前用parseDate(String date)来代替原来的date
parseDate根据不同的数据库把他转换成不同的表示方法,也可以一个数据库写一个类专门作这种转换,使用那各类由property的配置文件决定

|
加多一层做数据转换和业务逻辑封装,就可以避免这个问题了。通常,大型应用都不是直接联数据库的,中型系统也可以做成这样子。

:)

    
 
 

您可能感兴趣的文章:

  • 关于inetd。我做了一个测试程序,想计算ftp最多能有多少了连接,我发现当连接到1020次就不可以连接了,哪位大侠知道如何做才能将连接数量增加至10000呢??
  • 编写连接数多的服务器程序用什么程序结构比较好呢?
  • Linux下的C++程序怎么连接WIN2000下的SQL Server 2000?或者如何连接MySQL?
  • linux 下连接创建连接数据库程序,什么都可以 。谁知道300分
  • 紧急求助,我的程序连接数据库时,用localhost完全正常,而外部可以访问,但不能访问连接数据的那部分
  • 程序发布的问题(动态连接库的问题)
  • 程序连接问题!
  • 关于程序连接
  • 100分寻求最优化的连接oracle的java程序,请给我讲出理由,我是初学者,在做项目时不想让连接oracle影响我的程序性能
  • 用GTK开发的程序如何在没有GTK动态连接库的Linux里运行?
  • 断开连接重登陆后把程序调到前台
  • 手动执行应用程序ok,但用crontab(在正确的用户名下)运行应用程序就报-12545(tns连接错误),怎么解决?
  • 哪儿可以下载到连接Interbase 的JDBC驱动程序?
  • 奇怪的程序连接问题
  • 通过JdbcOdbcDriver连接Access出现“未发现数据源名称并且未指定默认驱动程序”
  • 一个静态库包含多个函数,应用程序连接了库中的某个函数,应用程序目标代码中是否还包含了该静态库中的其他函数代码?
  • HTML教程 iis7站长之家
  • 关于c的lib和c++程序连接的问题?
  • 请教关于dlopen,动态库连接程序的输出函数
  • ubuntu系统上的安装其他程序问题,不断连接downloads.openwrt.org
  • 请问:你们的程序都怎样关闭数据库?是在每次出现异常的时候吗?还是在一段程序结束后?
  • 请教高手,如何在java中调用其他应用程序(该程序主要进行数据库操作)
  • 开发java下的数据库程序,用什么数据库引擎?
  • java通过jdbc访问数据库流行采用何种数据库驱动程序?jdbc-odbc , InterClient , 还是“网络协议/全java驱动程序”?如有可能,请给简明
  • linux上安装oracle 数据库后,是否能写shell程序实现数据库的自动启动。
  • linux开机自启动程序可以访问数据库吗?
  • MySQL数据库备份恢复程序 MySQLDumper
  • 请问如何使用c++开发数据库客户端程序?
  • 当发布的程序中含有数据库的使用时,...?
  • 可以在程序中创建临时表吗?(用的是mysql数据库)
  • java开发数据库,一般是用JDBC-ODBC桥,还是JDBC驱动程序连接数据库呢?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++程序的内存不同的数据段及堆栈布局
  • 串口应用程序,当对方发送大量的数据时,本方的数据无法发出。对方停止发送,本方的数据仍然无法发出。不知道是什么原因。
  • linux串口程序可以发送数据,但是不能接受数据?谁知道原因?
  • 请问能否在linux实现一个应用程序访问另外一个程序的内存数据?
  • 如何查看子进程调用其它程序后的程序段与数据段地址
  • UNIX下面能否使用类似BCP的程序连接另一台UNIX下面的Sybase数据库进行数据处理
  • 如何让程序接收底层数据?
  • JSP做的名片管理程序,数据检索慢!
  • TCP数据流抓取程序 tcpflow
  • ODBC数据源访问远程数据库,用户名和密码都是 dbget ,然后连接后用程序在数据库中新建一些表,模式名也是用 dbget,为什么在查询的时候
  • 请问模块如何与用户程序进行数据交换
  • 用户程序怎样才能得到网卡的收发数据流量?
  • shell script能为c程序提供输入数据吗?
  • java beans 可以向 jsp 程序返回数据集么?
  • 客户端程序和服务器程序间能否通过管道来实现数据的双向传递啊?
  • 用户态程序如何和多个内核模块进行同时数据交互??
  • Unix 命令行数据复制程序 ddpt
  • 在linux系统下,如何在程序内部读取NAS上的数据?
  • 数据包嗅探程序 Ettercap
  • [求助]C++程序中怎么从URL取数据?
  • 可视化数据分析程序 SciDAVis
  • 重装服务器后IIS网站错误(应用程序中的服务器错误)
  • 为什么我在java程序里启动的一个程序在java程序关闭后,该程序的所有进程都关掉了
  • windows server2008上PowerBuilder程序系统错误解决方法
  • Linux 编程怎么样在程序开启一个程序,和关闭一个程序?
  • c语言判断某一年是否为闰年的各种实现程序代码
  • 请问从一个java程序中如何调用另一java程序,并控制可以其状态(最小化、最大化、结束程序),还有怎样知道那个被调用的程序结束。
  • 程序员的八种级别,你属于哪一级?
  • Linux下的程序是在内存中运行的吗?为什么在程序运行的时候可以删除程序文件?
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 我的程序是用c写的gtk+程序,有个函数的参数要传给它图片的文件名,但是图片和原程序不在同一目录下怎么办?怎么在程序里指定文件的路径


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3