现在的位置: 首页 > 综合 > 正文

如何使用ADO助手生成数据库代码 自己如何获取ADO连接字符串

2018年06月07日 ⁄ 综合 ⁄ 共 4940字 ⁄ 字号 评论关闭

http://blog.csdn.net/zyq5945/article/details/7998001

ADO助手最新版本为V1.20,下载地址例子Demo

ADO助手是一个获取ADO连接字符串,测试SQL命令的辅助软件。ADO助手还可以用来以插入SQL语句形式导出导入记录,目前提供了插件还可以生成MFC和C#数据库代码,大大简化编写数据库代码复杂度和缩短了编写数据库代码时间。

使用ADO助手生成数据库代码大致有下面几个步骤:

一.设置数据库的连接字符串

1.可以在如下图的下拉列表中选择相应的连接字符串

2.点击“连接字符串”按钮,在“数据链接属性”中编辑连接字符串,在“数据链接属性”中编辑连接字符串可以参考《自己如何获取ADO连接字符串》。

当然也可以选择相应的连接字符串后,再点击“连接字符串”按钮类进行编辑。

二.选择数据连接建立的方式

三.建立数据库连接

四.编写需要生成的数据库代码SQL,点击“打开记录集”按钮

五.在数据库代码对话框中的代码类型和配置选项按需求选择生成的数据库代码类型

代码类型是根据插件目录下的动态链接库动态生成的,和动态链接库同名,配置选项是在Ini目录下同名配置文件内容。

六.最后是点击“生成代码”按钮,弹出保存对话框生成最终的数据库代码

生成的MFC数据库类格式如下:

  1. /*---------------------------------------------------------------------------------------------------------------- 
  2. Version:    AdoAssist 1.20 
  3.    Time:    2012-09-19 22:06:17 
  4.     SQL:    SELECT * FROM tbl_Demo 
  5. ----------------------------------------------------------------------------------------------------------------*/  
  6. #pragma once  
  7.   
  8. class CDBClassName  
  9. {  
  10. public:  
  11.     long            m_lID;  //0 ID  adInteger  
  12.     CString         m_strGuid;  //1 Guid    adVarWChar  
  13.     CString         m_strName;  //2 Name    adVarWChar  
  14.     long            m_lAge; //3 Age adInteger  
  15.   
  16. public:  
  17.     long GetID() const  
  18.     {  
  19.         return this->m_lID;  
  20.     }  
  21.   
  22.     void GetID(long& tID) const  
  23.     {  
  24.         tID = this->m_lID;  
  25.     }  
  26.   
  27.     void SetID(const long& tID)  
  28.     {  
  29.         this->m_lID = tID;  
  30.     }  
  31.   
  32.     CString GetGuid() const  
  33.     {  
  34.         return this->m_strGuid;  
  35.     }  
  36.   
  37.     void GetGuid(CString& tGuid) const  
  38.     {  
  39.         tGuid = this->m_strGuid;  
  40.     }  
  41.   
  42.     void SetGuid(const CString& tGuid)  
  43.     {  
  44.         this->m_strGuid = tGuid;  
  45.     }  
  46.   
  47.     CString GetName() const  
  48.     {  
  49.         return this->m_strName;  
  50.     }  
  51.   
  52.     void GetName(CString& tName) const  
  53.     {  
  54.         tName = this->m_strName;  
  55.     }  
  56.   
  57.     void SetName(const CString& tName)  
  58.     {  
  59.         this->m_strName = tName;  
  60.     }  
  61.   
  62.     long GetAge() const  
  63.     {  
  64.         return this->m_lAge;  
  65.     }  
  66.   
  67.     void GetAge(long& tAge) const  
  68.     {  
  69.         tAge = this->m_lAge;  
  70.     }  
  71.   
  72.     void SetAge(const long& tAge)  
  73.     {  
  74.         this->m_lAge = tAge;  
  75.     }  
  76.   
  77.   
  78. public:  
  79.     // Database Interface  
  80.     bool AdoGetRecord(const CAdoRecordset& rs, DWORD dwFlag = 0);  
  81.     bool AdoSetRecord(const CAdoRecordset& rs, DWORD dwFlag = 0) const;  
  82. };  
  83.   
  84. #pragma warning(disable:4100)// Database Interface  
  85. inline bool CDBClassName::AdoGetRecord(const CAdoRecordset& rs, DWORD dwFlag)  
  86. {  
  87.     ADO_GETFIELDVALUE(_T("ID"), m_lID); //0  
  88.     ADO_GETFIELDVALUE(_T("Guid"), m_strGuid);   //1  
  89.     ADO_GETFIELDVALUE(_T("Name"), m_strName);   //2  
  90.     ADO_GETFIELDVALUE(_T("Age"), m_lAge);   //3  
  91.   
  92.     /* 
  93.     ADO_GETFIELDVALUE((long)0, m_lID);  //ID 
  94.     ADO_GETFIELDVALUE((long)1, m_strGuid);  //Guid 
  95.     ADO_GETFIELDVALUE((long)2, m_strName);  //Name 
  96.     ADO_GETFIELDVALUE((long)3, m_lAge); //Age 
  97.     */  
  98.   
  99.     return true;  
  100. }  
  101.   
  102. // Database Interface  
  103. inline bool CDBClassName::AdoSetRecord(const CAdoRecordset& rs, DWORD dwFlag) const  
  104. {  
  105.     //ADO_SETFIELDVALUE(_T("ID"), m_lID);   //0  
  106.     ADO_SETFIELDVALUE(_T("Guid"), m_strGuid);   //1  
  107.     ADO_SETFIELDVALUE(_T("Name"), m_strName);   //2  
  108.     ADO_SETFIELDVALUE(_T("Age"), m_lAge);   //3  
  109.   
  110.     /* 
  111.     //ADO_SETFIELDVALUE((long)0, m_lID);    //ID 
  112.     ADO_SETFIELDVALUE((long)1, m_strGuid);  //Guid 
  113.     ADO_SETFIELDVALUE((long)2, m_strName);  //Name 
  114.     ADO_SETFIELDVALUE((long)3, m_lAge); //Age 
  115.     */  
  116.   
  117.     return true;  
  118. }  
  119. #pragma warning(default:4100)  


