http://www.yesky.com/SoftChannel/72342380468109312/20040518/1798707.shtml

解决方案 »

  1.   

    我的确是使用了工厂模式,但是我不太想,单独对某一种数据库写一套访问类。不知道.Net中有没有类似于Apache Torque的东东?很想知道它是怎么实现的。其实,我的想法很简单,比如说吧,这样一条SQL语句:Select * From Table1 Where Date1>='2004-09-09',可以直接被解析。开发人员不需要去因为是面向Oracle数据库,而将它写成Select * From Table1 Where Date1>=To_Date('2004-09-09','DD-MON-YYYY')。有没有什么方法可以实现。
      

  2.   

    http://www.gotdotnet.com/Community/Workspaces/workspace.aspx?id=c20d12b0-af52-402b-9b7c-aaeb21d1f431
      

  3.   

    to penning(飞鱼):
      没想到我自己的设计和你的文章中所述的大同小异:),不过,它并没有解决我想要解决的问题。:(。我的问题见上面的回复。
      

  4.   

    想随意写一种你熟悉的sql(比如ms sql的或者oracle的),然后就能解析的话,你需要写一个sql分析转换器这样的东西。现在似乎还没有这样的东西可用的,自己写了...
      

  5.   

    to jiezhi(風依舊):
      谢谢。我是想听听各位有没有好的解决方案。事实上,目前我有一个不是很成熟的解决方案,可以解决部分问题,但解决不了sql分析解析问题。:P
      

  6.   

    这个好像比较难,我现在的写法是
    private string QueryCommandText = "...";
    private string OracleQueryCommandText = "..."
    if(this.ConnectionString.ToLower().IndexOf("orcale")>0)
    {
                strPageCommandText = string.Format(this.OracleQueryCommandText, configFields);
    }
    else
    {
       strPageCommandText = string.Format(this.QueryCommandText, configFields);
    }
    使用查询语句不同的写法
      

  7.   

    to penning(飞鱼):
      对数据库类型的判断不用这么麻烦吧,我是通过在配置文件中指定,然后在程序中解析完成的。不用去分析连接字符串吧。:D
     请问你对不同数据库对sql的支持不同的问题有什么好方法吗?
      

  8.   

    哪位兄弟还有高见啊?给点意见呀。我已经要连续回复三次了。再次对csdn的这种防灌水机会表示遗憾。:S
      

  9.   

    作一个sql解析器恐怕太困难了些。不过可以试试NHibernate
      

  10.   

    NHibernate好象是要收费的吧。而且我对这玩意儿也不了解。给你地址研究一下吧。今天下班前结贴。
      

  11.   

    to dahuzizyd(你就是我心中的女神):
    我在SourceForge上找到NHibernate了,它有什么用呢?只知道是Database Foundry, Distributed Computing Foundry。能介绍一下吗?
      

  12.   

    http://blog.csdn.net/billy_zh/archive/2004/08/12/72768.aspx