中航光电的中间件仓库

OtlConnection.cpp 7.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. #include "StdAfx.h"
  2. #include "OtlDB.h"
  3. #include "OtlConnHost.h"
  4. #ifdef DBCTRL_EXPORTS
  5. /*****************************************************************
  6. **【函数名称】 Initialize
  7. **【函数功能】 初始化OTL环境(接口静态函数实现)
  8. **【参数】
  9. **【返回值】
  10. *****************************************************************/
  11. void IOtlConnection::Initialize()
  12. {
  13. otl_connect::otl_initialize();
  14. }
  15. /*****************************************************************
  16. **【函数名称】 getInstance
  17. **【函数功能】 获取数据库连接实例(接口静态函数实现)
  18. **【参数】
  19. **【返回值】
  20. *****************************************************************/
  21. IOtlConnection* IOtlConnection::getInstance()
  22. {
  23. return COtlConnection::GetOtlInstence();
  24. }
  25. #endif
  26. COtlConnection* COtlConnection::m_pInstence = NULL;//静态变量声明
  27. COtlConnection::COtlConnection()
  28. {
  29. m_pOtlConnHost = new COtlConnHost();
  30. }
  31. COtlConnection::~COtlConnection()
  32. {
  33. delete m_pOtlConnHost;
  34. delete m_pInstence;
  35. }
  36. /*****************************************************************
  37. **【函数名称】 GetInstence
  38. **【函数功能】 获取数据库实例(静态成员)
  39. **【参数】
  40. **【返回值】
  41. *****************************************************************/
  42. COtlConnection* COtlConnection::GetOtlInstence()
  43. {
  44. if (NULL == m_pInstence)
  45. {
  46. m_pInstence = new COtlConnection();
  47. }
  48. return m_pInstence;
  49. }
  50. /*****************************************************************
  51. **【函数名称】 DestroyInst
  52. **【函数功能】 释放一个数据连接实例(静态成员)
  53. **【参数】 pInst 要释放的数据库实例
  54. **【返回值】
  55. *****************************************************************/
  56. // void COtlConnection::DestroyInst(COtlConnection* pInst)
  57. // {
  58. // delete pInst;
  59. // }
  60. /*****************************************************************
  61. **【函数名称】 Connect
  62. **【函数功能】 连接注册表中默认配置的数据库
  63. **【参数】
  64. **【返回值】
  65. *****************************************************************/
  66. BOOL COtlConnection::Connect()
  67. {
  68. return m_pOtlConnHost->Connect();
  69. }
  70. /*****************************************************************
  71. **【函数名称】 Connect
  72. **【函数功能】 连接指定连接字符串的数据库
  73. **【参数】
  74. **【返回值】
  75. *****************************************************************/
  76. BOOL COtlConnection::Connect(LPCTSTR lpszConnString)
  77. {
  78. return m_pOtlConnHost->Connect(lpszConnString);
  79. }
  80. /*****************************************************************
  81. **【函数名称】 Disconnect
  82. **【函数功能】 断开数据库连接
  83. **【参数】
  84. **【返回值】
  85. *****************************************************************/
  86. void COtlConnection::Disconnect()
  87. {
  88. m_pOtlConnHost->Disconnect();
  89. }
  90. /*****************************************************************
  91. **【函数名称】 GetDbType
  92. **【函数功能】 获取数据库类型
  93. **【参数】
  94. **【返回值】 数据库类型
  95. *****************************************************************/
  96. DB_TYPE COtlConnection::GetDatabaseType()
  97. {
  98. return m_pOtlConnHost->GetDBType();
  99. }
  100. /*****************************************************************
  101. **【函数名称】 ConnectTest
  102. **【函数功能】 数据库连接测试
  103. **【参数】
  104. **【返回值】
  105. *****************************************************************/
  106. BOOL COtlConnection::ConnectTest(LPCTSTR lpszConnString, LPSTR lpErrInfo)// 连接测试
  107. {
  108. return m_pOtlConnHost->TestConnect(lpszConnString,lpErrInfo);
  109. }
  110. /*****************************************************************
  111. **【函数名称】 InsertConstant
  112. **【函数功能】 恒量插入(单数据)
  113. **【参数】 lpszSQL Insert语句
  114. **【返回值】
  115. *****************************************************************/
  116. BOOL COtlConnection::InsertConstant(LPCTSTR lpszSQL)
  117. {
  118. // 把数据库类型判断移动到底层实现
  119. return m_pOtlConnHost->InsertConstant(lpszSQL);
  120. }
  121. /*****************************************************************
  122. **【函数名称】 ExecCommand
  123. **【函数功能】 直接命令执行
  124. **【参数】 lpszSQL SQL执行语句
  125. **【返回值】
  126. *****************************************************************/
  127. BOOL COtlConnection::ExecCommand(LPCTSTR lpszSQL)
  128. {
  129. return m_pOtlConnHost->ExecCommand(lpszSQL);
  130. }
  131. /*****************************************************************
  132. **【函数名称】 DropTableCommand
  133. **【函数功能】 删除表命令函数
  134. **【参数】 lpszSQL SQL执行语句
  135. **【返回值】
  136. *****************************************************************/
  137. void COtlConnection::DropTableCommand(LPCTSTR lpszSQL)
  138. {
  139. m_pOtlConnHost->ExecComForDropTable(lpszSQL);
  140. }
  141. /*****************************************************************
  142. **【函数名称】 GetSingleDataString
  143. **【函数功能】 获取字符串单值
  144. **【参数】 IN lpszSQL SQL查询语句
  145. OUT lpValue
  146. **【返回值】
  147. *****************************************************************/
  148. BOOL COtlConnection::GetSingleDataString(LPCTSTR lpszSQL, CHAR* lpValue)
  149. {
  150. return m_pOtlConnHost->GetSingleDataString(lpszSQL, lpValue);
  151. }
  152. /*****************************************************************
  153. **【函数名称】 GetSingleDataStr
  154. **【函数功能】 获取字符串单值
  155. **【参数】 IN lpszSQL SQL查询语句
  156. OUT lpValue
  157. **【返回值】
  158. *****************************************************************/
  159. CString COtlConnection::GetSingleDataStr(LPCTSTR strSql) // 获取字符串单值
  160. {
  161. CHAR buff[OTL_MAX_BUFF_SIZE];
  162. if (m_pOtlConnHost->GetSingleDataString(strSql, buff))
  163. {
  164. CString strValue = buff;
  165. return strValue;
  166. }
  167. return "";
  168. }
  169. /*****************************************************************
  170. **【函数名称】 GetSingleDataStrtoInt
  171. **【函数功能】 获取字符串单值并转化成整型返回
  172. **【参数】 CString strSql SQL查询语句
  173. **【返回值】
  174. *****************************************************************/
  175. long COtlConnection::GetSingleDataStr2Int(LPCTSTR strSql)
  176. {
  177. CString strResult = GetSingleDataStr(strSql);
  178. return atoi(strResult);
  179. }
  180. /*****************************************************************
  181. **【函数名称】 GetSingleDataText
  182. **【函数功能】 获取Text串单值
  183. **【参数】 IN lpszSQL SQL查询语句
  184. OUT lpValue 返回值
  185. **【返回值】
  186. *****************************************************************/
  187. BOOL COtlConnection::GetSingleDataText(LPCTSTR lpszSQL, CHAR* lpValue)
  188. {
  189. return m_pOtlConnHost->GetSingleDataText(lpszSQL, lpValue);
  190. }
  191. /*****************************************************************
  192. **【函数名称】 GetSingleDataInt
  193. **【函数功能】 获取整型单值
  194. **【参数】 IN lpszSQL SQL查询语句
  195. OUT nValue 返回值
  196. **【返回值】
  197. *****************************************************************/
  198. BOOL COtlConnection::GetSingleDataInt(LPCTSTR lpszSQL, LONG& nValue)
  199. {
  200. return m_pOtlConnHost->GetSingleDataInt(lpszSQL, nValue);
  201. }
  202. /*****************************************************************
  203. **【函数名称】 GetSingleDataInt
  204. **【函数功能】 获取整型单值
  205. **【参数】 CString strSql SQL查询语句
  206. **【返回值】 成功返回 查询结果int值 失败返回-1
  207. *****************************************************************/
  208. long COtlConnection::GetSingleDataInt(LPCTSTR strSql)
  209. {
  210. long lValue = 0;
  211. if (m_pOtlConnHost->GetSingleDataInt(strSql, lValue))
  212. {
  213. return lValue;
  214. }
  215. return -1;
  216. }
  217. /*****************************************************************
  218. **【函数名称】 QueryRecords
  219. **【函数功能】 查询记录集
  220. **【参数】 lpszSQL SQL查询语句
  221. **【返回值】
  222. *****************************************************************/
  223. OTL_RECORD_SET* COtlConnection::QueryRecords(LPCTSTR lpszSQL)
  224. {
  225. COtlRecordset* pRD = new COtlRecordset(m_pOtlConnHost);
  226. if(!pRD->__InitData(lpszSQL))
  227. {
  228. OTL_RECORD_SET::DestroyInstance(pRD);
  229. return NULL;
  230. }
  231. return pRD;
  232. }
  233. /*****************************************************************
  234. **【函数名称】 CallStoredProc
  235. **【函数功能】 调用存储过程
  236. **【参数】 a_DeclareWord:存储过程声明语句
  237. **【返回值】
  238. *****************************************************************/
  239. OTL_STORED_PROC* COtlConnection::CallStoredProc( const CString& a_DeclareWord )
  240. {
  241. return m_pOtlConnHost->CallStoredProc(a_DeclareWord);
  242. }
  243. /*****************************************************************
  244. **【函数名称】 GetLastError
  245. **【函数功能】 获取最近一次错误信息
  246. **【参数】
  247. **【返回值】
  248. *****************************************************************/
  249. LPCTSTR COtlConnection::GetLastError()
  250. {
  251. return m_pOtlConnHost->GetLastError();
  252. }