关于配置文件:每个数据库代码插件都有同名的在可执行目录下INI目录配置文件

配置文件格式:数据库字段类型=相应的语言数据变量|数据库类变量前缀

[plain] view
plain
copy在CODE上查看代码片派生到我的代码片

  1. adEmpty=Object|m_  
  2. adTinyInt=Int8|m_  
  3. adSmallInt=Int16|m_  
  4. adInteger=Int32|m_  
  5. adBigInt=Int64|m_  
  6. adUnsignedTinyInt=UInt8|m_  
  7. adUnsignedSmallInt=UInt16|m_  
  8. adUnsignedInt=UInt32|m_  
  9. adUnsignedBigInt=UInt64|m_  
  10. adSingle=Single|m_  
  11. adDouble=Double|m_  
  12. adCurrency=Object|m_  
  13. adDecimal=Decimal|m_  
  14. adNumeric=Decimal|m_  
  15. adBoolean=Boolean|m_  
  16. adError=Object|m_  
  17. adUserDefined=Object|m_  
  18. adVariant=Object|m_  
  19. adIDispatch=Object|m_  
  20. adIUnknown=Object|m_  
  21. adGUID=Guid|m_  
  22. adDate=DateTime|m_  
  23. adDBDate=DateTime|m_  
  24. adDBTime=DateTime|m_  
  25. adDBTimeStamp=DateTime|m_  
  26. adBSTR=String|m_  
  27. adChar=String|m_  
  28. adVarChar=String|m_  
  29. adLongVarChar=String|m_  
  30. adWChar=String|m_  
  31. adVarWChar=String|m_  
  32. adLongVarWChar=String|m_  
  33. adBinary=Object|m_  
  34. adVarBinary=Object|m_  
  35. adLongVarBinary=Object|m_  
  36. adChapter=Object|m_  
  37. adFileTime=DateTime|m_  
  38. adPropVariant=Object|m_  
  39. adVarNumeric=Object|m_  
  40. adArray=Object|m_  

一些功能说明以及建议:

1.如果生成的字段有非变量字符(中文等字符),请使用别名查询转换成变量字符。

2.ORACLE中查询的字符名称默认是大写的, 可以用类似的别名FIELDNAME AS "FieldName"进行查询。

3.联合查询的字段名称不能有重复,否则生成的类将可能无法编译过去。

4.当一个查询A是查询B的子集且这两个查询有相互赋值情况时最好是采用继承关系来生成类。

ADO助手版本和发布时间

2010-09-06

+初始版本发布

2011-11-09

-修复有时候用DataGrid显示报错“The rowset is not bookmarkable.”

+增加根据SQL生产MFC数据库类的功能

+增加导入和导出记录集的功能

+增加对多记录集的支持功能

+增加常用的ADO连接字符串的下拉选择

2012-09-19

+增加C#数据库代码生成

ADO助手说明

1."在DataGrid显示"会影响CursorType和LockType的输出
2."在DataGrid显示"状态改变后请重新点击"建立连接",否则该属性不会设置到已经建立的连接中.
有任何bug请给Email:zyq5945@126.com(请把中文字符改成英文字符)

抱歉!评论已关闭.