我写了一个父类,定义了几个方法,如下。每个方法上面都有说明。 请继承这个类写一个名为 AdoDatabaseInfo 的子类。用ADO(注意是用ADO)来实现这个类中的几个方法。只要先写出来,测试通过立即给分。 谢谢unit AbsDatabaseInfo;interface
uses Classes;
Type
    TAbsDatabaseInfo = Class
        public            /// <summary>
            /// 得到指定数据库中所有的表(用户表,不包括视图)
            /// </summary>
            /// <param name="databaseName"> 数据库名称 </param>
            /// <returns> 包含表名的TList </returns>
            function getTableNames(databaseName:String):TList; virtual;abstract;            /// <summary>
            /// 得到指定表名的所有字段名
            /// </summary>
            /// <param name="tableName"> 表名 </param>
            /// <returns> 包含字段名的Tlist</returns>
            function getFieldNames(tableName : String):TList; virtual;abstract;            /// <summary>
            /// 得到指定字段的字段类型
            /// </summary>
            /// <param name="fieldName"> 字段名称 </param>
            /// <returns> 0整型 1字符串型 2浮点型 3日期型 4其它类型</returns>
            function getFieldType(fieldName : String):Integer; virtual;abstract;            /// <summary>
            /// 得到指定字段的默认值
            /// </summary>
            /// <param name="fieldName"> 字段名称 </param>
            /// <returns> 该字段的默认值 </returns>
            function getDefaultValue(fieldName : String):String; virtual;abstract;            /// <summary>
            /// 判断指定字段是否有默认值
            /// </summary>
            /// <param name="fieldName"> 字段名称 </param>
            /// <returns> 有返回true,没有返回false</returns>
            function HasDefault(fieldName : String):Boolean; virtual;abstract;            /// <summary>
            /// 判断指定的字段是否为主键
            /// </summary>
            /// <param name="fieldName"> 字段名称 </param>
            /// <returns> 是返回true,不是返回false</returns>
            function IsPrimaryKey(fieldName : String):Boolean; virtual;abstract;            /// <summary>
            /// 得到指定字段的描述信息
            /// </summary>
            /// <param name="fieldName"> 字段名称 </param>
            /// <returns> 返回描述信息 </returns>
            function getFieldDiscription(fieldName : String):String; virtual;abstract;            /// <summary>
            /// 判断指定字段是否可以为空
            /// </summary>
            /// <param name="fieldName"> 字段名称 </param>
            /// <returns> 可以返回true,不可以返回false </returns>
            function NullAble(fieldName : String):Boolean; virtual;abstract;    End;implementationend.

解决方案 »

  1.   

    提个要求。 不要用sql语句。 因为数据库类型不定。
      

  2.   

    大哥,不是吧。Delphi中的ADO就可以做到的。只是我手边没有相关的材料,对ADO还不熟悉。所以请大家帮忙了。
      

  3.   

    后天的话,我想我已经做出来了。 主要是现在我没有材料。 其实这个一点都不难。如果你现在有介绍ado关于提取数据库结构方面的电子资料的话,介绍给我,我把100分给你。
      

  4.   

    或者我告诉你个大概的思路,你自己去写吧。
    1.继承你的虚基类,加入私有变量:FAdoConnection,FUserId,FPassword等,即用来
    连接数据库的字符串需要的内容。
    2.调用AdoConnection的相应方法来实现你的抽象方法。比如:
    GetFieldsNames,GetTableNames,OpenSchema等。
      

  5.   

    这些我知道。  具体的就是那个openSchema这不知道它的参数的意义和具体值。所以我需要一点资料。可是我一点都没有。
      

  6.   

    另外,你要的资料是COM的,还是delphi的资料,如果是delphi的,
    帮助就有,难道你的意思是你手头没有delphi?
      

  7.   

    我看了。基本上ADO提供的函数都可以实现的。自己看看他的代码就可以了。Delphi5是没有ADODB.pas吧。
      

  8.   

    说实话,delphi的帮助我有点看不懂。 我delphi很菜