华辉中间件项目(代码服务器上没有,用杨成电脑的源代码上传的)

DbSetter.cpp 67KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962
  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. "IsDynamicGw varchar(10) NOT NULL" \
  218. ") ENGINE=MyISAM DEFAULT CHARSET=utf8";
  219. if(!pOtlCon->ExecCommand(strSQL))
  220. return false;
  221. // 中继表
  222. pOtlCon->DropTableCommand(_T("DROP TABLE conf_trunk_item"));
  223. strSQL = "CREATE TABLE conf_trunk_item(" \
  224. "id int(10) NOT NULL," \
  225. "node int(10) NOT NULL," \
  226. "board int(10) NOT NULL," \
  227. "span int(10) NOT NULL," \
  228. "sip_user int(10) NOT NULL," \
  229. "PRIMARY KEY (id)" \
  230. ") ENGINE=MyISAM DEFAULT CHARSET=utf8";
  231. if(!pOtlCon->ExecCommand(strSQL))
  232. return false;
  233. // 呼叫中继选择表
  234. pOtlCon->DropTableCommand(_T("DROP TABLE conf_trunk_match"));
  235. strSQL = "CREATE TABLE conf_trunk_match(" \
  236. "id int(10) NOT NULL auto_increment," \
  237. "prefix varchar(10) NOT NULL," \
  238. "caller varchar(30) NOT NULL," \
  239. "trunk_id int(10) NOT NULL," \
  240. "priority int(10) NOT NULL," \
  241. "PRIMARY KEY (id)" \
  242. ") ENGINE=MyISAM DEFAULT CHARSET=utf8";
  243. if(!pOtlCon->ExecCommand(strSQL))
  244. return false;
  245. return true;
  246. }
  247. /*****************************************************************
  248. **【函数名称】 __createStatisticsTable4SqlServer
  249. **【函数功能】 为SqlServer数据库创建统计表
  250. **【参数】
  251. **【返回值】
  252. ****************************************************************/
  253. bool CDbSetter::__createStatisticsTable4SqlServer( void )
  254. {
  255. IOtlConnection* pOtlCon = IOtlConnection::getInstance();
  256. CString strSQL;
  257. // stat_callid
  258. pOtlCon->ExecCommand(_T("truncate table stat_callid"));
  259. // pOtlCon->DropTableCommand(_T("DROP TABLE stat_callid"));
  260. // strSQL = "CREATE TABLE [dbo].[stat_callid](" \
  261. // "[id] [int] NOT NULL," \
  262. // "[name] [varchar](30) NULL," \
  263. // "[value] [bigint] NULL," \
  264. // "CONSTRAINT [PK_stat_callid] PRIMARY KEY CLUSTERED " \
  265. // "(" \
  266. // "[id] ASC" \
  267. // ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON " \
  268. // "[PRIMARY]" \
  269. // ") ON [PRIMARY]";
  270. // if(!pOtlCon->ExecCommand(strSQL) || !pOtlCon->InsertConstant(_T("INSERT INTO stat_callid values (1, 'callid', 0)")))
  271. // return false;
  272. if(!pOtlCon->InsertConstant(_T("INSERT INTO stat_callid values (1, 'callid', 0)")))
  273. return false;
  274. // rep_host
  275. pOtlCon->ExecCommand(_T("truncate table rep_host"));
  276. // pOtlCon->DropTableCommand(_T("DROP TABLE rep_host"));
  277. // strSQL = "CREATE TABLE [dbo].[rep_host](" \
  278. // "[CallID] [bigint] NOT NULL," \
  279. // "[ActionID] [tinyint] NOT NULL," \
  280. // "[CallTypeOpType] [tinyint] NULL," \
  281. // "[HostLine] [int] NULL," \
  282. // "[CallerNum] [varchar](64) NULL," \
  283. // "[CalleeNum] [varchar](64) NULL," \
  284. // "[TimeConnected] [datetime] NULL," \
  285. // "[TimeHangUp] [datetime] NULL," \
  286. // "CONSTRAINT [PK_rep_host] PRIMARY KEY CLUSTERED " \
  287. // "(" \
  288. // "[CallID] ASC," \
  289. // "[ActionID] ASC" \
  290. // ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON " \
  291. // "[PRIMARY]" \
  292. // ") ON [PRIMARY]";
  293. // if(!pOtlCon->ExecCommand(strSQL))
  294. // return false;
  295. // rep_trunk_call_in
  296. pOtlCon->ExecCommand(_T("truncate table rep_trunk_call_in"));
  297. // pOtlCon->DropTableCommand(_T("DROP TABLE rep_trunk_call_in"));
  298. // strSQL = "CREATE TABLE [dbo].[rep_trunk_call_in](" \
  299. // "[CallID] [bigint] NOT NULL," \
  300. // "[ActionID] [tinyint] NOT NULL," \
  301. // "[CallerNum] [varchar](64) NULL," \
  302. // "[CalleeNum] [varchar](64) NULL," \
  303. // "[TimeCallIn] [datetime] NULL," \
  304. // "[IsLeaveMsg] [tinyint] NULL," \
  305. // "[MsgFileName] [varchar](512) NULL," \
  306. // "[IsWantAgent] [tinyint] NULL," \
  307. // "[TimeWantAgent] [datetime] NULL," \
  308. // "[IsWantAgentSucceed] [tinyint] NULL," \
  309. // "[PeriodWantAgent] [int] NULL," \
  310. // "[TimeTurnAgent] [datetime] NULL," \
  311. // "[IsTurnAgentSucceed] [tinyint] NULL," \
  312. // "[AgentID] [int] NULL," \
  313. // "[PeriodTurnAgent] [int] NULL," \
  314. // "[TimeConnected] [datetime] NULL," \
  315. // "[FinalAgentID] [int] NULL," \
  316. // "[FinaleAgentNum] [varchar](64) NULL," \
  317. // "[RecFileName] [varchar](512) NULL," \
  318. // "[TimeHangUp] [datetime] NULL," \
  319. // "[PeriodTalking] [int] NULL," \
  320. // "[IsSuccess] [int] NULL,"\
  321. // "[FailType] [int] NULL,"\
  322. // "CONSTRAINT [PK_rep_trunk_call_in] PRIMARY KEY CLUSTERED " \
  323. // "(" \
  324. // "[CallID] ASC," \
  325. // "[ActionID] ASC" \
  326. // ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON " \
  327. // "[PRIMARY]" \
  328. // ") ON [PRIMARY]";
  329. // if(!pOtlCon->ExecCommand(strSQL))
  330. // return false;
  331. // rep_ext_call_in
  332. pOtlCon->ExecCommand(_T("truncate table rep_ext_call_in"));
  333. // pOtlCon->DropTableCommand(_T("DROP TABLE rep_ext_call_in"));
  334. // strSQL = "CREATE TABLE [dbo].[rep_ext_call_in](" \
  335. // "[CallID] [bigint] NOT NULL," \
  336. // "[ActionID] [tinyint] NOT NULL," \
  337. // "[CallType] [tinyint] NULL," \
  338. // "[PeerLineType] [tinyint] NULL," \
  339. // "[CallerAgentID] [int] NULL," \
  340. // "[CallerNum] [varchar](64) NULL," \
  341. // "[CalleeAgentID] [int] NULL," \
  342. // "[CalleeNum] [varchar](64) NULL," \
  343. // "[TimeAlerting] [datetime] NULL," \
  344. // "[PeriodAlerting] [int] NULL," \
  345. // "[IsAnswer] [tinyint] NULL," \
  346. // "[TimeAnswer] [datetime] NULL," \
  347. // "[RecFileName] [varchar](512) NULL," \
  348. // "[TimeHangUp] [datetime] NULL," \
  349. // "[PeriodTalking] [int] NULL," \
  350. // "CONSTRAINT [PK_rep_ext_call_in] PRIMARY KEY CLUSTERED " \
  351. // "(" \
  352. // "[CallID] ASC," \
  353. // "[ActionID] ASC" \
  354. // ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON " \
  355. // "[PRIMARY]" \
  356. // ") ON [PRIMARY]";
  357. // if(!pOtlCon->ExecCommand(strSQL))
  358. // return false;
  359. // rep_ext_call_out
  360. pOtlCon->ExecCommand(_T("truncate table rep_ext_call_out"));
  361. // pOtlCon->DropTableCommand(_T("DROP TABLE rep_ext_call_out"));
  362. // strSQL = "CREATE TABLE [dbo].[rep_ext_call_out](" \
  363. // "[CallID] [bigint] NOT NULL," \
  364. // "[ActionID] [tinyint] NOT NULL," \
  365. // "[CallType] [tinyint] NULL," \
  366. // "[PeerLineType] [tinyint] NULL," \
  367. // "[CallerAgentID] [int] NULL," \
  368. // "[CallerNum] [varchar](64) NULL," \
  369. // "[CalleeAgentID] [int] NULL," \
  370. // "[CalleeNum] [varchar](64) NULL," \
  371. // "[TimeRingBack] [datetime] NULL," \
  372. // "[IsCallOutSucceed] [tinyint] NULL," \
  373. // "[TimeConnected] [datetime] NULL," \
  374. // "[FinalAgentId] [int] NULL," \
  375. // "[FinalAgentNum] [varchar](64) NULL," \
  376. // "[RecFileName] [varchar](512) NULL," \
  377. // "[TimeHangUp] [datetime] NULL," \
  378. // "[PeriodTalking] [int] NULL," \
  379. // "CONSTRAINT [PK_rep_ext_call_out] PRIMARY KEY CLUSTERED " \
  380. // "(" \
  381. // "[CallID] ASC," \
  382. // "[ActionID] ASC" \
  383. // ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON " \
  384. // "[PRIMARY]" \
  385. // ") ON [PRIMARY]";
  386. // if(!pOtlCon->ExecCommand(strSQL))
  387. // return false;
  388. // rep_ivr_call_out
  389. pOtlCon->ExecCommand(_T("truncate table rep_ivr_call_out"));
  390. // pOtlCon->DropTableCommand(_T("DROP TABLE rep_ivr_call_out"));
  391. // strSQL = "CREATE TABLE [dbo].[rep_ivr_call_out](" \
  392. // "[CallID] [bigint] NOT NULL," \
  393. // "[ActionID] [tinyint] NOT NULL," \
  394. // "[HostLine] [int] NULL," \
  395. // "[CallerNum] [varchar](64) NULL," \
  396. // "[CalleeNum] [varchar](64) NULL," \
  397. // "[TimeRingBack] [datetime] NULL," \
  398. // "[IsCallOutSucceed] [tinyint] NULL," \
  399. // "[TimeConnected] [datetime] NULL," \
  400. // "[TimeHangUp] [datetime] NULL," \
  401. // "[PeriodTalking] [int] NULL," \
  402. // "CONSTRAINT [PK_rep_ivr_call_out] PRIMARY KEY CLUSTERED " \
  403. // "(" \
  404. // "[CallID] ASC," \
  405. // "[ActionID] ASC" \
  406. // ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON " \
  407. // "[PRIMARY]" \
  408. // ") ON [PRIMARY]";
  409. // if(!pOtlCon->ExecCommand(strSQL))
  410. // return false;
  411. // rep_fax
  412. pOtlCon->ExecCommand(_T("truncate table rep_fax"));
  413. // pOtlCon->DropTableCommand(_T("DROP TABLE rep_fax"));
  414. // strSQL = "CREATE TABLE [dbo].[rep_fax](" \
  415. // "[CallID] [bigint] NOT NULL," \
  416. // "[ActionID] [tinyint] NOT NULL," \
  417. // "[IsAuto] [tinyint] NULL," \
  418. // "[RcvOrSend] [tinyint] NULL," \
  419. // "[TimeFaxBegin] [datetime] NULL," \
  420. // "[CallerAgentID] [int] NULL," \
  421. // "[CallerNum] [varchar](64) NULL," \
  422. // "[CalleeAgentID] [int] NULL," \
  423. // "[CalleeNum] [varchar](64) NULL," \
  424. // "[IsSucceed] [tinyint] NULL," \
  425. // "[PeriodFax] [int] NULL," \
  426. // "[FaxFileName] [varchar](512) NULL," \
  427. // "CONSTRAINT [PK_rep_fax] PRIMARY KEY CLUSTERED " \
  428. // "(" \
  429. // "[CallID] ASC," \
  430. // "[ActionID] ASC" \
  431. // ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON " \
  432. // "[PRIMARY]" \
  433. // ") ON [PRIMARY]";
  434. // if(!pOtlCon->ExecCommand(strSQL))
  435. // return false;
  436. // rep_transfer
  437. pOtlCon->ExecCommand(_T("truncate table rep_transfer"));
  438. // pOtlCon->DropTableCommand(_T("DROP TABLE rep_transfer"));
  439. // strSQL = "CREATE TABLE [dbo].[rep_transfer](" \
  440. // "[CallId] [bigint] NOT NULL," \
  441. // "[ActionID] [tinyint] NOT NULL," \
  442. // "[PeerLineType] [tinyint] NULL," \
  443. // "[CallerAgentID] [int] NULL," \
  444. // "[CallerNum] [varchar](64) NULL," \
  445. // "[CalleeAgentID] [int] NULL," \
  446. // "[CalleeNum] [varchar](64) NULL," \
  447. // "[TimeBeginTransfer] [datetime] NULL," \
  448. // "[IsTransferSucceed] [tinyint] NULL," \
  449. // "[TimeConnected] [datetime] NULL," \
  450. // "[TimeTransferSucceed] [datetime] NULL," \
  451. // "[TimeEndTransfer] [datetime] NULL," \
  452. // "CONSTRAINT [PK_rep_transfer] PRIMARY KEY CLUSTERED " \
  453. // "(" \
  454. // "[CallId] ASC," \
  455. // "[ActionID] ASC" \
  456. // ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON " \
  457. // "[PRIMARY]" \
  458. // ") ON [PRIMARY]";
  459. // if(!pOtlCon->ExecCommand(strSQL))
  460. // return false;
  461. // rep_conference
  462. pOtlCon->ExecCommand(_T("truncate table rep_conference"));
  463. // pOtlCon->DropTableCommand(_T("DROP TABLE rep_conference"));
  464. // strSQL = "CREATE TABLE [dbo].[rep_conference](" \
  465. // "[CallID] [bigint] NOT NULL," \
  466. // "[ActionID] [tinyint] NOT NULL," \
  467. // "[PeerLineType] [tinyint] NULL," \
  468. // "[CallerAgentID] [int] NULL," \
  469. // "[CallerNum] [varchar](64) NULL," \
  470. // "[CalleeAgentID] [int] NULL," \
  471. // "[CalleeNum] [varchar](64) NULL," \
  472. // "[TimeConference] [datetime] NULL," \
  473. // "[IsConferenceSucceed] [tinyint] NULL," \
  474. // "[TimeConnected] [datetime] NULL," \
  475. // "[TimeConferenceEnd] [datetime] NULL," \
  476. // "CONSTRAINT [PK_rep_conference] PRIMARY KEY CLUSTERED " \
  477. // "(" \
  478. // "[CallID] ASC," \
  479. // "[ActionID] ASC" \
  480. // ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON " \
  481. // "[PRIMARY]" \
  482. // ") ON [PRIMARY]";
  483. // if(!pOtlCon->ExecCommand(strSQL))
  484. // return false;
  485. // rep_agent_state
  486. pOtlCon->ExecCommand(_T("truncate table rep_agent_state"));
  487. // pOtlCon->DropTableCommand(_T("DROP TABLE rep_agent_state"));
  488. // strSQL = "CREATE TABLE [dbo].[rep_agent_state](" \
  489. // "[AgentId] [int] NOT NULL," \
  490. // "[LoginId] [bigint] NOT NULL," \
  491. // "[State] [int] NULL," \
  492. // "[OccurTime] [datetime] NULL," \
  493. // "[Duration] [bigint] NULL"\
  494. // ") ON [PRIMARY]";
  495. // if(!pOtlCon->ExecCommand(strSQL))
  496. // return false;
  497. // rep_agent_detail
  498. pOtlCon->ExecCommand(_T("truncate table rep_agent_detail"));
  499. // pOtlCon->DropTableCommand(_T("DROP TABLE rep_agent_detail"));
  500. // strSQL = "CREATE TABLE [dbo].[rep_agent_detail](" \
  501. // "[AgentId] [int] NOT NULL," \
  502. // "[LoginId] [bigint] NOT NULL," \
  503. // "[ExtId] [int] NULL," \
  504. // "[AgentIP] [varchar](20) COLLATE Chinese_PRC_CI_AS NULL," \
  505. // "[GroupId] [varchar](64) NULL," \
  506. // "[AgentType] [int] NULL," \
  507. // "[TimeLogin] [datetime] NULL," \
  508. // "[TimeLogout] [datetime] NULL," \
  509. // "[LogoutHost] [int] NULL," \
  510. // "[LogoutType] [int] NULL," \
  511. // "[LoginTimes] [bigint] NULL," \
  512. // "[FreeTimes] [bigint] NULL," \
  513. // "[ReposeTimes] [bigint] NULL," \
  514. // "[TalkTimes] [bigint] NULL," \
  515. // "[ReposeNum] [bigint] NULL," \
  516. // "[AnswerNum] [bigint] NULL," \
  517. // "[AnswerNumExt] [bigint] NULL," \
  518. // "[AnswerNumTrunk] [bigint] NULL," \
  519. // "[CallInNumExt] [bigint] NULL," \
  520. // "[CallInNumTrunk] [bigint] NULL," \
  521. // "[CallInTimesTotalExt] [bigint] NULL," \
  522. // "[CallInTimesTotalTrunk] [bigint] NULL," \
  523. // "[CallOutNumExt] [bigint] NULL," \
  524. // "[CallOutNumTrunk] [bigint] NULL," \
  525. // "[CallOutTimesTotalExt] [bigint] NULL," \
  526. // "[CallOutTimesTotalTrunk] [bigint] NULL," \
  527. // "[CallOutOkNumExt] [bigint] NULL," \
  528. // "[CallOutOkNumTrunk] [bigint] NULL," \
  529. // "[OverWorkTimesTotal] [bigint] NULL," \
  530. // "[TimeAlertingTotal] [bigint] NULL," \
  531. // "[TransferNum] [bigint] NULL," \
  532. // "[BeTransferNum] [bigint] NULL," \
  533. // "[ConferenceNum] [bigint] NULL," \
  534. // "[BeConferenceNum] [bigint] NULL," \
  535. // "[OverAlertingNum] [bigint] NULL," \
  536. // "CONSTRAINT [PK_rep_agent_detail] PRIMARY KEY CLUSTERED " \
  537. // "(" \
  538. // "[AgentId] ASC," \
  539. // "[LoginId] ASC" \
  540. // ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]"\
  541. // ") ON [PRIMARY]" ;
  542. // if(!pOtlCon->ExecCommand(strSQL))
  543. // return false;
  544. return true;
  545. }
  546. /*****************************************************************
  547. **【函数名称】 __createStatisticsTable4MySql
  548. **【函数功能】 为MySql数据库创建统计表
  549. **【参数】
  550. **【返回值】
  551. ****************************************************************/
  552. bool CDbSetter::__createStatisticsTable4MySql( void )
  553. {
  554. IOtlConnection* pOtlCon = IOtlConnection::getInstance();
  555. CString strSQL;
  556. // stat_callid
  557. pOtlCon->DropTableCommand(_T("DROP TABLE stat_callid"));
  558. strSQL = "CREATE TABLE stat_callid (" \
  559. "id int(10) NOT NULL," \
  560. "name varchar(30) NULL," \
  561. "value bigint NULL," \
  562. "PRIMARY KEY (id)" \
  563. ") ENGINE=MyISAM DEFAULT CHARSET=utf8";
  564. if(!pOtlCon->ExecCommand(strSQL) || !pOtlCon->InsertConstant(_T("INSERT INTO stat_callid values (1, 'callid', 0)")))
  565. return false;
  566. // rep_host
  567. pOtlCon->DropTableCommand(_T("DROP TABLE rep_host"));
  568. strSQL = "CREATE TABLE rep_host(" \
  569. "CallID bigint NOT NULL," \
  570. "ActionID tinyint NOT NULL," \
  571. "CallTypeOpType tinyint NULL," \
  572. "HostLine int(10) NULL," \
  573. "CallerNum varchar(64) NULL," \
  574. "CalleeNum varchar(64) NULL," \
  575. "TimeConnected datetime NULL," \
  576. "TimeHangUp datetime NULL," \
  577. "PRIMARY KEY (CallID, ActionID)" \
  578. ") ENGINE=MyISAM DEFAULT CHARSET=utf8";
  579. if(!pOtlCon->ExecCommand(strSQL))
  580. return false;
  581. // rep_trunk_call_in
  582. pOtlCon->DropTableCommand(_T("DROP TABLE rep_trunk_call_in"));
  583. strSQL = "CREATE TABLE rep_trunk_call_in(" \
  584. "CallID bigint NOT NULL," \
  585. "ActionID tinyint NOT NULL," \
  586. "CallerNum varchar(64) NULL," \
  587. "CalleeNum varchar(64) NULL," \
  588. "TimeCallIn datetime NULL," \
  589. "IsLeaveMsg tinyint NULL," \
  590. "MsgFileName varchar(512) NULL," \
  591. "IsWantAgent tinyint NULL," \
  592. "TimeWantAgent datetime NULL," \
  593. "IsWantAgentSucceed tinyint NULL," \
  594. "PeriodWantAgent int(10) NULL," \
  595. "TimeTurnAgent datetime NULL," \
  596. "IsTurnAgentSucceed tinyint NULL," \
  597. "AgentID int(10) NULL," \
  598. "PeriodTurnAgent int(10) NULL," \
  599. "TimeConnected datetime NULL," \
  600. "FinalAgentID int(10) NULL," \
  601. "FinaleAgentNum varchar(64) NULL," \
  602. "RecFileName varchar(512) NULL," \
  603. "TimeHangUp datetime NULL," \
  604. "PeriodTalking int(10) NULL," \
  605. "IsSuccess int(10) DEFAULT NULL,"\
  606. "FailType int(10) DEFAULT NULL,"\
  607. "PRIMARY KEY (CallID, ActionID)" \
  608. ") ENGINE=MyISAM DEFAULT CHARSET=utf8";
  609. if(!pOtlCon->ExecCommand(strSQL))
  610. return false;
  611. // rep_ext_call_in
  612. pOtlCon->DropTableCommand(_T("DROP TABLE rep_ext_call_in"));
  613. strSQL = "CREATE TABLE rep_ext_call_in(" \
  614. "CallID bigint NOT NULL," \
  615. "ActionID tinyint NOT NULL," \
  616. "CallType tinyint NULL," \
  617. "PeerLineType tinyint NULL," \
  618. "CallerAgentID int(10) NULL," \
  619. "CallerNum varchar(64) NULL," \
  620. "CalleeAgentID int(10) NULL," \
  621. "CalleeNum varchar(64) NULL," \
  622. "TimeAlerting datetime NULL," \
  623. "PeriodAlerting int(10) NULL," \
  624. "IsAnswer tinyint NULL," \
  625. "TimeAnswer datetime NULL," \
  626. "RecFileName varchar(512) NULL," \
  627. "TimeHangUp datetime NULL," \
  628. "PeriodTalking int(10) NULL," \
  629. "PRIMARY KEY (CallID, ActionID)" \
  630. ") ENGINE=MyISAM DEFAULT CHARSET=utf8";
  631. if(!pOtlCon->ExecCommand(strSQL))
  632. return false;
  633. // rep_ext_call_out
  634. pOtlCon->DropTableCommand(_T("DROP TABLE rep_ext_call_out"));
  635. strSQL = "CREATE TABLE rep_ext_call_out(" \
  636. "CallID bigint NOT NULL," \
  637. "ActionID tinyint NOT NULL," \
  638. "CallType tinyint NULL," \
  639. "PeerLineType tinyint NULL," \
  640. "CallerAgentID int(10) NULL," \
  641. "CallerNum varchar(64) NULL," \
  642. "CalleeAgentID int(10) NULL," \
  643. "CalleeNum varchar(64) NULL," \
  644. "TimeRingBack datetime NULL," \
  645. "IsCallOutSucceed tinyint NULL," \
  646. "TimeConnected datetime NULL," \
  647. "FinalAgentId int(10) NULL," \
  648. "FinalAgentNum varchar(64) NULL," \
  649. "RecFileName varchar(512) NULL," \
  650. "TimeHangUp datetime NULL," \
  651. "PeriodTalking int(10) NULL," \
  652. "PRIMARY KEY (CallID, ActionID)" \
  653. ") ENGINE=MyISAM DEFAULT CHARSET=utf8";
  654. if(!pOtlCon->ExecCommand(strSQL))
  655. return false;
  656. // rep_ivr_call_out
  657. pOtlCon->DropTableCommand(_T("DROP TABLE rep_ivr_call_out"));
  658. strSQL = "CREATE TABLE rep_ivr_call_out(" \
  659. "CallID bigint NOT NULL," \
  660. "ActionID tinyint NOT NULL," \
  661. "HostLine int(10) NULL," \
  662. "CallerNum varchar(64) NULL," \
  663. "CalleeNum varchar(64) NULL," \
  664. "TimeRingBack datetime NULL," \
  665. "IsCallOutSucceed tinyint NULL," \
  666. "TimeConnected datetime NULL," \
  667. "TimeHangUp datetime NULL," \
  668. "PeriodTalking int(10) NULL," \
  669. "PRIMARY KEY (CallID, ActionID)" \
  670. ") ENGINE=MyISAM DEFAULT CHARSET=utf8";
  671. if(!pOtlCon->ExecCommand(strSQL))
  672. return false;
  673. // rep_fax
  674. pOtlCon->DropTableCommand(_T("DROP TABLE rep_fax"));
  675. strSQL = "CREATE TABLE rep_fax(" \
  676. "CallID bigint NOT NULL," \
  677. "ActionID tinyint NOT NULL," \
  678. "IsAuto tinyint NULL," \
  679. "RcvOrSend tinyint NULL," \
  680. "TimeFaxBegin datetime NULL," \
  681. "CallerAgentID int(10) NULL," \
  682. "CallerNum varchar(64) NULL," \
  683. "CalleeAgentID int(10) NULL," \
  684. "CalleeNum varchar(64) NULL," \
  685. "IsSucceed tinyint NULL," \
  686. "PeriodFax int(10) NULL," \
  687. "FaxFileName varchar(512) NULL," \
  688. "PRIMARY KEY (CallID, ActionID)" \
  689. ") ENGINE=MyISAM DEFAULT CHARSET=utf8";
  690. if(!pOtlCon->ExecCommand(strSQL))
  691. return false;
  692. // rep_transfer
  693. pOtlCon->DropTableCommand(_T("DROP TABLE rep_transfer"));
  694. strSQL = "CREATE TABLE rep_transfer(" \
  695. "CallId bigint NOT NULL," \
  696. "ActionID tinyint NOT NULL," \
  697. "PeerLineType tinyint NULL," \
  698. "CallerAgentID int(10) NULL," \
  699. "CallerNum varchar(64) NULL," \
  700. "CalleeAgentID int(10) NULL," \
  701. "CalleeNum varchar(64) NULL," \
  702. "TimeBeginTransfer datetime NULL," \
  703. "IsTransferSucceed tinyint NULL," \
  704. "TimeConnected datetime NULL," \
  705. "TimeTransferSucceed datetime NULL," \
  706. "TimeEndTransfer datetime NULL," \
  707. "PRIMARY KEY (CallID, ActionID)" \
  708. ") ENGINE=MyISAM DEFAULT CHARSET=utf8";
  709. if(!pOtlCon->ExecCommand(strSQL))
  710. return false;
  711. // rep_conference
  712. pOtlCon->DropTableCommand(_T("DROP TABLE rep_conference"));
  713. strSQL = "CREATE TABLE rep_conference(" \
  714. "CallID bigint NOT NULL," \
  715. "ActionID tinyint NOT NULL," \
  716. "PeerLineType tinyint NULL," \
  717. "CallerAgentID int(10) NULL," \
  718. "CallerNum varchar(64) NULL," \
  719. "CalleeAgentID int(10) NULL," \
  720. "CalleeNum varchar(64) NULL," \
  721. "TimeConference datetime NULL," \
  722. "IsConferenceSucceed tinyint NULL," \
  723. "TimeConnected datetime NULL," \
  724. "TimeConferenceEnd datetime NULL," \
  725. "PRIMARY KEY (CallID, ActionID)" \
  726. ") ENGINE=MyISAM DEFAULT CHARSET=utf8";
  727. if(!pOtlCon->ExecCommand(strSQL))
  728. return false;
  729. // rep_agent_state
  730. pOtlCon->DropTableCommand(_T("DROP TABLE rep_agent_state"));
  731. strSQL = "CREATE TABLE rep_agent_state(" \
  732. "AgentId int(10) NOT NULL," \
  733. "LoginId bigint NOT NULL," \
  734. "State int(10) NULL," \
  735. "OccurTime datetime NULL," \
  736. "Duration bigint NULL," \
  737. "ReposeType int(10) DEFAULT NULL,"\
  738. "CallId bigint(20) DEFAULT NULL"\
  739. ") ENGINE=MyISAM DEFAULT CHARSET=utf8";
  740. if(!pOtlCon->ExecCommand(strSQL))
  741. return false;
  742. // rep_agent_detail
  743. pOtlCon->DropTableCommand(_T("DROP TABLE rep_agent_detail"));
  744. strSQL = "CREATE TABLE rep_agent_detail ("\
  745. "AgentId int(10) NOT NULL,"\
  746. "LoginId bigint(20) NOT NULL,"\
  747. "ExtId int(10) DEFAULT NULL,"\
  748. "AgentIP varchar(20) DEFAULT NULL,"\
  749. "GroupId varchar(64) DEFAULT NULL,"\
  750. "AgentType int(10) DEFAULT NULL,"\
  751. "TimeLogin datetime DEFAULT NULL,"\
  752. "TimeLogout datetime DEFAULT NULL,"\
  753. "LogoutHost int(10) DEFAULT NULL,"\
  754. "LogoutType int(10) DEFAULT NULL,"\
  755. "LoginTimes int(10) DEFAULT NULL,"\
  756. "FreeTimes int(10) DEFAULT NULL,"\
  757. "ReposeTimes int(10) DEFAULT NULL,"\
  758. "TalkTimes int(10) DEFAULT NULL,"\
  759. "ReposeNum int(10) DEFAULT NULL,"\
  760. "AnswerNum int(10) DEFAULT NULL,"\
  761. "AnswerNumExt int(20) DEFAULT NULL,"\
  762. "AnswerNumTrunk int(20) DEFAULT NULL,"\
  763. "CallInNumExt int(20) DEFAULT NULL,"\
  764. "CallInNumTrunk int(20) DEFAULT NULL,"\
  765. "CallInTimesTotalExt int(20) DEFAULT NULL,"\
  766. "CallInTimesTotalTrunk int(20) DEFAULT NULL,"\
  767. "CallOutNumExt int(20) DEFAULT NULL,"\
  768. "CallOutNumTrunk int(20) DEFAULT NULL,"\
  769. "CallOutTimesTotalExt int(20) DEFAULT NULL,"\
  770. "CallOutTimesTotalTrunk int(20) DEFAULT NULL,"\
  771. "CallOutOkNumExt int(20) DEFAULT NULL,"\
  772. "CallOutOkNumTrunk int(20) DEFAULT NULL,"\
  773. "OverWorkTimesTotal int(20) DEFAULT NULL,"\
  774. "TimeAlertingTotal int(20) DEFAULT NULL,"\
  775. "TransferNum int(20) DEFAULT NULL,"\
  776. "BeTransferNum int(20) DEFAULT NULL,"\
  777. "ConferenceNum int(20) DEFAULT NULL,"\
  778. "BeConferenceNum int(20) DEFAULT NULL,"\
  779. "OverAlertingNum int(20) DEFAULT NULL,"\
  780. "PRIMARY KEY (AgentId,LoginId)"\
  781. ") ENGINE=InnoDB DEFAULT CHARSET=utf8;";
  782. if(!pOtlCon->ExecCommand(strSQL))
  783. return false;
  784. return true;
  785. }
  786. /*****************************************************************
  787. **【函数名称】 __createStoredProcedure4SqlServer
  788. **【函数功能】 为SqlServer数据库创建存储过程
  789. **【参数】
  790. **【返回值】
  791. ****************************************************************/
  792. bool CDbSetter::__createStoredProcedure4SqlServer( void )
  793. {
  794. // 从RESOURCE中读取创建存储过程的语句
  795. HINSTANCE hInst = AfxGetResourceHandle();
  796. HRSRC hRes = FindResource(hInst, MAKEINTRESOURCE(IDR_TXT_DA_4_SQLSERVER), RES_TYPE_PROCEDURE);
  797. if (hRes == NULL)
  798. {
  799. AfxMessageBox("查找SQL Server版本的统计表存储过程资源文件失败!");
  800. return false;
  801. }
  802. DWORD len = SizeofResource(hInst, hRes);
  803. HGLOBAL hTxt = LoadResource(hInst, hRes);
  804. CString strSQL((char*)hTxt, len);
  805. FreeResource(hTxt);
  806. IOtlConnection* pOtlCon = IOtlConnection::getInstance();
  807. //pOtlCon->ExecCommand("DROP PROCEDURE IF EXISTS proc_DataAnalysis");
  808. if (!pOtlCon->ExecCommand(strSQL))
  809. {
  810. CString strError = _T("创建SQL Server统计表存储过程出错:\r\n");
  811. strError += pOtlCon->GetLastError();
  812. AfxMessageBox(strError);
  813. return false;
  814. }
  815. return true;
  816. }
  817. /*****************************************************************
  818. **【函数名称】 __createStoredProcedure4MySql
  819. **【函数功能】 为MySql数据库创建存储过程
  820. **【参数】
  821. **【返回值】
  822. ****************************************************************/
  823. bool CDbSetter::__createStoredProcedure4MySql( void )
  824. {
  825. // 从RESOURCE中读取创建存储过程的语句
  826. HINSTANCE hInst = AfxGetResourceHandle();
  827. HRSRC hRes = FindResource(hInst, MAKEINTRESOURCE(IDR_TXT_DA_4_MYSQL), RES_TYPE_PROCEDURE);
  828. if (hRes == NULL)
  829. {
  830. AfxMessageBox("查找MySQL版本的统计表存储过程资源文件失败!");
  831. return false;
  832. }
  833. DWORD len = SizeofResource(hInst, hRes);
  834. HGLOBAL hTxt = LoadResource(hInst, hRes);
  835. CString strSQL((char*)hTxt, len);
  836. FreeResource(hTxt);
  837. IOtlConnection* pOtlCon = IOtlConnection::getInstance();
  838. if (!pOtlCon->ExecCommand(strSQL))
  839. {
  840. CString strError = _T("创建MySQL统计表存储过程出错:\r\n");
  841. strError += pOtlCon->GetLastError();
  842. AfxMessageBox(strError);
  843. return false;
  844. }
  845. return true;
  846. }
  847. /*****************************************************************
  848. **【函数名称】 createTableConfig
  849. **【函数功能】 创建配置表
  850. **【参数】
  851. **【返回值】
  852. ****************************************************************/
  853. bool CDbSetter::createTableConfig( DB_TYPE DbTp )
  854. {
  855. if(DbTp == DB_SQLServer)
  856. return __createConfigTable4SqlServer();
  857. else if(DbTp == DB_MySQL)
  858. return __createConfigTable4MySql();
  859. else
  860. return false;
  861. }
  862. /*****************************************************************
  863. **【函数名称】 createTableStatistics
  864. **【函数功能】 创建统计表
  865. **【参数】
  866. **【返回值】
  867. ****************************************************************/
  868. bool CDbSetter::createTableStatistics( DB_TYPE DbTp )
  869. {
  870. if(DbTp == DB_SQLServer)
  871. return __createStatisticsTable4SqlServer();
  872. else if(DbTp == DB_MySQL)
  873. return __createStatisticsTable4MySql();
  874. else
  875. return false;
  876. }
  877. /*****************************************************************
  878. **【函数名称】 addStoredProcedure
  879. **【函数功能】 添加统计存储过程
  880. **【参数】
  881. **【返回值】
  882. ****************************************************************/
  883. bool CDbSetter::addStoredProcedure( DB_TYPE DbTp )
  884. {
  885. if(DbTp == DB_SQLServer)
  886. return __createStoredProcedure4SqlServer();
  887. else if(DbTp == DB_MySQL)
  888. return __createStoredProcedure4MySql();
  889. else
  890. return false;
  891. }