中间件标准版5.1git,去除基础模块

DbSetter.cpp 67KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961
  1. #include "StdAfx.h"
  2. #include "DbSetter.h"
  3. #include "resource.h"
  4. CDbSetter::CDbSetter(void)
  5. {
  6. }
  7. CDbSetter::~CDbSetter(void)
  8. {
  9. }
  10. /*****************************************************************
  11. **【函数名称】 __createConfigTable4SqlServer
  12. **【函数功能】 为SqlServer数据库创建配置表
  13. **【参数】
  14. **【返回值】
  15. ****************************************************************/
  16. bool CDbSetter::__createConfigTable4SqlServer( void )
  17. {
  18. IOtlConnection* pOtlCon = IOtlConnection::getInstance();
  19. CString strSQL;
  20. // conf_system 配置表
  21. pOtlCon->ExecCommand(_T("truncate table conf_system"));
  22. //pOtlCon->DropTableCommand(_T("DROP TABLE conf_system"));
  23. // strSQL = "CREATE TABLE [dbo].[conf_system](" \
  24. // "[id] [int] IDENTITY(1,1) NOT NULL," \
  25. // "[name] [varchar](50) NULL," \
  26. // "[value] [varchar](300) NULL," \
  27. // "CONSTRAINT [PK_conf_system] PRIMARY KEY CLUSTERED " \
  28. // "(" \
  29. // "[id] ASC" \
  30. // ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]" \
  31. // ") ON [PRIMARY]";
  32. //
  33. //
  34. // if(!pOtlCon->ExecCommand(strSQL))
  35. // return false;
  36. // conf_ivr_flow IVR流程表
  37. pOtlCon->ExecCommand(_T("truncate table conf_ivr_flow"));
  38. // pOtlCon->DropTableCommand(_T("DROP TABLE conf_ivr_flow"));
  39. // strSQL = "CREATE TABLE [dbo].[conf_ivr_flow](" \
  40. // "[FlowID] [int] IDENTITY(0,1) NOT NULL," \
  41. // "[FilePath] [varchar](512) NOT NULL," \
  42. // "CONSTRAINT [PK_conf_ivr_flow] PRIMARY KEY CLUSTERED " \
  43. // "(" \
  44. // "[FlowID] ASC" \
  45. // ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]" \
  46. // ") ON [PRIMARY]";
  47. // if(!pOtlCon->ExecCommand(strSQL))
  48. // return false;
  49. // conf_dev 设备配置表
  50. pOtlCon->ExecCommand(_T("truncate table conf_dev"));
  51. // pOtlCon->DropTableCommand(_T("DROP TABLE conf_dev"));
  52. // strSQL = "CREATE TABLE [dbo].[conf_dev](" \
  53. // "[id] [int] IDENTITY(1,1) NOT NULL," \
  54. // "[name] [varchar](50) NULL," \
  55. // "[value] [varchar](300) NULL," \
  56. // "CONSTRAINT [PK_conf_dev] PRIMARY KEY CLUSTERED " \
  57. // "(" \
  58. // "[id] ASC" \
  59. // ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]" \
  60. // ") ON [PRIMARY]";
  61. // if(!pOtlCon->ExecCommand(strSQL))
  62. // return false;
  63. // conf_line 线路配置表
  64. pOtlCon->ExecCommand(_T("truncate table conf_line"));
  65. // pOtlCon->DropTableCommand(_T("DROP TABLE conf_line"));
  66. // strSQL = "CREATE TABLE [dbo].[conf_line](" \
  67. // "[id] [int] NOT NULL," \
  68. // "[type] [int] NOT NULL," \
  69. // "[value] [varchar](100) NULL," \
  70. // "CONSTRAINT [PK_conf_line] PRIMARY KEY CLUSTERED " \
  71. // "(" \
  72. // "[id] ASC" \
  73. // ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]" \
  74. // ") ON [PRIMARY]";
  75. // if(!pOtlCon->ExecCommand(strSQL))
  76. // return false;
  77. // conf_vs VS配置表
  78. pOtlCon->ExecCommand(_T("truncate table conf_vs"));
  79. // pOtlCon->DropTableCommand(_T("DROP TABLE conf_vs"));
  80. // strSQL = "CREATE TABLE [dbo].[conf_vs](" \
  81. // "[id] [int] IDENTITY(1,1) NOT NULL," \
  82. // "[name] [varchar](50) NULL," \
  83. // "[value] [varchar](300) NULL," \
  84. // "[value2] [varchar](300) NULL," \
  85. // "CONSTRAINT [PK_conf_vs] PRIMARY KEY CLUSTERED " \
  86. // "(" \
  87. // "[id] ASC" \
  88. // ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]" \
  89. // ") ON [PRIMARY]";
  90. // if(!pOtlCon->ExecCommand(strSQL))
  91. // return false;
  92. // SIP账号表
  93. pOtlCon->ExecCommand(_T("truncate table conf_sip_account"));
  94. // pOtlCon->DropTableCommand(_T("DROP TABLE conf_sip_account"));
  95. // strSQL = "CREATE TABLE [dbo].[conf_sip_account](" \
  96. // "[id] [int] NOT NULL," \
  97. // "[account] [varchar](50) NOT NULL," \
  98. // "[auth_account] [varchar](50) NOT NULL," \
  99. // "[password] [varchar](30) NULL," \
  100. // "[proxy_addr] [varchar](50) NOT NULL," \
  101. // "[proxy_port] [int] NOT NULL," \
  102. // "[reg] [varchar](10) NOT NULL," \
  103. // "[reg_interval] [int] NOT NULL," \
  104. // "CONSTRAINT [PK_conf_sip_account] PRIMARY KEY CLUSTERED " \
  105. // "(" \
  106. // "[id] ASC" \
  107. // ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]" \
  108. // ") ON [PRIMARY]";
  109. // if(!pOtlCon->ExecCommand(strSQL))
  110. // return false;
  111. // 中继表
  112. pOtlCon->ExecCommand(_T("truncate table conf_trunk_item"));
  113. // pOtlCon->DropTableCommand(_T("DROP TABLE conf_trunk_item"));
  114. // strSQL = "CREATE TABLE [dbo].[conf_trunk_item](" \
  115. // "[id] [int] NOT NULL," \
  116. // "[node] [int] NOT NULL," \
  117. // "[board] [int] NOT NULL," \
  118. // "[span] [int] NOT NULL," \
  119. // "[sip_user] [int] NOT NULL," \
  120. // "CONSTRAINT [PK_conf_trunk_item] PRIMARY KEY CLUSTERED " \
  121. // "(" \
  122. // "[id] ASC" \
  123. // ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]" \
  124. // ") ON [PRIMARY]";
  125. // if(!pOtlCon->ExecCommand(strSQL))
  126. // return false;
  127. // 呼叫中继选择表
  128. pOtlCon->ExecCommand(_T("truncate table conf_trunk_match"));
  129. // pOtlCon->DropTableCommand(_T("DROP TABLE conf_trunk_match"));
  130. // strSQL = "CREATE TABLE [dbo].[conf_trunk_match](" \
  131. // "[id] [int] IDENTITY(1,1) NOT NULL," \
  132. // "[prefix] [varchar](10) NOT NULL," \
  133. // "[caller] [varchar](30) NOT NULL," \
  134. // "[trunk_id] [int] NOT NULL," \
  135. // "[priority] [int] NOT NULL," \
  136. // "CONSTRAINT [PK_conf_trunk_match] PRIMARY KEY CLUSTERED " \
  137. // "(" \
  138. // "[id] ASC" \
  139. // ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]" \
  140. // ") ON [PRIMARY]";
  141. // if(!pOtlCon->ExecCommand(strSQL))
  142. // return false;
  143. return true;
  144. }
  145. /*****************************************************************
  146. **【函数名称】 __createConfigTable4MySql
  147. **【函数功能】 为MySql数据库创建配置表
  148. **【参数】
  149. **【返回值】
  150. ****************************************************************/
  151. bool CDbSetter::__createConfigTable4MySql( void )
  152. {
  153. IOtlConnection* pOtlCon = IOtlConnection::getInstance();
  154. CString strSQL;
  155. // conf_system 配置表
  156. pOtlCon->DropTableCommand(_T("DROP TABLE conf_system"));
  157. strSQL = "CREATE TABLE conf_system (" \
  158. "id int(10) NOT NULL auto_increment," \
  159. "name varchar(50) default NULL," \
  160. "value varchar(300) default NULL," \
  161. "PRIMARY KEY (id)" \
  162. ") ENGINE=MyISAM DEFAULT CHARSET=utf8";
  163. if(!pOtlCon->ExecCommand(strSQL))
  164. return false;
  165. // conf_ivr_flow
  166. pOtlCon->DropTableCommand(_T("DROP TABLE conf_ivr_flow"));
  167. strSQL = "CREATE TABLE conf_ivr_flow (" \
  168. "FlowID int(10) NOT NULL auto_increment," \
  169. "FilePath varchar(512) NOT NULL," \
  170. "PRIMARY KEY (FlowID)" \
  171. ") ENGINE=MyISAM DEFAULT CHARSET=utf8";
  172. if(!pOtlCon->ExecCommand(strSQL))
  173. return false;
  174. // conf_dev 设备配置表
  175. pOtlCon->DropTableCommand(_T("DROP TABLE conf_dev"));
  176. strSQL = "CREATE TABLE conf_dev (" \
  177. "id int(10) NOT NULL auto_increment," \
  178. "name varchar(50) default NULL," \
  179. "value varchar(300) default NULL," \
  180. "PRIMARY KEY (id)" \
  181. ") ENGINE=MyISAM DEFAULT CHARSET=utf8";
  182. if(!pOtlCon->ExecCommand(strSQL))
  183. return false;
  184. // conf_line 线路配置表
  185. pOtlCon->DropTableCommand(_T("DROP TABLE conf_line"));
  186. strSQL = "CREATE TABLE conf_line (" \
  187. "id int(10) NOT NULL," \
  188. "type int(10) NOT NULL," \
  189. "value varchar(100) default NULL," \
  190. "PRIMARY KEY (id)" \
  191. ") ENGINE=MyISAM DEFAULT CHARSET=utf8";
  192. if(!pOtlCon->ExecCommand(strSQL))
  193. return false;
  194. // conf_vs VS配置表
  195. pOtlCon->DropTableCommand(_T("DROP TABLE conf_vs"));
  196. strSQL = "CREATE TABLE conf_vs (" \
  197. "id int(10) NOT NULL auto_increment," \
  198. "name varchar(50) default NULL," \
  199. "value varchar(300) default NULL," \
  200. "value2 varchar(300) default NULL," \
  201. "PRIMARY KEY (id)" \
  202. ") ENGINE=MyISAM DEFAULT CHARSET=utf8";
  203. if(!pOtlCon->ExecCommand(strSQL))
  204. return false;
  205. // SIP账号表
  206. pOtlCon->DropTableCommand(_T("DROP TABLE conf_sip_account"));
  207. strSQL = "CREATE TABLE conf_sip_account (" \
  208. "id int(10) NOT NULL," \
  209. "account varchar(50) NOT NULL," \
  210. "auth_account varchar(50) NOT NULL," \
  211. "password varchar(30) default NULL," \
  212. "proxy_addr varchar(50) NOT NULL," \
  213. "proxy_port int(10) NOT NULL," \
  214. "reg varchar(10) NOT NULL," \
  215. "reg_interval int(10) NOT NULL," \
  216. "PRIMARY KEY (id)" \
  217. ") ENGINE=MyISAM DEFAULT CHARSET=utf8";
  218. if(!pOtlCon->ExecCommand(strSQL))
  219. return false;
  220. // 中继表
  221. pOtlCon->DropTableCommand(_T("DROP TABLE conf_trunk_item"));
  222. strSQL = "CREATE TABLE conf_trunk_item(" \
  223. "id int(10) NOT NULL," \
  224. "node int(10) NOT NULL," \
  225. "board int(10) NOT NULL," \
  226. "span int(10) NOT NULL," \
  227. "sip_user int(10) NOT NULL," \
  228. "PRIMARY KEY (id)" \
  229. ") ENGINE=MyISAM DEFAULT CHARSET=utf8";
  230. if(!pOtlCon->ExecCommand(strSQL))
  231. return false;
  232. // 呼叫中继选择表
  233. pOtlCon->DropTableCommand(_T("DROP TABLE conf_trunk_match"));
  234. strSQL = "CREATE TABLE conf_trunk_match(" \
  235. "id int(10) NOT NULL auto_increment," \
  236. "prefix varchar(10) NOT NULL," \
  237. "caller varchar(30) NOT NULL," \
  238. "trunk_id int(10) NOT NULL," \
  239. "priority int(10) NOT NULL," \
  240. "PRIMARY KEY (id)" \
  241. ") ENGINE=MyISAM DEFAULT CHARSET=utf8";
  242. if(!pOtlCon->ExecCommand(strSQL))
  243. return false;
  244. return true;
  245. }
  246. /*****************************************************************
  247. **【函数名称】 __createStatisticsTable4SqlServer
  248. **【函数功能】 为SqlServer数据库创建统计表
  249. **【参数】
  250. **【返回值】
  251. ****************************************************************/
  252. bool CDbSetter::__createStatisticsTable4SqlServer( void )
  253. {
  254. IOtlConnection* pOtlCon = IOtlConnection::getInstance();
  255. CString strSQL;
  256. // stat_callid
  257. pOtlCon->ExecCommand(_T("truncate table stat_callid"));
  258. // pOtlCon->DropTableCommand(_T("DROP TABLE stat_callid"));
  259. // strSQL = "CREATE TABLE [dbo].[stat_callid](" \
  260. // "[id] [int] NOT NULL," \
  261. // "[name] [varchar](30) NULL," \
  262. // "[value] [bigint] NULL," \
  263. // "CONSTRAINT [PK_stat_callid] PRIMARY KEY CLUSTERED " \
  264. // "(" \
  265. // "[id] ASC" \
  266. // ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON " \
  267. // "[PRIMARY]" \
  268. // ") ON [PRIMARY]";
  269. // if(!pOtlCon->ExecCommand(strSQL) || !pOtlCon->InsertConstant(_T("INSERT INTO stat_callid values (1, 'callid', 0)")))
  270. // return false;
  271. if(!pOtlCon->InsertConstant(_T("INSERT INTO stat_callid values (1, 'callid', 0)")))
  272. return false;
  273. // rep_host
  274. pOtlCon->ExecCommand(_T("truncate table rep_host"));
  275. // pOtlCon->DropTableCommand(_T("DROP TABLE rep_host"));
  276. // strSQL = "CREATE TABLE [dbo].[rep_host](" \
  277. // "[CallID] [bigint] NOT NULL," \
  278. // "[ActionID] [tinyint] NOT NULL," \
  279. // "[CallTypeOpType] [tinyint] NULL," \
  280. // "[HostLine] [int] NULL," \
  281. // "[CallerNum] [varchar](64) NULL," \
  282. // "[CalleeNum] [varchar](64) NULL," \
  283. // "[TimeConnected] [datetime] NULL," \
  284. // "[TimeHangUp] [datetime] NULL," \
  285. // "CONSTRAINT [PK_rep_host] PRIMARY KEY CLUSTERED " \
  286. // "(" \
  287. // "[CallID] ASC," \
  288. // "[ActionID] ASC" \
  289. // ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON " \
  290. // "[PRIMARY]" \
  291. // ") ON [PRIMARY]";
  292. // if(!pOtlCon->ExecCommand(strSQL))
  293. // return false;
  294. // rep_trunk_call_in
  295. pOtlCon->ExecCommand(_T("truncate table rep_trunk_call_in"));
  296. // pOtlCon->DropTableCommand(_T("DROP TABLE rep_trunk_call_in"));
  297. // strSQL = "CREATE TABLE [dbo].[rep_trunk_call_in](" \
  298. // "[CallID] [bigint] NOT NULL," \
  299. // "[ActionID] [tinyint] NOT NULL," \
  300. // "[CallerNum] [varchar](64) NULL," \
  301. // "[CalleeNum] [varchar](64) NULL," \
  302. // "[TimeCallIn] [datetime] NULL," \
  303. // "[IsLeaveMsg] [tinyint] NULL," \
  304. // "[MsgFileName] [varchar](512) NULL," \
  305. // "[IsWantAgent] [tinyint] NULL," \
  306. // "[TimeWantAgent] [datetime] NULL," \
  307. // "[IsWantAgentSucceed] [tinyint] NULL," \
  308. // "[PeriodWantAgent] [int] NULL," \
  309. // "[TimeTurnAgent] [datetime] NULL," \
  310. // "[IsTurnAgentSucceed] [tinyint] NULL," \
  311. // "[AgentID] [int] NULL," \
  312. // "[PeriodTurnAgent] [int] NULL," \
  313. // "[TimeConnected] [datetime] NULL," \
  314. // "[FinalAgentID] [int] NULL," \
  315. // "[FinaleAgentNum] [varchar](64) NULL," \
  316. // "[RecFileName] [varchar](512) NULL," \
  317. // "[TimeHangUp] [datetime] NULL," \
  318. // "[PeriodTalking] [int] NULL," \
  319. // "[IsSuccess] [int] NULL,"\
  320. // "[FailType] [int] NULL,"\
  321. // "CONSTRAINT [PK_rep_trunk_call_in] PRIMARY KEY CLUSTERED " \
  322. // "(" \
  323. // "[CallID] ASC," \
  324. // "[ActionID] ASC" \
  325. // ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON " \
  326. // "[PRIMARY]" \
  327. // ") ON [PRIMARY]";
  328. // if(!pOtlCon->ExecCommand(strSQL))
  329. // return false;
  330. // rep_ext_call_in
  331. pOtlCon->ExecCommand(_T("truncate table rep_ext_call_in"));
  332. // pOtlCon->DropTableCommand(_T("DROP TABLE rep_ext_call_in"));
  333. // strSQL = "CREATE TABLE [dbo].[rep_ext_call_in](" \
  334. // "[CallID] [bigint] NOT NULL," \
  335. // "[ActionID] [tinyint] NOT NULL," \
  336. // "[CallType] [tinyint] NULL," \
  337. // "[PeerLineType] [tinyint] NULL," \
  338. // "[CallerAgentID] [int] NULL," \
  339. // "[CallerNum] [varchar](64) NULL," \
  340. // "[CalleeAgentID] [int] NULL," \
  341. // "[CalleeNum] [varchar](64) NULL," \
  342. // "[TimeAlerting] [datetime] NULL," \
  343. // "[PeriodAlerting] [int] NULL," \
  344. // "[IsAnswer] [tinyint] NULL," \
  345. // "[TimeAnswer] [datetime] NULL," \
  346. // "[RecFileName] [varchar](512) NULL," \
  347. // "[TimeHangUp] [datetime] NULL," \
  348. // "[PeriodTalking] [int] NULL," \
  349. // "CONSTRAINT [PK_rep_ext_call_in] PRIMARY KEY CLUSTERED " \
  350. // "(" \
  351. // "[CallID] ASC," \
  352. // "[ActionID] ASC" \
  353. // ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON " \
  354. // "[PRIMARY]" \
  355. // ") ON [PRIMARY]";
  356. // if(!pOtlCon->ExecCommand(strSQL))
  357. // return false;
  358. // rep_ext_call_out
  359. pOtlCon->ExecCommand(_T("truncate table rep_ext_call_out"));
  360. // pOtlCon->DropTableCommand(_T("DROP TABLE rep_ext_call_out"));
  361. // strSQL = "CREATE TABLE [dbo].[rep_ext_call_out](" \
  362. // "[CallID] [bigint] NOT NULL," \
  363. // "[ActionID] [tinyint] NOT NULL," \
  364. // "[CallType] [tinyint] NULL," \
  365. // "[PeerLineType] [tinyint] NULL," \
  366. // "[CallerAgentID] [int] NULL," \
  367. // "[CallerNum] [varchar](64) NULL," \
  368. // "[CalleeAgentID] [int] NULL," \
  369. // "[CalleeNum] [varchar](64) NULL," \
  370. // "[TimeRingBack] [datetime] NULL," \
  371. // "[IsCallOutSucceed] [tinyint] NULL," \
  372. // "[TimeConnected] [datetime] NULL," \
  373. // "[FinalAgentId] [int] NULL," \
  374. // "[FinalAgentNum] [varchar](64) NULL," \
  375. // "[RecFileName] [varchar](512) NULL," \
  376. // "[TimeHangUp] [datetime] NULL," \
  377. // "[PeriodTalking] [int] NULL," \
  378. // "CONSTRAINT [PK_rep_ext_call_out] PRIMARY KEY CLUSTERED " \
  379. // "(" \
  380. // "[CallID] ASC," \
  381. // "[ActionID] ASC" \
  382. // ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON " \
  383. // "[PRIMARY]" \
  384. // ") ON [PRIMARY]";
  385. // if(!pOtlCon->ExecCommand(strSQL))
  386. // return false;
  387. // rep_ivr_call_out
  388. pOtlCon->ExecCommand(_T("truncate table rep_ivr_call_out"));
  389. // pOtlCon->DropTableCommand(_T("DROP TABLE rep_ivr_call_out"));
  390. // strSQL = "CREATE TABLE [dbo].[rep_ivr_call_out](" \
  391. // "[CallID] [bigint] NOT NULL," \
  392. // "[ActionID] [tinyint] NOT NULL," \
  393. // "[HostLine] [int] NULL," \
  394. // "[CallerNum] [varchar](64) NULL," \
  395. // "[CalleeNum] [varchar](64) NULL," \
  396. // "[TimeRingBack] [datetime] NULL," \
  397. // "[IsCallOutSucceed] [tinyint] NULL," \
  398. // "[TimeConnected] [datetime] NULL," \
  399. // "[TimeHangUp] [datetime] NULL," \
  400. // "[PeriodTalking] [int] NULL," \
  401. // "CONSTRAINT [PK_rep_ivr_call_out] PRIMARY KEY CLUSTERED " \
  402. // "(" \
  403. // "[CallID] ASC," \
  404. // "[ActionID] ASC" \
  405. // ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON " \
  406. // "[PRIMARY]" \
  407. // ") ON [PRIMARY]";
  408. // if(!pOtlCon->ExecCommand(strSQL))
  409. // return false;
  410. // rep_fax
  411. pOtlCon->ExecCommand(_T("truncate table rep_fax"));
  412. // pOtlCon->DropTableCommand(_T("DROP TABLE rep_fax"));
  413. // strSQL = "CREATE TABLE [dbo].[rep_fax](" \
  414. // "[CallID] [bigint] NOT NULL," \
  415. // "[ActionID] [tinyint] NOT NULL," \
  416. // "[IsAuto] [tinyint] NULL," \
  417. // "[RcvOrSend] [tinyint] NULL," \
  418. // "[TimeFaxBegin] [datetime] NULL," \
  419. // "[CallerAgentID] [int] NULL," \
  420. // "[CallerNum] [varchar](64) NULL," \
  421. // "[CalleeAgentID] [int] NULL," \
  422. // "[CalleeNum] [varchar](64) NULL," \
  423. // "[IsSucceed] [tinyint] NULL," \
  424. // "[PeriodFax] [int] NULL," \
  425. // "[FaxFileName] [varchar](512) NULL," \
  426. // "CONSTRAINT [PK_rep_fax] PRIMARY KEY CLUSTERED " \
  427. // "(" \
  428. // "[CallID] ASC," \
  429. // "[ActionID] ASC" \
  430. // ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON " \
  431. // "[PRIMARY]" \
  432. // ") ON [PRIMARY]";
  433. // if(!pOtlCon->ExecCommand(strSQL))
  434. // return false;
  435. // rep_transfer
  436. pOtlCon->ExecCommand(_T("truncate table rep_transfer"));
  437. // pOtlCon->DropTableCommand(_T("DROP TABLE rep_transfer"));
  438. // strSQL = "CREATE TABLE [dbo].[rep_transfer](" \
  439. // "[CallId] [bigint] NOT NULL," \
  440. // "[ActionID] [tinyint] NOT NULL," \
  441. // "[PeerLineType] [tinyint] NULL," \
  442. // "[CallerAgentID] [int] NULL," \
  443. // "[CallerNum] [varchar](64) NULL," \
  444. // "[CalleeAgentID] [int] NULL," \
  445. // "[CalleeNum] [varchar](64) NULL," \
  446. // "[TimeBeginTransfer] [datetime] NULL," \
  447. // "[IsTransferSucceed] [tinyint] NULL," \
  448. // "[TimeConnected] [datetime] NULL," \
  449. // "[TimeTransferSucceed] [datetime] NULL," \
  450. // "[TimeEndTransfer] [datetime] NULL," \
  451. // "CONSTRAINT [PK_rep_transfer] PRIMARY KEY CLUSTERED " \
  452. // "(" \
  453. // "[CallId] ASC," \
  454. // "[ActionID] ASC" \
  455. // ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON " \
  456. // "[PRIMARY]" \
  457. // ") ON [PRIMARY]";
  458. // if(!pOtlCon->ExecCommand(strSQL))
  459. // return false;
  460. // rep_conference
  461. pOtlCon->ExecCommand(_T("truncate table rep_conference"));
  462. // pOtlCon->DropTableCommand(_T("DROP TABLE rep_conference"));
  463. // strSQL = "CREATE TABLE [dbo].[rep_conference](" \
  464. // "[CallID] [bigint] NOT NULL," \
  465. // "[ActionID] [tinyint] NOT NULL," \
  466. // "[PeerLineType] [tinyint] NULL," \
  467. // "[CallerAgentID] [int] NULL," \
  468. // "[CallerNum] [varchar](64) NULL," \
  469. // "[CalleeAgentID] [int] NULL," \
  470. // "[CalleeNum] [varchar](64) NULL," \
  471. // "[TimeConference] [datetime] NULL," \
  472. // "[IsConferenceSucceed] [tinyint] NULL," \
  473. // "[TimeConnected] [datetime] NULL," \
  474. // "[TimeConferenceEnd] [datetime] NULL," \
  475. // "CONSTRAINT [PK_rep_conference] PRIMARY KEY CLUSTERED " \
  476. // "(" \
  477. // "[CallID] ASC," \
  478. // "[ActionID] ASC" \
  479. // ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON " \
  480. // "[PRIMARY]" \
  481. // ") ON [PRIMARY]";
  482. // if(!pOtlCon->ExecCommand(strSQL))
  483. // return false;
  484. // rep_agent_state
  485. pOtlCon->ExecCommand(_T("truncate table rep_agent_state"));
  486. // pOtlCon->DropTableCommand(_T("DROP TABLE rep_agent_state"));
  487. // strSQL = "CREATE TABLE [dbo].[rep_agent_state](" \
  488. // "[AgentId] [int] NOT NULL," \
  489. // "[LoginId] [bigint] NOT NULL," \
  490. // "[State] [int] NULL," \
  491. // "[OccurTime] [datetime] NULL," \
  492. // "[Duration] [bigint] NULL"\
  493. // ") ON [PRIMARY]";
  494. // if(!pOtlCon->ExecCommand(strSQL))
  495. // return false;
  496. // rep_agent_detail
  497. pOtlCon->ExecCommand(_T("truncate table rep_agent_detail"));
  498. // pOtlCon->DropTableCommand(_T("DROP TABLE rep_agent_detail"));
  499. // strSQL = "CREATE TABLE [dbo].[rep_agent_detail](" \
  500. // "[AgentId] [int] NOT NULL," \
  501. // "[LoginId] [bigint] NOT NULL," \
  502. // "[ExtId] [int] NULL," \
  503. // "[AgentIP] [varchar](20) COLLATE Chinese_PRC_CI_AS NULL," \
  504. // "[GroupId] [varchar](64) NULL," \
  505. // "[AgentType] [int] NULL," \
  506. // "[TimeLogin] [datetime] NULL," \
  507. // "[TimeLogout] [datetime] NULL," \
  508. // "[LogoutHost] [int] NULL," \
  509. // "[LogoutType] [int] NULL," \
  510. // "[LoginTimes] [bigint] NULL," \
  511. // "[FreeTimes] [bigint] NULL," \
  512. // "[ReposeTimes] [bigint] NULL," \
  513. // "[TalkTimes] [bigint] NULL," \
  514. // "[ReposeNum] [bigint] NULL," \
  515. // "[AnswerNum] [bigint] NULL," \
  516. // "[AnswerNumExt] [bigint] NULL," \
  517. // "[AnswerNumTrunk] [bigint] NULL," \
  518. // "[CallInNumExt] [bigint] NULL," \
  519. // "[CallInNumTrunk] [bigint] NULL," \
  520. // "[CallInTimesTotalExt] [bigint] NULL," \
  521. // "[CallInTimesTotalTrunk] [bigint] NULL," \
  522. // "[CallOutNumExt] [bigint] NULL," \
  523. // "[CallOutNumTrunk] [bigint] NULL," \
  524. // "[CallOutTimesTotalExt] [bigint] NULL," \
  525. // "[CallOutTimesTotalTrunk] [bigint] NULL," \
  526. // "[CallOutOkNumExt] [bigint] NULL," \
  527. // "[CallOutOkNumTrunk] [bigint] NULL," \
  528. // "[OverWorkTimesTotal] [bigint] NULL," \
  529. // "[TimeAlertingTotal] [bigint] NULL," \
  530. // "[TransferNum] [bigint] NULL," \
  531. // "[BeTransferNum] [bigint] NULL," \
  532. // "[ConferenceNum] [bigint] NULL," \
  533. // "[BeConferenceNum] [bigint] NULL," \
  534. // "[OverAlertingNum] [bigint] NULL," \
  535. // "CONSTRAINT [PK_rep_agent_detail] PRIMARY KEY CLUSTERED " \
  536. // "(" \
  537. // "[AgentId] ASC," \
  538. // "[LoginId] ASC" \
  539. // ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]"\
  540. // ") ON [PRIMARY]" ;
  541. // if(!pOtlCon->ExecCommand(strSQL))
  542. // return false;
  543. return true;
  544. }
  545. /*****************************************************************
  546. **【函数名称】 __createStatisticsTable4MySql
  547. **【函数功能】 为MySql数据库创建统计表
  548. **【参数】
  549. **【返回值】
  550. ****************************************************************/
  551. bool CDbSetter::__createStatisticsTable4MySql( void )
  552. {
  553. IOtlConnection* pOtlCon = IOtlConnection::getInstance();
  554. CString strSQL;
  555. // stat_callid
  556. pOtlCon->DropTableCommand(_T("DROP TABLE stat_callid"));
  557. strSQL = "CREATE TABLE stat_callid (" \
  558. "id int(10) NOT NULL," \
  559. "name varchar(30) NULL," \
  560. "value bigint NULL," \
  561. "PRIMARY KEY (id)" \
  562. ") ENGINE=MyISAM DEFAULT CHARSET=utf8";
  563. if(!pOtlCon->ExecCommand(strSQL) || !pOtlCon->InsertConstant(_T("INSERT INTO stat_callid values (1, 'callid', 0)")))
  564. return false;
  565. // rep_host
  566. pOtlCon->DropTableCommand(_T("DROP TABLE rep_host"));
  567. strSQL = "CREATE TABLE rep_host(" \
  568. "CallID bigint NOT NULL," \
  569. "ActionID tinyint NOT NULL," \
  570. "CallTypeOpType tinyint NULL," \
  571. "HostLine int(10) NULL," \
  572. "CallerNum varchar(64) NULL," \
  573. "CalleeNum varchar(64) NULL," \
  574. "TimeConnected datetime NULL," \
  575. "TimeHangUp datetime NULL," \
  576. "PRIMARY KEY (CallID, ActionID)" \
  577. ") ENGINE=MyISAM DEFAULT CHARSET=utf8";
  578. if(!pOtlCon->ExecCommand(strSQL))
  579. return false;
  580. // rep_trunk_call_in
  581. pOtlCon->DropTableCommand(_T("DROP TABLE rep_trunk_call_in"));
  582. strSQL = "CREATE TABLE rep_trunk_call_in(" \
  583. "CallID bigint NOT NULL," \
  584. "ActionID tinyint NOT NULL," \
  585. "CallerNum varchar(64) NULL," \
  586. "CalleeNum varchar(64) NULL," \
  587. "TimeCallIn datetime NULL," \
  588. "IsLeaveMsg tinyint NULL," \
  589. "MsgFileName varchar(512) NULL," \
  590. "IsWantAgent tinyint NULL," \
  591. "TimeWantAgent datetime NULL," \
  592. "IsWantAgentSucceed tinyint NULL," \
  593. "PeriodWantAgent int(10) NULL," \
  594. "TimeTurnAgent datetime NULL," \
  595. "IsTurnAgentSucceed tinyint NULL," \
  596. "AgentID int(10) NULL," \
  597. "PeriodTurnAgent int(10) NULL," \
  598. "TimeConnected datetime NULL," \
  599. "FinalAgentID int(10) NULL," \
  600. "FinaleAgentNum varchar(64) NULL," \
  601. "RecFileName varchar(512) NULL," \
  602. "TimeHangUp datetime NULL," \
  603. "PeriodTalking int(10) NULL," \
  604. "IsSuccess int(10) DEFAULT NULL,"\
  605. "FailType int(10) DEFAULT NULL,"\
  606. "PRIMARY KEY (CallID, ActionID)" \
  607. ") ENGINE=MyISAM DEFAULT CHARSET=utf8";
  608. if(!pOtlCon->ExecCommand(strSQL))
  609. return false;
  610. // rep_ext_call_in
  611. pOtlCon->DropTableCommand(_T("DROP TABLE rep_ext_call_in"));
  612. strSQL = "CREATE TABLE rep_ext_call_in(" \
  613. "CallID bigint NOT NULL," \
  614. "ActionID tinyint NOT NULL," \
  615. "CallType tinyint NULL," \
  616. "PeerLineType tinyint NULL," \
  617. "CallerAgentID int(10) NULL," \
  618. "CallerNum varchar(64) NULL," \
  619. "CalleeAgentID int(10) NULL," \
  620. "CalleeNum varchar(64) NULL," \
  621. "TimeAlerting datetime NULL," \
  622. "PeriodAlerting int(10) NULL," \
  623. "IsAnswer tinyint NULL," \
  624. "TimeAnswer datetime NULL," \
  625. "RecFileName varchar(512) NULL," \
  626. "TimeHangUp datetime NULL," \
  627. "PeriodTalking int(10) NULL," \
  628. "PRIMARY KEY (CallID, ActionID)" \
  629. ") ENGINE=MyISAM DEFAULT CHARSET=utf8";
  630. if(!pOtlCon->ExecCommand(strSQL))
  631. return false;
  632. // rep_ext_call_out
  633. pOtlCon->DropTableCommand(_T("DROP TABLE rep_ext_call_out"));
  634. strSQL = "CREATE TABLE rep_ext_call_out(" \
  635. "CallID bigint NOT NULL," \
  636. "ActionID tinyint NOT NULL," \
  637. "CallType tinyint NULL," \
  638. "PeerLineType tinyint NULL," \
  639. "CallerAgentID int(10) NULL," \
  640. "CallerNum varchar(64) NULL," \
  641. "CalleeAgentID int(10) NULL," \
  642. "CalleeNum varchar(64) NULL," \
  643. "TimeRingBack datetime NULL," \
  644. "IsCallOutSucceed tinyint NULL," \
  645. "TimeConnected datetime NULL," \
  646. "FinalAgentId int(10) NULL," \
  647. "FinalAgentNum varchar(64) NULL," \
  648. "RecFileName varchar(512) NULL," \
  649. "TimeHangUp datetime NULL," \
  650. "PeriodTalking int(10) NULL," \
  651. "PRIMARY KEY (CallID, ActionID)" \
  652. ") ENGINE=MyISAM DEFAULT CHARSET=utf8";
  653. if(!pOtlCon->ExecCommand(strSQL))
  654. return false;
  655. // rep_ivr_call_out
  656. pOtlCon->DropTableCommand(_T("DROP TABLE rep_ivr_call_out"));
  657. strSQL = "CREATE TABLE rep_ivr_call_out(" \
  658. "CallID bigint NOT NULL," \
  659. "ActionID tinyint NOT NULL," \
  660. "HostLine int(10) NULL," \
  661. "CallerNum varchar(64) NULL," \
  662. "CalleeNum varchar(64) NULL," \
  663. "TimeRingBack datetime NULL," \
  664. "IsCallOutSucceed tinyint NULL," \
  665. "TimeConnected datetime NULL," \
  666. "TimeHangUp datetime NULL," \
  667. "PeriodTalking int(10) NULL," \
  668. "PRIMARY KEY (CallID, ActionID)" \
  669. ") ENGINE=MyISAM DEFAULT CHARSET=utf8";
  670. if(!pOtlCon->ExecCommand(strSQL))
  671. return false;
  672. // rep_fax
  673. pOtlCon->DropTableCommand(_T("DROP TABLE rep_fax"));
  674. strSQL = "CREATE TABLE rep_fax(" \
  675. "CallID bigint NOT NULL," \
  676. "ActionID tinyint NOT NULL," \
  677. "IsAuto tinyint NULL," \
  678. "RcvOrSend tinyint NULL," \
  679. "TimeFaxBegin datetime NULL," \
  680. "CallerAgentID int(10) NULL," \
  681. "CallerNum varchar(64) NULL," \
  682. "CalleeAgentID int(10) NULL," \
  683. "CalleeNum varchar(64) NULL," \
  684. "IsSucceed tinyint NULL," \
  685. "PeriodFax int(10) NULL," \
  686. "FaxFileName varchar(512) NULL," \
  687. "PRIMARY KEY (CallID, ActionID)" \
  688. ") ENGINE=MyISAM DEFAULT CHARSET=utf8";
  689. if(!pOtlCon->ExecCommand(strSQL))
  690. return false;
  691. // rep_transfer
  692. pOtlCon->DropTableCommand(_T("DROP TABLE rep_transfer"));
  693. strSQL = "CREATE TABLE rep_transfer(" \
  694. "CallId bigint NOT NULL," \
  695. "ActionID tinyint NOT NULL," \
  696. "PeerLineType tinyint NULL," \
  697. "CallerAgentID int(10) NULL," \
  698. "CallerNum varchar(64) NULL," \
  699. "CalleeAgentID int(10) NULL," \
  700. "CalleeNum varchar(64) NULL," \
  701. "TimeBeginTransfer datetime NULL," \
  702. "IsTransferSucceed tinyint NULL," \
  703. "TimeConnected datetime NULL," \
  704. "TimeTransferSucceed datetime NULL," \
  705. "TimeEndTransfer datetime NULL," \
  706. "PRIMARY KEY (CallID, ActionID)" \
  707. ") ENGINE=MyISAM DEFAULT CHARSET=utf8";
  708. if(!pOtlCon->ExecCommand(strSQL))
  709. return false;
  710. // rep_conference
  711. pOtlCon->DropTableCommand(_T("DROP TABLE rep_conference"));
  712. strSQL = "CREATE TABLE rep_conference(" \
  713. "CallID bigint NOT NULL," \
  714. "ActionID tinyint NOT NULL," \
  715. "PeerLineType tinyint NULL," \
  716. "CallerAgentID int(10) NULL," \
  717. "CallerNum varchar(64) NULL," \
  718. "CalleeAgentID int(10) NULL," \
  719. "CalleeNum varchar(64) NULL," \
  720. "TimeConference datetime NULL," \
  721. "IsConferenceSucceed tinyint NULL," \
  722. "TimeConnected datetime NULL," \
  723. "TimeConferenceEnd datetime NULL," \
  724. "PRIMARY KEY (CallID, ActionID)" \
  725. ") ENGINE=MyISAM DEFAULT CHARSET=utf8";
  726. if(!pOtlCon->ExecCommand(strSQL))
  727. return false;
  728. // rep_agent_state
  729. pOtlCon->DropTableCommand(_T("DROP TABLE rep_agent_state"));
  730. strSQL = "CREATE TABLE rep_agent_state(" \
  731. "AgentId int(10) NOT NULL," \
  732. "LoginId bigint NOT NULL," \
  733. "State int(10) NULL," \
  734. "OccurTime datetime NULL," \
  735. "Duration bigint NULL," \
  736. "ReposeType int(10) DEFAULT NULL,"\
  737. "CallId bigint(20) DEFAULT NULL"\
  738. ") ENGINE=MyISAM DEFAULT CHARSET=utf8";
  739. if(!pOtlCon->ExecCommand(strSQL))
  740. return false;
  741. // rep_agent_detail
  742. pOtlCon->DropTableCommand(_T("DROP TABLE rep_agent_detail"));
  743. strSQL = "CREATE TABLE rep_agent_detail ("\
  744. "AgentId int(10) NOT NULL,"\
  745. "LoginId bigint(20) NOT NULL,"\
  746. "ExtId int(10) DEFAULT NULL,"\
  747. "AgentIP varchar(20) DEFAULT NULL,"\
  748. "GroupId varchar(64) DEFAULT NULL,"\
  749. "AgentType int(10) DEFAULT NULL,"\
  750. "TimeLogin datetime DEFAULT NULL,"\
  751. "TimeLogout datetime DEFAULT NULL,"\
  752. "LogoutHost int(10) DEFAULT NULL,"\
  753. "LogoutType int(10) DEFAULT NULL,"\
  754. "LoginTimes int(10) DEFAULT NULL,"\
  755. "FreeTimes int(10) DEFAULT NULL,"\
  756. "ReposeTimes int(10) DEFAULT NULL,"\
  757. "TalkTimes int(10) DEFAULT NULL,"\
  758. "ReposeNum int(10) DEFAULT NULL,"\
  759. "AnswerNum int(10) DEFAULT NULL,"\
  760. "AnswerNumExt int(20) DEFAULT NULL,"\
  761. "AnswerNumTrunk int(20) DEFAULT NULL,"\
  762. "CallInNumExt int(20) DEFAULT NULL,"\
  763. "CallInNumTrunk int(20) DEFAULT NULL,"\
  764. "CallInTimesTotalExt int(20) DEFAULT NULL,"\
  765. "CallInTimesTotalTrunk int(20) DEFAULT NULL,"\
  766. "CallOutNumExt int(20) DEFAULT NULL,"\
  767. "CallOutNumTrunk int(20) DEFAULT NULL,"\
  768. "CallOutTimesTotalExt int(20) DEFAULT NULL,"\
  769. "CallOutTimesTotalTrunk int(20) DEFAULT NULL,"\
  770. "CallOutOkNumExt int(20) DEFAULT NULL,"\
  771. "CallOutOkNumTrunk int(20) DEFAULT NULL,"\
  772. "OverWorkTimesTotal int(20) DEFAULT NULL,"\
  773. "TimeAlertingTotal int(20) DEFAULT NULL,"\
  774. "TransferNum int(20) DEFAULT NULL,"\
  775. "BeTransferNum int(20) DEFAULT NULL,"\
  776. "ConferenceNum int(20) DEFAULT NULL,"\
  777. "BeConferenceNum int(20) DEFAULT NULL,"\
  778. "OverAlertingNum int(20) DEFAULT NULL,"\
  779. "PRIMARY KEY (AgentId,LoginId)"\
  780. ") ENGINE=InnoDB DEFAULT CHARSET=utf8;";
  781. if(!pOtlCon->ExecCommand(strSQL))
  782. return false;
  783. return true;
  784. }
  785. /*****************************************************************
  786. **【函数名称】 __createStoredProcedure4SqlServer
  787. **【函数功能】 为SqlServer数据库创建存储过程
  788. **【参数】
  789. **【返回值】
  790. ****************************************************************/
  791. bool CDbSetter::__createStoredProcedure4SqlServer( void )
  792. {
  793. // 从RESOURCE中读取创建存储过程的语句
  794. HINSTANCE hInst = AfxGetResourceHandle();
  795. HRSRC hRes = FindResource(hInst, MAKEINTRESOURCE(IDR_TXT_DA_4_SQLSERVER), RES_TYPE_PROCEDURE);
  796. if (hRes == NULL)
  797. {
  798. AfxMessageBox("查找SQL Server版本的统计表存储过程资源文件失败!");
  799. return false;
  800. }
  801. DWORD len = SizeofResource(hInst, hRes);
  802. HGLOBAL hTxt = LoadResource(hInst, hRes);
  803. CString strSQL((char*)hTxt, len);
  804. FreeResource(hTxt);
  805. IOtlConnection* pOtlCon = IOtlConnection::getInstance();
  806. //pOtlCon->ExecCommand("DROP PROCEDURE IF EXISTS proc_DataAnalysis");
  807. if (!pOtlCon->ExecCommand(strSQL))
  808. {
  809. CString strError = _T("创建SQL Server统计表存储过程出错:\r\n");
  810. strError += pOtlCon->GetLastError();
  811. AfxMessageBox(strError);
  812. return false;
  813. }
  814. return true;
  815. }
  816. /*****************************************************************
  817. **【函数名称】 __createStoredProcedure4MySql
  818. **【函数功能】 为MySql数据库创建存储过程
  819. **【参数】
  820. **【返回值】
  821. ****************************************************************/
  822. bool CDbSetter::__createStoredProcedure4MySql( void )
  823. {
  824. // 从RESOURCE中读取创建存储过程的语句
  825. HINSTANCE hInst = AfxGetResourceHandle();
  826. HRSRC hRes = FindResource(hInst, MAKEINTRESOURCE(IDR_TXT_DA_4_MYSQL), RES_TYPE_PROCEDURE);
  827. if (hRes == NULL)
  828. {
  829. AfxMessageBox("查找MySQL版本的统计表存储过程资源文件失败!");
  830. return false;
  831. }
  832. DWORD len = SizeofResource(hInst, hRes);
  833. HGLOBAL hTxt = LoadResource(hInst, hRes);
  834. CString strSQL((char*)hTxt, len);
  835. FreeResource(hTxt);
  836. IOtlConnection* pOtlCon = IOtlConnection::getInstance();
  837. if (!pOtlCon->ExecCommand(strSQL))
  838. {
  839. CString strError = _T("创建MySQL统计表存储过程出错:\r\n");
  840. strError += pOtlCon->GetLastError();
  841. AfxMessageBox(strError);
  842. return false;
  843. }
  844. return true;
  845. }
  846. /*****************************************************************
  847. **【函数名称】 createTableConfig
  848. **【函数功能】 创建配置表
  849. **【参数】
  850. **【返回值】
  851. ****************************************************************/
  852. bool CDbSetter::createTableConfig( DB_TYPE DbTp )
  853. {
  854. if(DbTp == DB_SQLServer)
  855. return __createConfigTable4SqlServer();
  856. else if(DbTp == DB_MySQL)
  857. return __createConfigTable4MySql();
  858. else
  859. return false;
  860. }
  861. /*****************************************************************
  862. **【函数名称】 createTableStatistics
  863. **【函数功能】 创建统计表
  864. **【参数】
  865. **【返回值】
  866. ****************************************************************/
  867. bool CDbSetter::createTableStatistics( DB_TYPE DbTp )
  868. {
  869. if(DbTp == DB_SQLServer)
  870. return __createStatisticsTable4SqlServer();
  871. else if(DbTp == DB_MySQL)
  872. return __createStatisticsTable4MySql();
  873. else
  874. return false;
  875. }
  876. /*****************************************************************
  877. **【函数名称】 addStoredProcedure
  878. **【函数功能】 添加统计存储过程
  879. **【参数】
  880. **【返回值】
  881. ****************************************************************/
  882. bool CDbSetter::addStoredProcedure( DB_TYPE DbTp )
  883. {
  884. if(DbTp == DB_SQLServer)
  885. return __createStoredProcedure4SqlServer();
  886. else if(DbTp == DB_MySQL)
  887. return __createStoredProcedure4MySql();
  888. else
  889. return false;
  890. }