A C++ DAL / ORM code generation framework
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

397 lines
36 KiB

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
  5. <title>WORM: src/sql/wsqldatabase.cpp Source File</title>
  6. <link href="tabs.css" rel="stylesheet" type="text/css"/>
  7. <link href="search/search.css" rel="stylesheet" type="text/css"/>
  8. <script type="text/javascript" src="search/search.js"></script>
  9. <link href="doxygen.css" rel="stylesheet" type="text/css"/>
  10. </head>
  11. <body onload='searchBox.OnSelectItem(0);'>
  12. <!-- Generated by Doxygen 1.7.3 -->
  13. <script type="text/javascript"><!--
  14. var searchBox = new SearchBox("searchBox", "search",false,'Search');
  15. --></script>
  16. <script type="text/javascript">
  17. function hasClass(ele,cls) {
  18. return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
  19. }
  20. function addClass(ele,cls) {
  21. if (!this.hasClass(ele,cls)) ele.className += " "+cls;
  22. }
  23. function removeClass(ele,cls) {
  24. if (hasClass(ele,cls)) {
  25. var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
  26. ele.className=ele.className.replace(reg,' ');
  27. }
  28. }
  29. function toggleVisibility(linkObj) {
  30. var base = linkObj.getAttribute('id');
  31. var summary = document.getElementById(base + '-summary');
  32. var content = document.getElementById(base + '-content');
  33. var trigger = document.getElementById(base + '-trigger');
  34. if ( hasClass(linkObj,'closed') ) {
  35. summary.style.display = 'none';
  36. content.style.display = 'block';
  37. trigger.src = 'open.png';
  38. removeClass(linkObj,'closed');
  39. addClass(linkObj,'opened');
  40. } else if ( hasClass(linkObj,'opened') ) {
  41. summary.style.display = 'block';
  42. content.style.display = 'none';
  43. trigger.src = 'closed.png';
  44. removeClass(linkObj,'opened');
  45. addClass(linkObj,'closed');
  46. }
  47. return false;
  48. }
  49. </script>
  50. <div id="top">
  51. <div id="titlearea">
  52. <table cellspacing="0" cellpadding="0">
  53. <tbody>
  54. <tr style="height: 56px;">
  55. <td id="projectlogo"><img alt="Logo" src="worm_sm.png"></td>
  56. <td style="padding-left: 0.5em;">
  57. <div id="projectname">WORM&#160;<span id="projectnumber">0.2</span></div>
  58. <div id="projectbrief">A C++ DAL/ORM code generation framework</div>
  59. </td>
  60. </tr>
  61. </tbody>
  62. </table>
  63. </div>
  64. <div id="navrow1" class="tabs">
  65. <ul class="tablist">
  66. <li><a href="index.html"><span>Main&#160;Page</span></a></li>
  67. <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
  68. <li><a href="namespaces.html"><span>Namespaces</span></a></li>
  69. <li><a href="annotated.html"><span>Classes</span></a></li>
  70. <li class="current"><a href="files.html"><span>Files</span></a></li>
  71. <li id="searchli">
  72. <div id="MSearchBox" class="MSearchBoxInactive">
  73. <span class="left">
  74. <img id="MSearchSelect" src="search/mag_sel.png"
  75. onmouseover="return searchBox.OnSearchSelectShow()"
  76. onmouseout="return searchBox.OnSearchSelectHide()"
  77. alt=""/>
  78. <input type="text" id="MSearchField" value="Search" accesskey="S"
  79. onfocus="searchBox.OnSearchFieldFocus(true)"
  80. onblur="searchBox.OnSearchFieldFocus(false)"
  81. onkeyup="searchBox.OnSearchFieldChange(event)"/>
  82. </span><span class="right">
  83. <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
  84. </span>
  85. </div>
  86. </li>
  87. </ul>
  88. </div>
  89. <div id="navrow2" class="tabs2">
  90. <ul class="tablist">
  91. <li><a href="files.html"><span>File&#160;List</span></a></li>
  92. <li><a href="globals.html"><span>File&#160;Members</span></a></li>
  93. </ul>
  94. </div>
  95. <div class="header">
  96. <div class="headertitle">
  97. <h1>src/sql/wsqldatabase.cpp</h1> </div>
  98. </div>
  99. <div class="contents">
  100. <a href="wsqldatabase_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
  101. <a name="l00002"></a>00002 <span class="comment"> * WORM - a DAL/ORM code generation framework</span>
  102. <a name="l00003"></a>00003 <span class="comment"> * Copyright (C) 2011 Erik Winn &lt;erikwinnmail@yahoo.com&gt;</span>
  103. <a name="l00004"></a>00004 <span class="comment"> * </span>
  104. <a name="l00005"></a>00005 <span class="comment"> * This program is free software: you can redistribute it and/or modify</span>
  105. <a name="l00006"></a>00006 <span class="comment"> * it under the terms of the GNU General Public License as published by</span>
  106. <a name="l00007"></a>00007 <span class="comment"> * the Free Software Foundation, either version 3 of the License, or</span>
  107. <a name="l00008"></a>00008 <span class="comment"> * (at your option) any later version.</span>
  108. <a name="l00009"></a>00009 <span class="comment"> * </span>
  109. <a name="l00010"></a>00010 <span class="comment"> * This program is distributed in the hope that it will be useful,</span>
  110. <a name="l00011"></a>00011 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
  111. <a name="l00012"></a>00012 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
  112. <a name="l00013"></a>00013 <span class="comment"> * GNU General Public License for more details.</span>
  113. <a name="l00014"></a>00014 <span class="comment"> * </span>
  114. <a name="l00015"></a>00015 <span class="comment"> * You should have received a copy of the GNU General Public License</span>
  115. <a name="l00016"></a>00016 <span class="comment"> * along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span>
  116. <a name="l00017"></a>00017 <span class="comment"> */</span>
  117. <a name="l00018"></a>00018
  118. <a name="l00019"></a>00019 <span class="preprocessor">#include &quot;<a class="code" href="wsqldatabase_8h.html">wsqldatabase.h</a>&quot;</span>
  119. <a name="l00020"></a>00020
  120. <a name="l00021"></a>00021 <span class="preprocessor">#include &quot;<a class="code" href="wsqldriver_8h.html">wsqldriver.h</a>&quot;</span>
  121. <a name="l00022"></a>00022 <span class="preprocessor">#include &quot;<a class="code" href="wsqlitedriver_8h.html">drivers/wsqlitedriver.h</a>&quot;</span>
  122. <a name="l00023"></a>00023 <span class="preprocessor">#include &quot;<a class="code" href="wmysqldriver_8h.html">drivers/wmysqldriver.h</a>&quot;</span>
  123. <a name="l00024"></a>00024
  124. <a name="l00025"></a>00025 <span class="keyword">namespace </span>WSql {
  125. <a name="l00026"></a>00026
  126. <a name="l00093"></a><a class="code" href="class_w_sql_1_1_w_sql_database.html#a093d3810c76b1be2d155c3fd03c0a549">00093</a> <a class="code" href="class_w_sql_1_1_w_sql_database.html#a6ef4f3c3d9c28a9f6aa171261c79b66e" title="Creates an empty, invalid WSqlDatabase object.">WSqlDatabase::WSqlDatabase</a>(<span class="keyword">const</span> <a class="code" href="namespace_w_sql.html#ad184e6e363bbd3ea2b768ac8a013bf3c">WSql::DriverType</a> &amp;type)
  127. <a name="l00094"></a>00094 {
  128. <a name="l00095"></a>00095 _driver=0;
  129. <a name="l00096"></a>00096 _driverType=type;
  130. <a name="l00097"></a>00097 _isValid=<span class="keyword">false</span>;
  131. <a name="l00098"></a>00098 init();
  132. <a name="l00099"></a>00099 }
  133. <a name="l00100"></a>00100
  134. <a name="l00104"></a><a class="code" href="class_w_sql_1_1_w_sql_database.html#a6ef4f3c3d9c28a9f6aa171261c79b66e">00104</a> <a class="code" href="class_w_sql_1_1_w_sql_database.html#a6ef4f3c3d9c28a9f6aa171261c79b66e" title="Creates an empty, invalid WSqlDatabase object.">WSqlDatabase::WSqlDatabase</a>()
  135. <a name="l00105"></a>00105 {
  136. <a name="l00106"></a>00106 _driver=0;
  137. <a name="l00107"></a>00107 _isValid=<span class="keyword">false</span>;
  138. <a name="l00108"></a>00108 }
  139. <a name="l00109"></a>00109
  140. <a name="l00118"></a><a class="code" href="class_w_sql_1_1_w_sql_database.html#af69197a0eba8ef5f623971ab69c04b14">00118</a> <a class="code" href="class_w_sql_1_1_w_sql_database.html#a6ef4f3c3d9c28a9f6aa171261c79b66e" title="Creates an empty, invalid WSqlDatabase object.">WSqlDatabase::WSqlDatabase</a>(<span class="keyword">const</span> <a class="code" href="class_w_sql_1_1_w_sql_database.html" title="The WSqlDatabase class represents a single database.">WSqlDatabase</a> &amp;other)
  141. <a name="l00119"></a>00119 {
  142. <a name="l00120"></a>00120 _databaseName = other._databaseName;
  143. <a name="l00121"></a>00121 _userName = other._userName;
  144. <a name="l00122"></a>00122 _password = other._password;
  145. <a name="l00123"></a>00123 _hostname = other._hostname;
  146. <a name="l00124"></a>00124 _port = other._port;
  147. <a name="l00125"></a>00125 _connectionOptions = other._connectionOptions;
  148. <a name="l00126"></a>00126 _driverType = other._driverType;
  149. <a name="l00127"></a>00127 init();
  150. <a name="l00128"></a>00128 }
  151. <a name="l00129"></a>00129
  152. <a name="l00137"></a><a class="code" href="class_w_sql_1_1_w_sql_database.html#a7adeec6b1bf4b1f55fd63cc4a8fe5316">00137</a> <a class="code" href="class_w_sql_1_1_w_sql_database.html#a7adeec6b1bf4b1f55fd63cc4a8fe5316" title="Destroys the object and frees any allocated resources.">WSqlDatabase::~WSqlDatabase</a>()
  153. <a name="l00138"></a>00138 {
  154. <a name="l00139"></a>00139 <span class="keywordflow">if</span>(<a class="code" href="class_w_sql_1_1_w_sql_database.html#a4a4d53b3ff1c197b16495087496f8660">isValid</a>()){
  155. <a name="l00140"></a>00140 <a class="code" href="class_w_sql_1_1_w_sql_database.html#a7d1ff5ea5063fd2a0642584972f9dada">close</a>();
  156. <a name="l00141"></a>00141 }
  157. <a name="l00142"></a>00142 <span class="keyword">delete</span> _driver;
  158. <a name="l00143"></a>00143 }
  159. <a name="l00144"></a>00144
  160. <a name="l00152"></a><a class="code" href="class_w_sql_1_1_w_sql_database.html#aff088c6a45f151d872386a930a1ff7a3">00152</a> <a class="code" href="class_w_sql_1_1_w_sql_database.html" title="The WSqlDatabase class represents a single database.">WSqlDatabase</a> &amp;<a class="code" href="class_w_sql_1_1_w_sql_database.html#aff088c6a45f151d872386a930a1ff7a3" title="Copies the values of other to this object.">WSqlDatabase::operator=</a>(<span class="keyword">const</span> <a class="code" href="class_w_sql_1_1_w_sql_database.html" title="The WSqlDatabase class represents a single database.">WSqlDatabase</a> &amp;other)
  161. <a name="l00153"></a>00153 {
  162. <a name="l00154"></a>00154 <span class="keywordflow">if</span>(_driver)
  163. <a name="l00155"></a>00155 <span class="keyword">delete</span> _driver;
  164. <a name="l00156"></a>00156 _driver=0;
  165. <a name="l00157"></a>00157
  166. <a name="l00158"></a>00158 _databaseName = other._databaseName;
  167. <a name="l00159"></a>00159 _userName = other._userName;
  168. <a name="l00160"></a>00160 _password = other._password;
  169. <a name="l00161"></a>00161 _hostname = other._hostname;
  170. <a name="l00162"></a>00162 _port = other._port;
  171. <a name="l00163"></a>00163 _connectionOptions = other._connectionOptions;
  172. <a name="l00164"></a>00164 _driverType = other._driverType;
  173. <a name="l00165"></a>00165 init();
  174. <a name="l00166"></a>00166 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
  175. <a name="l00167"></a>00167 }
  176. <a name="l00168"></a>00168
  177. <a name="l00173"></a>00173 <span class="keywordtype">void</span> WSqlDatabase::init()
  178. <a name="l00174"></a>00174 {
  179. <a name="l00175"></a>00175 <span class="keywordflow">if</span>(_driver)
  180. <a name="l00176"></a>00176 <span class="keyword">delete</span> _driver;
  181. <a name="l00177"></a>00177
  182. <a name="l00178"></a>00178 _isValid = <a class="code" href="class_w_sql_1_1_w_sql_database.html#a1f865041c95b0962b614c219a918808e">initDriver</a>();
  183. <a name="l00179"></a>00179 }
  184. <a name="l00180"></a>00180
  185. <a name="l00185"></a><a class="code" href="class_w_sql_1_1_w_sql_database.html#a1f865041c95b0962b614c219a918808e">00185</a> <span class="keywordtype">bool</span> <a class="code" href="class_w_sql_1_1_w_sql_database.html#a1f865041c95b0962b614c219a918808e">WSqlDatabase::initDriver</a>()
  186. <a name="l00186"></a>00186 {
  187. <a name="l00187"></a>00187 <span class="keywordtype">bool</span> blnToReturn = <span class="keyword">false</span>;
  188. <a name="l00188"></a>00188 std::string errmsg;
  189. <a name="l00189"></a>00189
  190. <a name="l00190"></a>00190 <span class="keywordflow">switch</span>(_driverType)
  191. <a name="l00191"></a>00191 {
  192. <a name="l00192"></a>00192 <span class="keywordflow">case</span> <a class="code" href="namespace_w_sql.html#ad184e6e363bbd3ea2b768ac8a013bf3ca7bbb19f6972b9f038408ab359b909a94">WSql::NONE</a>:
  193. <a name="l00193"></a>00193 errmsg = <span class="stringliteral">&quot;WSqlDatabase: initDriver failed - no driver type set!&quot;</span>;
  194. <a name="l00194"></a>00194 <span class="keywordflow">break</span>;
  195. <a name="l00195"></a>00195 <span class="keywordflow">case</span> <a class="code" href="namespace_w_sql.html#ad184e6e363bbd3ea2b768ac8a013bf3ca9139d49f8f6c7eda00cc9470c8307849">WSql::WSQLITE</a> :
  196. <a name="l00196"></a>00196 _driver = <span class="keyword">new</span> <a class="code" href="class_w_sql_1_1_w_sqlite_driver.html">WSqliteDriver</a>(<span class="keyword">this</span>);
  197. <a name="l00197"></a>00197 <span class="keywordflow">if</span>(0 == _driver)
  198. <a name="l00198"></a>00198 errmsg = <span class="stringliteral">&quot;WSqlDatabase: initDriver failed - memory allocation error!&quot;</span>;
  199. <a name="l00199"></a>00199 <span class="keywordflow">else</span>
  200. <a name="l00200"></a>00200 blnToReturn = <span class="keyword">true</span>;
  201. <a name="l00201"></a>00201 <span class="keywordflow">break</span>;
  202. <a name="l00202"></a>00202 <span class="keywordflow">case</span> <a class="code" href="namespace_w_sql.html#ad184e6e363bbd3ea2b768ac8a013bf3caee837ff3fecf3701ba3c275c3bc38190">WSql::WMYSQL</a> :
  203. <a name="l00203"></a>00203 _driver = <span class="keyword">new</span> <a class="code" href="class_w_sql_1_1_w_mysql_driver.html" title="A driver for MySQL databases.">WMysqlDriver</a>(<span class="keyword">this</span>);
  204. <a name="l00204"></a>00204 <span class="keywordflow">if</span>(0 == _driver)
  205. <a name="l00205"></a>00205 errmsg = <span class="stringliteral">&quot;WSqlDatabase: initDriver failed - memory allocation error!&quot;</span>;
  206. <a name="l00206"></a>00206 <span class="keywordflow">else</span>
  207. <a name="l00207"></a>00207 blnToReturn = <span class="keyword">true</span>;
  208. <a name="l00208"></a>00208 <span class="keywordflow">break</span>;
  209. <a name="l00209"></a>00209 <span class="keywordflow">case</span> <a class="code" href="namespace_w_sql.html#ad184e6e363bbd3ea2b768ac8a013bf3ca929b79f3124ddffbcf1fae9577b2b5b9">WSql::WMONGO</a> :
  210. <a name="l00210"></a>00210 <span class="keywordflow">case</span> <a class="code" href="namespace_w_sql.html#ad184e6e363bbd3ea2b768ac8a013bf3ca6a783968e953cd8090f4d5436b1d850a">WSql::WBERKLEYDB</a> :
  211. <a name="l00211"></a>00211 <span class="keywordflow">case</span> <a class="code" href="namespace_w_sql.html#ad184e6e363bbd3ea2b768ac8a013bf3cae9fd4477804144b8d9f832e0c97da6d7">WSql::WPSQL</a> :
  212. <a name="l00212"></a>00212 <span class="keywordflow">default</span>:
  213. <a name="l00213"></a>00213 errmsg = <span class="stringliteral">&quot;WSqlDatabase: initDriver failed - driver unsupported!&quot;</span>;
  214. <a name="l00214"></a>00214 }
  215. <a name="l00215"></a>00215 <span class="keywordflow">if</span>(!errmsg.empty())
  216. <a name="l00216"></a>00216 _errorStack.push_back(<a class="code" href="class_w_sql_1_1_w_sql_error.html" title="The WSqlError class provides SQL database and driver error information.">WSqlError</a>(errmsg,1, <a class="code" href="class_w_sql_1_1_w_sql_error.html#a8bcabd8bf1016ca27304a717ef3d78dbaacc793148eebd48878f5e1b7bb4dfc70">WSqlError::SYSTEM</a>, <a class="code" href="class_w_sql_1_1_w_sql_error.html#a63b2672eb5c68164c4ff43443037f6d9ab01b30be7fcbe01c43222c1b88e7727d">WSqlError::WARNING</a>));
  217. <a name="l00217"></a>00217 <span class="keywordflow">return</span> blnToReturn;
  218. <a name="l00218"></a>00218 }
  219. <a name="l00219"></a>00219
  220. <a name="l00230"></a><a class="code" href="class_w_sql_1_1_w_sql_database.html#ac40fb73f4b8c5fd26f7cfb959679f1ba">00230</a> <span class="keywordtype">bool</span> <a class="code" href="class_w_sql_1_1_w_sql_database.html#ac40fb73f4b8c5fd26f7cfb959679f1ba" title="Open a connection.">WSqlDatabase::open</a>()
  221. <a name="l00231"></a>00231 {
  222. <a name="l00232"></a>00232 <span class="keywordflow">return</span> _driver-&gt;<a class="code" href="class_w_sql_1_1_w_sql_driver.html#a2a1f251900715cd1e45aa7a565a57253">open</a>();
  223. <a name="l00233"></a>00233 }
  224. <a name="l00234"></a>00234
  225. <a name="l00245"></a><a class="code" href="class_w_sql_1_1_w_sql_database.html#a8108c44524ad9722c84548f3b7b73d6f">00245</a> <span class="keywordtype">bool</span> <a class="code" href="class_w_sql_1_1_w_sql_database.html#ac40fb73f4b8c5fd26f7cfb959679f1ba" title="Open a connection.">WSqlDatabase::open</a>(<span class="keyword">const</span> std::string&amp; username, <span class="keyword">const</span> std::string&amp; password)
  226. <a name="l00246"></a>00246 {
  227. <a name="l00247"></a>00247 <a class="code" href="class_w_sql_1_1_w_sql_database.html#a764e33f918dced0411724a3f4781343a" title="Set the the user name.">setUserName</a>(username);
  228. <a name="l00248"></a>00248 <a class="code" href="class_w_sql_1_1_w_sql_database.html#a098810c8f81bd4a8f1ea61dc0a3f25ad" title="Set the the password.">setPassword</a>(password);
  229. <a name="l00249"></a>00249 <span class="keywordflow">return</span> _driver-&gt;<a class="code" href="class_w_sql_1_1_w_sql_driver.html#a2a1f251900715cd1e45aa7a565a57253">open</a>();
  230. <a name="l00250"></a>00250 }
  231. <a name="l00251"></a>00251
  232. <a name="l00256"></a><a class="code" href="class_w_sql_1_1_w_sql_database.html#a7d1ff5ea5063fd2a0642584972f9dada">00256</a> <span class="keywordtype">void</span> <a class="code" href="class_w_sql_1_1_w_sql_database.html#a7d1ff5ea5063fd2a0642584972f9dada">WSqlDatabase::close</a>()
  233. <a name="l00257"></a>00257 {
  234. <a name="l00258"></a>00258 _driver-&gt;<a class="code" href="class_w_sql_1_1_w_sql_driver.html#a17afc1e43627a2a952e76d04420dead0">close</a>();
  235. <a name="l00259"></a>00259 }
  236. <a name="l00260"></a>00260
  237. <a name="l00265"></a><a class="code" href="class_w_sql_1_1_w_sql_database.html#a7c8b8c430fcfaa7d9ef5145c74f7dd48">00265</a> <span class="keywordtype">bool</span> <a class="code" href="class_w_sql_1_1_w_sql_database.html#a7c8b8c430fcfaa7d9ef5145c74f7dd48">WSqlDatabase::isOpen</a>()<span class="keyword"> const</span>
  238. <a name="l00266"></a>00266 <span class="keyword"></span>{
  239. <a name="l00267"></a>00267 <span class="keywordflow">return</span> _driver-&gt;<a class="code" href="class_w_sql_1_1_w_sql_driver.html#a6c4bf314bfa0d19e476377891a949253">isOpen</a>();
  240. <a name="l00268"></a>00268 }
  241. <a name="l00269"></a>00269
  242. <a name="l00275"></a><a class="code" href="class_w_sql_1_1_w_sql_database.html#a1c943c000ea384846c7d4d77c3513afb">00275</a> <span class="keywordtype">bool</span> <a class="code" href="class_w_sql_1_1_w_sql_database.html#a1c943c000ea384846c7d4d77c3513afb">WSqlDatabase::hasError</a>()<span class="keyword"> const</span>
  243. <a name="l00276"></a>00276 <span class="keyword"></span>{
  244. <a name="l00278"></a>00278 <span class="keywordflow">return</span> _driver-&gt;<a class="code" href="class_w_sql_1_1_w_sql_driver.html#aee4657eb1bf5d7d5b8a68dc51da1572f">hasError</a>();
  245. <a name="l00279"></a>00279 }
  246. <a name="l00280"></a>00280
  247. <a name="l00281"></a>00281
  248. <a name="l00292"></a><a class="code" href="class_w_sql_1_1_w_sql_database.html#a9511cd5c63a4375e815ad9dafb5ae7e4">00292</a> <span class="keywordtype">void</span> <a class="code" href="class_w_sql_1_1_w_sql_database.html#a9511cd5c63a4375e815ad9dafb5ae7e4" title="Set the the database name.">WSqlDatabase::setDatabaseName</a>(<span class="keyword">const</span> std::string&amp; name)
  249. <a name="l00293"></a>00293 {
  250. <a name="l00294"></a>00294 _databaseName = name;
  251. <a name="l00295"></a>00295 }
  252. <a name="l00296"></a>00296
  253. <a name="l00309"></a><a class="code" href="class_w_sql_1_1_w_sql_database.html#a764e33f918dced0411724a3f4781343a">00309</a> <span class="keywordtype">void</span> <a class="code" href="class_w_sql_1_1_w_sql_database.html#a764e33f918dced0411724a3f4781343a" title="Set the the user name.">WSqlDatabase::setUserName</a>(<span class="keyword">const</span> std::string&amp; name)
  254. <a name="l00310"></a>00310 {
  255. <a name="l00311"></a>00311 _userName = name;
  256. <a name="l00312"></a>00312 }
  257. <a name="l00313"></a>00313
  258. <a name="l00326"></a><a class="code" href="class_w_sql_1_1_w_sql_database.html#a098810c8f81bd4a8f1ea61dc0a3f25ad">00326</a> <span class="keywordtype">void</span> <a class="code" href="class_w_sql_1_1_w_sql_database.html#a098810c8f81bd4a8f1ea61dc0a3f25ad" title="Set the the password.">WSqlDatabase::setPassword</a>(<span class="keyword">const</span> std::string&amp; password)
  259. <a name="l00327"></a>00327 {
  260. <a name="l00328"></a>00328 _password = <a class="code" href="class_w_sql_1_1_w_sql_database.html#a330a670990fc65f07e48366f05093200">password</a>;
  261. <a name="l00329"></a>00329 }
  262. <a name="l00330"></a>00330
  263. <a name="l00342"></a><a class="code" href="class_w_sql_1_1_w_sql_database.html#ac59ad9647f4c37e1fd11723d8f0d2933">00342</a> <span class="keywordtype">void</span> <a class="code" href="class_w_sql_1_1_w_sql_database.html#ac59ad9647f4c37e1fd11723d8f0d2933" title="Sets the connection&amp;#39;s host name.">WSqlDatabase::setHostName</a>(<span class="keyword">const</span> std::string&amp; hostname)
  264. <a name="l00343"></a>00343 {
  265. <a name="l00344"></a>00344 _hostname = hostname;
  266. <a name="l00345"></a>00345 }
  267. <a name="l00346"></a>00346
  268. <a name="l00359"></a><a class="code" href="class_w_sql_1_1_w_sql_database.html#a7b4a7177c16a84bbfd7ae0ca5da0c72c">00359</a> <span class="keywordtype">void</span> <a class="code" href="class_w_sql_1_1_w_sql_database.html#a7b4a7177c16a84bbfd7ae0ca5da0c72c" title="Sets the port number for the connection.">WSqlDatabase::setPort</a>(<span class="keywordtype">int</span> port)
  269. <a name="l00360"></a>00360 {
  270. <a name="l00361"></a>00361 _port = <a class="code" href="class_w_sql_1_1_w_sql_database.html#a9d22fff18962918f7301df4c85548ec6" title="Returns the connection&amp;#39;s port number.">port</a>;
  271. <a name="l00362"></a>00362 }
  272. <a name="l00363"></a>00363
  273. <a name="l00368"></a><a class="code" href="class_w_sql_1_1_w_sql_database.html#a83d2116612628889d41c13a9bb67ce0c">00368</a> std::string <a class="code" href="class_w_sql_1_1_w_sql_database.html#a83d2116612628889d41c13a9bb67ce0c">WSqlDatabase::databaseName</a>()<span class="keyword"> const</span>
  274. <a name="l00369"></a>00369 <span class="keyword"></span>{
  275. <a name="l00370"></a>00370 <span class="keywordflow">return</span> _databaseName;
  276. <a name="l00371"></a>00371 }
  277. <a name="l00372"></a>00372
  278. <a name="l00378"></a><a class="code" href="class_w_sql_1_1_w_sql_database.html#a8523467f1ed4ba30b800d6cf6224a9b1">00378</a> std::string <a class="code" href="class_w_sql_1_1_w_sql_database.html#a8523467f1ed4ba30b800d6cf6224a9b1">WSqlDatabase::userName</a>()<span class="keyword"> const</span>
  279. <a name="l00379"></a>00379 <span class="keyword"></span>{
  280. <a name="l00380"></a>00380 <span class="keywordflow">return</span> _userName;
  281. <a name="l00381"></a>00381 }
  282. <a name="l00382"></a>00382
  283. <a name="l00387"></a><a class="code" href="class_w_sql_1_1_w_sql_database.html#a330a670990fc65f07e48366f05093200">00387</a> std::string <a class="code" href="class_w_sql_1_1_w_sql_database.html#a330a670990fc65f07e48366f05093200">WSqlDatabase::password</a>()<span class="keyword"> const</span>
  284. <a name="l00388"></a>00388 <span class="keyword"></span>{
  285. <a name="l00389"></a>00389 <span class="keywordflow">return</span> _password;
  286. <a name="l00390"></a>00390 }
  287. <a name="l00391"></a>00391
  288. <a name="l00397"></a><a class="code" href="class_w_sql_1_1_w_sql_database.html#aaded889a5674813f10c4eff81c90d65d">00397</a> std::string <a class="code" href="class_w_sql_1_1_w_sql_database.html#aaded889a5674813f10c4eff81c90d65d">WSqlDatabase::hostName</a>()<span class="keyword"> const</span>
  289. <a name="l00398"></a>00398 <span class="keyword"></span>{
  290. <a name="l00399"></a>00399 <span class="keywordflow">return</span> _hostname;
  291. <a name="l00400"></a>00400 }
  292. <a name="l00401"></a>00401
  293. <a name="l00420"></a><a class="code" href="class_w_sql_1_1_w_sql_database.html#a1fc5a8e3e677b74c98c0e9d0cd39b6dc">00420</a> <a class="code" href="class_w_sql_1_1_w_sql_driver.html" title="The WSqlDriver class is an abstract base class for database drivers.">WSqlDriver</a>* <a class="code" href="class_w_sql_1_1_w_sql_database.html#a1fc5a8e3e677b74c98c0e9d0cd39b6dc" title="Return a pointer to the database driver - expert only.">WSqlDatabase::driver</a>()<span class="keyword"> const</span>
  294. <a name="l00421"></a>00421 <span class="keyword"></span>{
  295. <a name="l00422"></a>00422 <span class="keywordflow">return</span> _driver;
  296. <a name="l00423"></a>00423 }
  297. <a name="l00424"></a>00424
  298. <a name="l00430"></a><a class="code" href="class_w_sql_1_1_w_sql_database.html#abc33cf10cd451155204056812e685db8">00430</a> <a class="code" href="class_w_sql_1_1_w_sql_error.html" title="The WSqlError class provides SQL database and driver error information.">WSqlError</a> <a class="code" href="class_w_sql_1_1_w_sql_database.html#abc33cf10cd451155204056812e685db8">WSqlDatabase::error</a>()<span class="keyword"> const</span>
  299. <a name="l00431"></a>00431 <span class="keyword"></span>{
  300. <a name="l00432"></a>00432 <span class="keywordflow">return</span> _driver-&gt;<a class="code" href="class_w_sql_1_1_w_sql_driver.html#aabd54e13ac3769bfd283cc8e7e937e6f">error</a>();
  301. <a name="l00433"></a>00433 }
  302. <a name="l00434"></a>00434
  303. <a name="l00442"></a>00442 <span class="comment">// WSqlError WSqlDatabase::errors() const</span>
  304. <a name="l00443"></a>00443 <span class="comment">// {</span>
  305. <a name="l00444"></a>00444 <span class="comment">// return _driver-&gt;getError();</span>
  306. <a name="l00445"></a>00445 <span class="comment">// }</span>
  307. <a name="l00446"></a>00446
  308. <a name="l00447"></a>00447
  309. <a name="l00467"></a><a class="code" href="class_w_sql_1_1_w_sql_database.html#a86df7db5900c3a2d1483375195c7b025">00467</a> <span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; <a class="code" href="class_w_sql_1_1_w_sql_database.html#a86df7db5900c3a2d1483375195c7b025" title="Returns a vector of the database&amp;#39;s table names.">WSqlDatabase::tableNames</a>(<a class="code" href="namespace_w_sql.html#a2860958b4a0664bf26cd4959a7aaace8">WSql::TableType</a> type)
  310. <a name="l00468"></a>00468 {
  311. <a name="l00469"></a>00469 <span class="keywordflow">if</span>(_tableNames.empty())
  312. <a name="l00470"></a>00470 _tableNames = _driver-&gt;<a class="code" href="class_w_sql_1_1_w_sql_driver.html#adc7f0845587544ad92e3079542e844db">tableNames</a>();
  313. <a name="l00471"></a>00471 <span class="keywordflow">return</span> _tableNames;
  314. <a name="l00472"></a>00472 }
  315. <a name="l00473"></a>00473
  316. <a name="l00509"></a><a class="code" href="class_w_sql_1_1_w_sql_database.html#a2f068c8103068f0b4cab897b824144b9">00509</a> <a class="code" href="class_w_sql_1_1_w_sql_table.html" title="WSqlTable is an abstraction for a single table, collection or view in a database.">WSqlTable</a> <a class="code" href="class_w_sql_1_1_w_sql_database.html#a2f068c8103068f0b4cab897b824144b9" title="Fetch metadata for table tableName.">WSqlDatabase::tableMetaData</a>( <span class="keyword">const</span> std::string&amp; tablename )<span class="keyword"> const</span>
  317. <a name="l00510"></a>00510 <span class="keyword"></span>{
  318. <a name="l00511"></a>00511 <span class="keywordflow">if</span>(!<a class="code" href="class_w_sql_1_1_w_sql_database.html#a4a4d53b3ff1c197b16495087496f8660">isValid</a>())
  319. <a name="l00512"></a>00512 <span class="keywordflow">return</span> <a class="code" href="class_w_sql_1_1_w_sql_table.html" title="WSqlTable is an abstraction for a single table, collection or view in a database.">WSqlTable</a>();
  320. <a name="l00513"></a>00513 <span class="keywordflow">return</span> _driver-&gt;<a class="code" href="class_w_sql_1_1_w_sql_driver.html#a2574f1f0d2083f1b0e05f4721f870a74">tableMetaData</a>(tablename);
  321. <a name="l00514"></a>00514 }
  322. <a name="l00515"></a>00515
  323. <a name="l00532"></a><a class="code" href="class_w_sql_1_1_w_sql_database.html#a9bd1765f14443afbb875981321d4c529">00532</a> <span class="keywordtype">void</span> <a class="code" href="class_w_sql_1_1_w_sql_database.html#a9bd1765f14443afbb875981321d4c529" title="Initializes the metadata for all tables in the database.">WSqlDatabase::initMetaData</a>()
  324. <a name="l00533"></a>00533 {
  325. <a name="l00534"></a>00534 <span class="comment">//load all tablenames</span>
  326. <a name="l00535"></a>00535 <a class="code" href="class_w_sql_1_1_w_sql_database.html#a86df7db5900c3a2d1483375195c7b025" title="Returns a vector of the database&amp;#39;s table names.">tableNames</a>();
  327. <a name="l00536"></a>00536 <span class="comment">//init metadata for all tables</span>
  328. <a name="l00537"></a>00537 std::vector&lt;std::string&gt;::const_iterator it = _tableNames.begin();
  329. <a name="l00538"></a>00538 <span class="keywordflow">for</span>(;it != _tableNames.end();++it )
  330. <a name="l00539"></a>00539 <a class="code" href="class_w_sql_1_1_w_sql_database.html#a2f068c8103068f0b4cab897b824144b9" title="Fetch metadata for table tableName.">tableMetaData</a>(*it);
  331. <a name="l00540"></a>00540 std::vector&lt;WSqlTable&gt;::const_iterator tbl_it = _driver-&gt;<a class="code" href="class_w_sql_1_1_w_sql_driver.html#a4eae8e8af5b50b1bc3a10bf528073724">_tables</a>.begin();
  332. <a name="l00541"></a>00541 <span class="comment">//add referenced keys</span>
  333. <a name="l00542"></a>00542 <span class="keywordflow">for</span>(;tbl_it != _driver-&gt;<a class="code" href="class_w_sql_1_1_w_sql_driver.html#a4eae8e8af5b50b1bc3a10bf528073724">_tables</a>.end();++tbl_it)
  334. <a name="l00543"></a>00543 {
  335. <a name="l00544"></a>00544 std::vector&lt;WSqlForeignKey&gt;::const_iterator fk_it = tbl_it-&gt;foreignKeys().begin();
  336. <a name="l00545"></a>00545 <span class="keywordflow">for</span>(;fk_it != tbl_it-&gt;foreignKeys().end();++fk_it)
  337. <a name="l00546"></a>00546 {
  338. <a name="l00547"></a>00547 <a class="code" href="class_w_sql_1_1_w_sql_table.html" title="WSqlTable is an abstraction for a single table, collection or view in a database.">WSqlTable</a> *table = _driver-&gt;<a class="code" href="class_w_sql_1_1_w_sql_driver.html#ac8280245a9ab0d63d09c9b7b03c0b3b9" title="Return a reference to the metadata table for tablename in the cache.">getTable</a>( fk_it-&gt;referencedTableName());
  339. <a name="l00548"></a>00548 <span class="keywordflow">if</span>(table)
  340. <a name="l00549"></a>00549 {
  341. <a name="l00550"></a>00550 <a class="code" href="class_w_sql_1_1_w_sql_referenced_key.html" title="WSqlReferencedKey provides an abstraction of a referenced column in a database.">WSqlReferencedKey</a> rfk(*fk_it);
  342. <a name="l00551"></a>00551 table-&gt;<a class="code" href="class_w_sql_1_1_w_sql_table.html#a57cf58dd712f9adfa7f98e395447b5ab">addReferencedKey</a>(rfk);
  343. <a name="l00552"></a>00552 }
  344. <a name="l00553"></a>00553 }
  345. <a name="l00554"></a>00554 }
  346. <a name="l00555"></a>00555 }
  347. <a name="l00556"></a>00556
  348. <a name="l00557"></a>00557
  349. <a name="l00571"></a><a class="code" href="class_w_sql_1_1_w_sql_database.html#a41407aba46af14d6e5d513fbcaac9516">00571</a> <span class="keywordtype">void</span> <a class="code" href="class_w_sql_1_1_w_sql_database.html#a41407aba46af14d6e5d513fbcaac9516" title="Sets the connection options for this database server.">WSqlDatabase::setConnectOptions</a>(<span class="keyword">const</span> std::string &amp;options)
  350. <a name="l00572"></a>00572 {
  351. <a name="l00573"></a>00573 _connectionOptions = options;
  352. <a name="l00574"></a>00574 }
  353. <a name="l00575"></a>00575
  354. <a name="l00582"></a><a class="code" href="class_w_sql_1_1_w_sql_database.html#a09f2c6b29cf7eac1b65ee9615aaf9e1c">00582</a> std::string <a class="code" href="class_w_sql_1_1_w_sql_database.html#a09f2c6b29cf7eac1b65ee9615aaf9e1c">WSqlDatabase::connectionOptions</a>()<span class="keyword"> const</span>
  355. <a name="l00583"></a>00583 <span class="keyword"></span>{
  356. <a name="l00584"></a>00584 <span class="keywordflow">return</span> _connectionOptions;
  357. <a name="l00585"></a>00585 }
  358. <a name="l00586"></a>00586
  359. <a name="l00590"></a><a class="code" href="class_w_sql_1_1_w_sql_database.html#a4a4d53b3ff1c197b16495087496f8660">00590</a> <span class="keywordtype">bool</span> <a class="code" href="class_w_sql_1_1_w_sql_database.html#a4a4d53b3ff1c197b16495087496f8660">WSqlDatabase::isValid</a>()<span class="keyword"> const</span>
  360. <a name="l00591"></a>00591 <span class="keyword"></span>{
  361. <a name="l00592"></a>00592 <span class="keywordflow">return</span> (_isValid &amp;&amp; 0 != _driver &amp;&amp; _driver-&gt;<a class="code" href="class_w_sql_1_1_w_sql_driver.html#aa81bf0a003e897f38574a8ee23348b8d">isValid</a>());
  362. <a name="l00593"></a>00593 }
  363. <a name="l00602"></a><a class="code" href="class_w_sql_1_1_w_sql_database.html#a9a368d8a1e0ab21a2ab4b5082acc6a1c">00602</a> <span class="keywordtype">bool</span> <a class="code" href="class_w_sql_1_1_w_sql_database.html#a9a368d8a1e0ab21a2ab4b5082acc6a1c" title="Executes the query in sql returning true on sucess.">WSqlDatabase::query</a>(<span class="keyword">const</span> std::string&amp; sql)
  364. <a name="l00603"></a>00603 {
  365. <a name="l00604"></a>00604 <span class="keywordflow">return</span> _driver-&gt;<a class="code" href="class_w_sql_1_1_w_sql_driver.html#ad15803a5c5d4e8e1d80fec885ed13203">query</a>(sql);
  366. <a name="l00605"></a>00605 }
  367. <a name="l00640"></a><a class="code" href="class_w_sql_1_1_w_sql_database.html#a7f485f7a20f577f5f398c7b5fec07ab7">00640</a> <a class="code" href="class_w_sql_1_1_w_sql_result.html" title="The WSqlResult class provides a representation of the result set from a query.">WSqlResult</a> * <a class="code" href="class_w_sql_1_1_w_sql_database.html#a7f485f7a20f577f5f398c7b5fec07ab7" title="Returns a pointer to the result set from the most recent query.">WSqlDatabase::result</a>(<span class="keywordtype">bool</span> iscached)
  368. <a name="l00641"></a>00641 {
  369. <a name="l00642"></a>00642 <span class="keywordflow">return</span> _driver-&gt;<a class="code" href="class_w_sql_1_1_w_sql_driver.html#ae5670416af2dc36911bc29478e5ad0e3">result</a>(iscached);
  370. <a name="l00643"></a>00643 }
  371. <a name="l00644"></a>00644
  372. <a name="l00645"></a>00645
  373. <a name="l00646"></a>00646 } <span class="comment">//namespace WSql</span>
  374. </pre></div></div>
  375. </div>
  376. <!--- window showing the filter options -->
  377. <div id="MSearchSelectWindow"
  378. onmouseover="return searchBox.OnSearchSelectShow()"
  379. onmouseout="return searchBox.OnSearchSelectHide()"
  380. onkeydown="return searchBox.OnSearchSelectKey(event)">
  381. <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Defines</a></div>
  382. <!-- iframe showing the search results (closed by default) -->
  383. <div id="MSearchResultsWindow">
  384. <iframe src="" frameborder="0"
  385. name="MSearchResults" id="MSearchResults">
  386. </iframe>
  387. </div>
  388. <hr class="footer"/><address class="footer"><small>Generated on Fri Nov 18 2011 21:01:45 for WORM by&#160;
  389. <a href="http://www.doxygen.org/index.html">
  390. <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.3 </small></address>
  391. </body>
  392. </html>