Browse Source

Refactoring accessors, updated docs

Misc notes/todo thoughts
Erik Winn 6 years ago
parent
commit
925f701fe2

+ 6
- 6
doc/html/class_w_sql_1_1_w_mysql_driver.html View File

@@ -287,7 +287,7 @@ Public Member Functions</h2></td></tr>
287 287
 <div class="memdoc">
288 288
 
289 289
 <p>Sends the SQL in <em>sqlstring</em> to the server for execution. </p>
290
-<p>This method sends the SQL given in <em>sqlstring</em> to the server to be executed. If the query was successful it returns true, if not it sets an error and returns false. If the query should return results (eg. a SELECT) they will be available from <a class="el" href="class_w_sql_1_1_w_mysql_driver.html#a064edf98eaa9453d358818d76627ef6b" title="Return the result from the most recent query.">result()</a>.</p>
290
+<p>This method sends the SQL given in <em>sqlstring</em> to the server to be executed. If the query was successful it returns true, if not it sets an error and returns false. If the query should return results (eg. a SELECT) they will be available from <a class="el" href="class_w_sql_1_1_w_mysql_driver.html#a064edf98eaa9453d358818d76627ef6b" title="Return the result from the most recent query.">getResult()</a>.</p>
291 291
 <dl class="return"><dt><b>Returns:</b></dt><dd>bool on success </dd></dl>
292 292
 
293 293
 <p><dl class="todo"><dt><b><a class="el" href="todo.html#_todo000009">Todo:</a></b></dt><dd>RESOLVE - this also escapes LIKE quotes .. need a way to handle this, ie. a general escape/sanitizer method somewhere .. </dd></dl>
@@ -323,12 +323,12 @@ Public Member Functions</h2></td></tr>
323 323
     dosomeerror();
324 324
 <span class="keywordflow">if</span> (!db.query(std::string(<span class="stringliteral">&quot;select foo from bar&quot;</span>)))
325 325
     dosomeerror();
326
-WSqlResult *<a class="code" href="class_w_sql_1_1_w_mysql_driver.html#a064edf98eaa9453d358818d76627ef6b" title="Return the result from the most recent query.">result</a> = db.result();
327
-<span class="comment">//WSqlResult *result2 = db.result(); &lt;- wrong </span>
326
+WSqlResult *<a class="code" href="class_w_sql_1_1_w_mysql_driver.html#a064edf98eaa9453d358818d76627ef6b" title="Return the result from the most recent query.">result</a> = db.getResult();
327
+<span class="comment">//WSqlResult *result2 = db.getResult(); &lt;- wrong </span>
328 328
 <span class="comment">//...iterate over results ..._then repeat:</span>
329 329
 <span class="keywordflow">if</span> (!db.query(std::string(<span class="stringliteral">&quot;select baz from bar&quot;</span>)))
330 330
     dosomeerror();
331
-WSqlResult *result = db.result();
331
+WSqlResult *result = db.getResult();
332 332
 ..etc.
333 333
 </pre></div><dl><dt><b>Parameters:</b></dt><dd>
334 334
   <table class="params">
@@ -381,7 +381,7 @@ WSqlResult *result = db.result();
381 381
         std::cout &lt;&lt; <span class="stringliteral">&quot;  * Autoincrement:  &quot;</span>  &lt;&lt; (column.<a class="code" href="class_w_sql_1_1_w_sql_column.html#aa1554dddff2918b50300794905f3edbc">isAutoIncremented</a>()?<span class="stringliteral">&quot;true&quot;</span> : <span class="stringliteral">&quot;false&quot;</span>) &lt;&lt; std::endl;
382 382
         std::cout &lt;&lt; <span class="stringliteral">&quot;  * default value:  &quot;</span>  &lt;&lt; column.<a class="code" href="class_w_sql_1_1_w_sql_column.html#a55feefa5aa00a43a8c8e09a517414047">defaultValue</a>&lt;std::string&gt;() &lt;&lt; std::endl;
383 383
     }
384
-</pre></div><dl class="warning"><dt><b>Warning:</b></dt><dd>If the table metadata has not been initialized yet this method will invalidate any previous <a class="el" 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> pointer returned - in this case nesting calls to this method inside of a loop iterating over WSqlResults WILL NOT WORK. Obtain the <a class="el" 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> <em>first</em> and <em>then</em> <a class="el" href="class_w_sql_1_1_w_mysql_driver.html#a16cbd55969cbe2421bcc5ebe2dd0d677" title="Sends the SQL in sqlstring to the server for execution.">query()</a> a query and fetch the result set using <a class="el" href="class_w_sql_1_1_w_mysql_driver.html#a064edf98eaa9453d358818d76627ef6b" title="Return the result from the most recent query.">result()</a> or use <a class="el" href="class_w_sql_1_1_w_sql_database.html#a9bd1765f14443afbb875981321d4c529" title="Initializes the metadata for all tables in the database.">WSqlDatabase::initMetaData()</a> to initialize the metadata for all tables at once.</dd></dl>
384
+</pre></div><dl class="warning"><dt><b>Warning:</b></dt><dd>If the table metadata has not been initialized yet this method will invalidate any previous <a class="el" 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> pointer returned - in this case nesting calls to this method inside of a loop iterating over WSqlResults WILL NOT WORK. Obtain the <a class="el" 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> <em>first</em> and <em>then</em> <a class="el" href="class_w_sql_1_1_w_mysql_driver.html#a16cbd55969cbe2421bcc5ebe2dd0d677" title="Sends the SQL in sqlstring to the server for execution.">query()</a> a query and fetch the result set using <a class="el" href="class_w_sql_1_1_w_mysql_driver.html#a064edf98eaa9453d358818d76627ef6b" title="Return the result from the most recent query.">getResult()</a> or use <a class="el" href="class_w_sql_1_1_w_sql_database.html#a9bd1765f14443afbb875981321d4c529" title="Initializes the metadata for all tables in the database.">WSqlDatabase::initMetaData()</a> to initialize the metadata for all tables at once.</dd></dl>
385 385
 <dl><dt><b>Parameters:</b></dt><dd>
386 386
   <table class="params">
387 387
     <tr><td class="paramname">string</td><td>the name of the table to use </td></tr>
@@ -416,7 +416,7 @@ WSqlResult *result = db.result();
416 416
 
417 417
 <p>Returns a list of the table names in the current database. </p>
418 418
 <p>This method will return a vector&lt;string&gt; containing the names of the tables in the current database - the database name must be set first.</p>
419
-<dl class="note"><dt><b>Note:</b></dt><dd>WARNING: This method will invalidate previous WSqlResults returned - nesting calls to this method inside of a loop iterating over WSqlResults will not work. Obtain the list <em>first</em> and <em>aftwards</em> execute a query and fetch the result set using <a class="el" href="class_w_sql_1_1_w_mysql_driver.html#a064edf98eaa9453d358818d76627ef6b" title="Return the result from the most recent query.">result()</a>. </dd></dl>
419
+<dl class="note"><dt><b>Note:</b></dt><dd>WARNING: This method will invalidate previous WSqlResults returned - nesting calls to this method inside of a loop iterating over WSqlResults will not work. Obtain the list <em>first</em> and <em>aftwards</em> execute a query and fetch the result set using <a class="el" href="class_w_sql_1_1_w_mysql_driver.html#a064edf98eaa9453d358818d76627ef6b" title="Return the result from the most recent query.">getResult()</a>. </dd></dl>
420 420
 <dl><dt><b>Return values:</b></dt><dd>
421 421
   <table class="retval">
422 422
     <tr><td class="paramname">vector&lt;string&gt;</td><td>a list of table names </td></tr>

+ 13
- 13
doc/html/class_w_sql_1_1_w_sql_database.html View File

@@ -197,7 +197,7 @@ std::string sql = <span class="stringliteral">&quot;select * from &quot;</span>
197 197
 <span class="keywordflow">if</span>(!db.query(sql))
198 198
     std::cout &lt;&lt; <span class="stringliteral">&quot;Query Failed: &quot;</span> &lt;&lt; db.error().text() &lt;&lt; std::endl;
199 199
 }<span class="keywordflow">else</span>{
200
-    <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.">WSql::WSqlResult</a> *result = db.result();
200
+    <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.">WSql::WSqlResult</a> *result = db.getResult();
201 201
     std::cout &lt;&lt; <span class="stringliteral">&quot;Number of rows: &quot;</span> &lt;&lt; result-&gt;<a class="code" href="class_w_sql_1_1_w_sql_result.html#a2f34ccad684262a1860022a2d07cc024">size</a>() &lt;&lt; std::endl;
202 202
     <a class="code" href="class_w_sql_1_1_w_sql_record.html" title="The WSqlRecord class represents a database record.">WSql::WSqlRecord</a> record = result-&gt;<a class="code" href="class_w_sql_1_1_w_sql_result.html#a85cc6e2cb40f959c2ff2f725356ef5c6">fetchFirst</a>();
203 203
     <span class="keywordflow">while</span>(!record.<a class="code" href="class_w_sql_1_1_w_sql_record.html#a2953bb26d9c259a284353aba9cbd33da">empty</a>())
@@ -284,7 +284,7 @@ std::string sql = <span class="stringliteral">&quot;select * from &quot;</span>
284 284
 <div class="memdoc">
285 285
 
286 286
 <p>Creates a copy of <em>other</em>. </p>
287
-<p>This constructs a new database object initialized with the values of <em>other</em> WARNING: This also creates a new driver! If <em>other</em> is destroyed <a class="el" href="class_w_sql_1_1_w_sql_database.html#a7f485f7a20f577f5f398c7b5fec07ab7" title="Returns a pointer to the result set from the most recent query.">result()</a> is invalid until the next <a class="el" href="class_w_sql_1_1_w_sql_database.html#a9a368d8a1e0ab21a2ab4b5082acc6a1c" title="Executes the query in sql returning true on sucess.">query()</a> is called!</p>
287
+<p>This constructs a new database object initialized with the values of <em>other</em> WARNING: This also creates a new driver! If <em>other</em> is destroyed <a class="el" href="class_w_sql_1_1_w_sql_database.html#a7f485f7a20f577f5f398c7b5fec07ab7" title="Returns a pointer to the result set from the most recent query.">getResult()</a> is invalid until the next <a class="el" href="class_w_sql_1_1_w_sql_database.html#a9a368d8a1e0ab21a2ab4b5082acc6a1c" title="Executes the query in sql returning true on sucess.">query()</a> is called!</p>
288 288
 <dl><dt><b>Parameters:</b></dt><dd>
289 289
   <table class="params">
290 290
     <tr><td class="paramname"><a class="el" href="class_w_sql_1_1_w_sql_database.html" title="The WSqlDatabase class represents a single database.">WSqlDatabase</a></td><td>other - database to copy </td></tr>
@@ -311,7 +311,7 @@ std::string sql = <span class="stringliteral">&quot;select * from &quot;</span>
311 311
 <div class="memdoc">
312 312
 
313 313
 <p>Destroys the object and frees any allocated resources. </p>
314
-<p>Note that the driver is also destroyed at this time - any WSqlResults obtained from <a class="el" href="class_w_sql_1_1_w_sql_database.html#a7f485f7a20f577f5f398c7b5fec07ab7" title="Returns a pointer to the result set from the most recent query.">result()</a> will be invalid after this. </p>
314
+<p>Note that the driver is also destroyed at this time - any WSqlResults obtained from <a class="el" href="class_w_sql_1_1_w_sql_database.html#a7f485f7a20f577f5f398c7b5fec07ab7" title="Returns a pointer to the result set from the most recent query.">getResult()</a> will be invalid after this. </p>
315 315
 <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="class_w_sql_1_1_w_sql_database.html#a7d1ff5ea5063fd2a0642584972f9dada">close()</a> </dd></dl>
316 316
 
317 317
 <p>Definition at line <a class="el" href="wsqldatabase_8cpp_source.html#l00137">137</a> of file <a class="el" href="wsqldatabase_8cpp_source.html">wsqldatabase.cpp</a>.</p>
@@ -412,9 +412,9 @@ std::string sql = <span class="stringliteral">&quot;select * from &quot;</span>
412 412
 <div class="memdoc">
413 413
 
414 414
 <p>Return a pointer to the database driver - expert only. </p>
415
-<p>This returns a pointer to the database driver used to access the database connection. <em>Caution!</em> This is not meant to be used directly - use <a class="el" href="class_w_sql_1_1_w_sql_database.html#ac40fb73f4b8c5fd26f7cfb959679f1ba" title="Open a connection.">open()</a>. <a class="el" href="class_w_sql_1_1_w_sql_database.html#a7d1ff5ea5063fd2a0642584972f9dada">close()</a>, <a class="el" href="class_w_sql_1_1_w_sql_database.html#a9a368d8a1e0ab21a2ab4b5082acc6a1c" title="Executes the query in sql returning true on sucess.">query()</a> and <a class="el" href="class_w_sql_1_1_w_sql_database.html#a7f485f7a20f577f5f398c7b5fec07ab7" title="Returns a pointer to the result set from the most recent query.">result()</a> for interaction with the driver instead.</p>
415
+<p>This returns a pointer to the database driver used to access the database connection. <em>Caution!</em> This is not meant to be used directly - use <a class="el" href="class_w_sql_1_1_w_sql_database.html#ac40fb73f4b8c5fd26f7cfb959679f1ba" title="Open a connection.">open()</a>. <a class="el" href="class_w_sql_1_1_w_sql_database.html#a7d1ff5ea5063fd2a0642584972f9dada">close()</a>, <a class="el" href="class_w_sql_1_1_w_sql_database.html#a9a368d8a1e0ab21a2ab4b5082acc6a1c" title="Executes the query in sql returning true on sucess.">query()</a> and <a class="el" href="class_w_sql_1_1_w_sql_database.html#a7f485f7a20f577f5f398c7b5fec07ab7" title="Returns a pointer to the result set from the most recent query.">getResult()</a> for interaction with the driver instead.</p>
416 416
 <p>!This may be removed in future.</p>
417
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="class_w_sql_1_1_w_sql_database.html#ac40fb73f4b8c5fd26f7cfb959679f1ba" title="Open a connection.">open()</a> <a class="el" href="class_w_sql_1_1_w_sql_database.html#a7d1ff5ea5063fd2a0642584972f9dada">close()</a> <a class="el" href="class_w_sql_1_1_w_sql_database.html#a9a368d8a1e0ab21a2ab4b5082acc6a1c" title="Executes the query in sql returning true on sucess.">query()</a> <a class="el" href="class_w_sql_1_1_w_sql_database.html#a7f485f7a20f577f5f398c7b5fec07ab7" title="Returns a pointer to the result set from the most recent query.">result()</a> </dd></dl>
417
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="class_w_sql_1_1_w_sql_database.html#ac40fb73f4b8c5fd26f7cfb959679f1ba" title="Open a connection.">open()</a> <a class="el" href="class_w_sql_1_1_w_sql_database.html#a7d1ff5ea5063fd2a0642584972f9dada">close()</a> <a class="el" href="class_w_sql_1_1_w_sql_database.html#a9a368d8a1e0ab21a2ab4b5082acc6a1c" title="Executes the query in sql returning true on sucess.">query()</a> <a class="el" href="class_w_sql_1_1_w_sql_database.html#a7f485f7a20f577f5f398c7b5fec07ab7" title="Returns a pointer to the result set from the most recent query.">getResult()</a> </dd></dl>
418 418
 
419 419
 <p>Definition at line <a class="el" href="wsqldatabase_8cpp_source.html#l00420">420</a> of file <a class="el" href="wsqldatabase_8cpp_source.html">wsqldatabase.cpp</a>.</p>
420 420
 
@@ -687,7 +687,7 @@ std::string sql = <span class="stringliteral">&quot;select * from &quot;</span>
687 687
 <div class="memdoc">
688 688
 
689 689
 <p>Copies the values of <em>other</em> to this object. </p>
690
-<p>WARNING: This also creates a new driver! If <em>other</em> is destroyed <a class="el" href="class_w_sql_1_1_w_sql_database.html#a7f485f7a20f577f5f398c7b5fec07ab7" title="Returns a pointer to the result set from the most recent query.">result()</a> is invalid until the next <a class="el" href="class_w_sql_1_1_w_sql_database.html#a9a368d8a1e0ab21a2ab4b5082acc6a1c" title="Executes the query in sql returning true on sucess.">query()</a>!</p>
690
+<p>WARNING: This also creates a new driver! If <em>other</em> is destroyed <a class="el" href="class_w_sql_1_1_w_sql_database.html#a7f485f7a20f577f5f398c7b5fec07ab7" title="Returns a pointer to the result set from the most recent query.">getResult()</a> is invalid until the next <a class="el" href="class_w_sql_1_1_w_sql_database.html#a9a368d8a1e0ab21a2ab4b5082acc6a1c" title="Executes the query in sql returning true on sucess.">query()</a>!</p>
691 691
 <dl><dt><b>Parameters:</b></dt><dd>
692 692
   <table class="params">
693 693
     <tr><td class="paramname"><a class="el" href="class_w_sql_1_1_w_sql_database.html" title="The WSqlDatabase class represents a single database.">WSqlDatabase</a></td><td>other - database to copy </td></tr>
@@ -756,8 +756,8 @@ std::string sql = <span class="stringliteral">&quot;select * from &quot;</span>
756 756
 <div class="memdoc">
757 757
 
758 758
 <p>Executes the query in <em>sql</em> returning true on sucess. </p>
759
-<p>This method sends the query SQL in string <em>sql</em> to the database server, the results of which will be available by calling <a class="el" href="class_w_sql_1_1_w_sql_database.html#a7f485f7a20f577f5f398c7b5fec07ab7" title="Returns a pointer to the result set from the most recent query.">result()</a>. Use this method when you expect a result set, for non-result execution use execute() </p>
760
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="class_w_sql_1_1_w_sql_database.html#a7f485f7a20f577f5f398c7b5fec07ab7" title="Returns a pointer to the result set from the most recent query.">result()</a> execute() </dd></dl>
759
+<p>This method sends the query SQL in string <em>sql</em> to the database server, the results of which will be available by calling <a class="el" href="class_w_sql_1_1_w_sql_database.html#a7f485f7a20f577f5f398c7b5fec07ab7" title="Returns a pointer to the result set from the most recent query.">getResult()</a>. Use this method when you expect a result set, for non-result execution use execute() </p>
760
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="class_w_sql_1_1_w_sql_database.html#a7f485f7a20f577f5f398c7b5fec07ab7" title="Returns a pointer to the result set from the most recent query.">getResult()</a> execute() </dd></dl>
761 761
 <dl><dt><b>Return values:</b></dt><dd>
762 762
   <table class="retval">
763 763
     <tr><td class="paramname">bool</td><td>true on success. </td></tr>
@@ -793,12 +793,12 @@ std::string sql = <span class="stringliteral">&quot;select * from &quot;</span>
793 793
     dosomeerror();
794 794
  <span class="keywordflow">if</span> (!db.query(std::string(<span class="stringliteral">&quot;select foo from bar&quot;</span>)))
795 795
     dosomeerror();
796
- WSqlResult *result = db.result();
797
- <span class="comment">//WSqlResult *result2 = db.result(); &lt;- wrong </span>
796
+ WSqlResult *result = db.getResult();
797
+ <span class="comment">//WSqlResult *result2 = db.getResult(); &lt;- wrong </span>
798 798
  <span class="comment">//...iterate over results ..._then repeat:</span>
799 799
  <span class="keywordflow">if</span> (!db.query(std::string(<span class="stringliteral">&quot;select baz from bar&quot;</span>)))
800 800
     dosomeerror();
801
- WSqlResult *result = db.result();
801
+ WSqlResult *result = db.getResult();
802 802
  ..etc.
803 803
 </pre></div> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" 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="el" href="class_w_sql_1_1_w_sql_record.html" title="The WSqlRecord class represents a database record.">WSqlRecord</a> <a class="el" href="class_w_sql_1_1_w_mysql_driver.html" title="A driver for MySQL databases.">WMysqlDriver</a> <a class="el" href="class_w_sql_1_1_w_sqlite_driver.html">WSqliteDriver</a></dd></dl>
804 804
 <dl><dt><b>Parameters:</b></dt><dd>
@@ -1065,7 +1065,7 @@ std::string sql = <span class="stringliteral">&quot;select * from &quot;</span>
1065 1065
         std::cout &lt;&lt; <span class="stringliteral">&quot;  * Autoincrement:  &quot;</span>  &lt;&lt; (column.<a class="code" href="class_w_sql_1_1_w_sql_column.html#aa1554dddff2918b50300794905f3edbc">isAutoIncremented</a>()?<span class="stringliteral">&quot;true&quot;</span> : <span class="stringliteral">&quot;false&quot;</span>) &lt;&lt; std::endl;
1066 1066
         std::cout &lt;&lt; <span class="stringliteral">&quot;  * default value:  &quot;</span>  &lt;&lt; column.<a class="code" href="class_w_sql_1_1_w_sql_column.html#a55feefa5aa00a43a8c8e09a517414047">defaultValue</a>&lt;std::string&gt;() &lt;&lt; std::endl;
1067 1067
  }
1068
-</pre></div><dl class="warning"><dt><b>Warning:</b></dt><dd>If the table metadata has not been initialized yet this method will invalidate any previous <a class="el" 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> pointer returned - in this case nesting calls to this method inside of a loop iterating over WSqlResults WILL NOT WORK. Obtain the <a class="el" 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> <em>first</em> and <em>then</em> <a class="el" href="class_w_sql_1_1_w_sql_database.html#a9a368d8a1e0ab21a2ab4b5082acc6a1c" title="Executes the query in sql returning true on sucess.">query()</a> a query and fetch the result set using <a class="el" href="class_w_sql_1_1_w_sql_database.html#a7f485f7a20f577f5f398c7b5fec07ab7" title="Returns a pointer to the result set from the most recent query.">result()</a> or use <a class="el" href="class_w_sql_1_1_w_sql_database.html#a9bd1765f14443afbb875981321d4c529" title="Initializes the metadata for all tables in the database.">initMetaData()</a> to initialize the metadata for all tables at once.</dd></dl>
1068
+</pre></div><dl class="warning"><dt><b>Warning:</b></dt><dd>If the table metadata has not been initialized yet this method will invalidate any previous <a class="el" 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> pointer returned - in this case nesting calls to this method inside of a loop iterating over WSqlResults WILL NOT WORK. Obtain the <a class="el" 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> <em>first</em> and <em>then</em> <a class="el" href="class_w_sql_1_1_w_sql_database.html#a9a368d8a1e0ab21a2ab4b5082acc6a1c" title="Executes the query in sql returning true on sucess.">query()</a> a query and fetch the result set using <a class="el" href="class_w_sql_1_1_w_sql_database.html#a7f485f7a20f577f5f398c7b5fec07ab7" title="Returns a pointer to the result set from the most recent query.">getResult()</a> or use <a class="el" href="class_w_sql_1_1_w_sql_database.html#a9bd1765f14443afbb875981321d4c529" title="Initializes the metadata for all tables in the database.">initMetaData()</a> to initialize the metadata for all tables at once.</dd></dl>
1069 1069
 <dl><dt><b>Parameters:</b></dt><dd>
1070 1070
   <table class="params">
1071 1071
     <tr><td class="paramname">string</td><td>the name of the table to use </td></tr>
@@ -1104,7 +1104,7 @@ std::string sql = <span class="stringliteral">&quot;select * from &quot;</span>
1104 1104
 <dl class="todo"><dt><b><a class="el" href="todo.html#_todo000025">Todo:</a></b></dt><dd>.. decide if we use this .. </dd></dl>
1105 1105
 <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="class_w_sql_1_1_w_sql_error.html" title="The WSqlError class provides SQL database and driver error information.">WSqlError</a></dd></dl>
1106 1106
 <p>This function returns a vector of strings containing the names tables and views as specified by the parameter <em>type</em>. The vector is cached for quick reference - if empty it is initialized by a request to the driver for the names. If the names are not available an empty vector is returned.</p>
1107
-<dl class="warning"><dt><b>Warning:</b></dt><dd>If the table metadata has not been initialized yet this method will invalidate any previous <a class="el" 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> pointer returned - in this case nesting calls to this method inside of a loop iterating over WSqlResults WILL NOT WORK. Obtain the <a class="el" 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> <em>first</em> and <em>then</em> <a class="el" href="class_w_sql_1_1_w_sql_database.html#a9a368d8a1e0ab21a2ab4b5082acc6a1c" title="Executes the query in sql returning true on sucess.">query()</a> a query and fetch the result set using <a class="el" href="class_w_sql_1_1_w_sql_database.html#a7f485f7a20f577f5f398c7b5fec07ab7" title="Returns a pointer to the result set from the most recent query.">result()</a> or use <a class="el" href="class_w_sql_1_1_w_sql_database.html#a9bd1765f14443afbb875981321d4c529" title="Initializes the metadata for all tables in the database.">initMetaData()</a> to initialize the metadata for all tables at once.</dd></dl>
1107
+<dl class="warning"><dt><b>Warning:</b></dt><dd>If the table metadata has not been initialized yet this method will invalidate any previous <a class="el" 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> pointer returned - in this case nesting calls to this method inside of a loop iterating over WSqlResults WILL NOT WORK. Obtain the <a class="el" 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> <em>first</em> and <em>then</em> <a class="el" href="class_w_sql_1_1_w_sql_database.html#a9a368d8a1e0ab21a2ab4b5082acc6a1c" title="Executes the query in sql returning true on sucess.">query()</a> a query and fetch the result set using <a class="el" href="class_w_sql_1_1_w_sql_database.html#a7f485f7a20f577f5f398c7b5fec07ab7" title="Returns a pointer to the result set from the most recent query.">getResult()</a> or use <a class="el" href="class_w_sql_1_1_w_sql_database.html#a9bd1765f14443afbb875981321d4c529" title="Initializes the metadata for all tables in the database.">initMetaData()</a> to initialize the metadata for all tables at once.</dd></dl>
1108 1108
 <dl class="todo"><dt><b><a class="el" href="todo.html#_todo000026">Todo:</a></b></dt><dd>Use the table type - currently does nothing.</dd></dl>
1109 1109
 <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespace_w_sql.html#a2860958b4a0664bf26cd4959a7aaace8">WSql::TableType</a> </dd></dl>
1110 1110
 <dl><dt><b>Parameters:</b></dt><dd>

+ 1
- 1
doc/html/class_w_sql_1_1_w_sql_driver.html View File

@@ -225,7 +225,7 @@ Friends</h2></td></tr>
225 225
 <div class="memdoc">
226 226
 
227 227
 <p>Destroys the driver and created resources. </p>
228
-<p>Note that the result pointer obtained from <a class="el" href="class_w_sql_1_1_w_sql_driver.html#ae5670416af2dc36911bc29478e5ad0e3">result()</a> is <em>invalid</em> after the object is destroyed! This means you do not need to (and should not) delete a result from the driver and that you also must be careful not to use it after a <a class="el" href="class_w_sql_1_1_w_sql_driver.html" title="The WSqlDriver class is an abstract base class for database drivers.">WSqlDriver</a> object has been destroyed. </p>
228
+<p>Note that the result pointer obtained from <a class="el" href="class_w_sql_1_1_w_sql_driver.html#ae5670416af2dc36911bc29478e5ad0e3">getResult()</a> is <em>invalid</em> after the object is destroyed! This means you do not need to (and should not) delete a result from the driver and that you also must be careful not to use it after a <a class="el" href="class_w_sql_1_1_w_sql_driver.html" title="The WSqlDriver class is an abstract base class for database drivers.">WSqlDriver</a> object has been destroyed. </p>
229 229
 
230 230
 <p>Definition at line <a class="el" href="wsqldriver_8cpp_source.html#l00061">61</a> of file <a class="el" href="wsqldriver_8cpp_source.html">wsqldriver.cpp</a>.</p>
231 231
 

+ 1
- 1
doc/html/class_w_sql_1_1_w_sql_result.html View File

@@ -179,7 +179,7 @@ Protected Attributes</h2></td></tr>
179 179
 <div class="fragment"><pre class="fragment">std::string sql = <span class="stringliteral">&quot;select * from &quot;</span> + tablename + <span class="stringliteral">&quot; limit 2&quot;</span>;
180 180
 <span class="keywordflow">if</span>(!db.execute(sql)) exit();
181 181
 
182
-<a class="code" href="class_w_sql_1_1_w_sql_result.html#aad78a7cb767d84420c9db5e44e2de1c8">WSqlResult</a> *result = db.result();
182
+<a class="code" href="class_w_sql_1_1_w_sql_result.html#aad78a7cb767d84420c9db5e44e2de1c8">WSqlResult</a> *result = db.getResult();
183 183
 WSqlRecord record = result-&gt;fetchFirst();
184 184
 <span class="keywordflow">while</span>(!record.empty())
185 185
 {

+ 2
- 2
doc/html/class_w_sql_1_1_w_sqlite_driver.html View File

@@ -142,7 +142,7 @@ Public Member Functions</h2></td></tr>
142 142
 <hr/><a name="_details"></a><h2>Detailed Description</h2>
143 143
 <div class="textblock"><p>driver for SQlite3 databases This class provides a driver for SQlite3 databases.</p>
144 144
 <p>DANGER: USE AT YOUR OWN RISK!! NOT RECOMMENDED.</p>
145
-<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000014">Todo:</a></b></dt><dd>This driver is unfinished. Basic functionality is there but it is not, ah, elegant. Metadata is incomplete, all results are cached locally and there may be strange behavior. Basically I have done enough to get sufficient metadata for the ORM generator (except indices still) and <a class="el" href="class_w_sql_1_1_w_sqlite_driver.html#a4ba7ea260dd263e74d9c16c58e655434" title="Send the query sql to the database.">query()</a> will perform the query and return a result via <a class="el" href="class_w_sql_1_1_w_sqlite_driver.html#a1cf0f135668cdd8299995c1ffff72724">result()</a>. <a class="el" href="class_w_sql_1_1_w_sqlite_driver.html#aa7796f2d18f519f24016a9fa1f9e2f0b">tableNames()</a> works and <a class="el" href="class_w_sql_1_1_w_sqlite_driver.html#aa74cc6840682c0ae5fe9bb2e4aa76a4d">tableMetaData()</a> works as well (with the above caveats). Transactions are not supported and I seriously doubt that this is thread safe. It quite is crude at the moment - your milage may vary. It _might_ work for you but at this point I don't recommend it for production (10/10/2011)</dd></dl>
145
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000014">Todo:</a></b></dt><dd>This driver is unfinished. Basic functionality is there but it is not, ah, elegant. Metadata is incomplete, all results are cached locally and there may be strange behavior. Basically I have done enough to get sufficient metadata for the ORM generator (except indices still) and <a class="el" href="class_w_sql_1_1_w_sqlite_driver.html#a4ba7ea260dd263e74d9c16c58e655434" title="Send the query sql to the database.">query()</a> will perform the query and return a result via <a class="el" href="class_w_sql_1_1_w_sqlite_driver.html#a1cf0f135668cdd8299995c1ffff72724">getResult()</a>. <a class="el" href="class_w_sql_1_1_w_sqlite_driver.html#aa7796f2d18f519f24016a9fa1f9e2f0b">tableNames()</a> works and <a class="el" href="class_w_sql_1_1_w_sqlite_driver.html#aa74cc6840682c0ae5fe9bb2e4aa76a4d">tableMetaData()</a> works as well (with the above caveats). Transactions are not supported and I seriously doubt that this is thread safe. It quite is crude at the moment - your milage may vary. It _might_ work for you but at this point I don't recommend it for production (10/10/2011)</dd></dl>
146 146
 <p>(at a minimum) : </p>
147 147
 <ul>
148 148
 <li>finish initializing the indices and fully initialize a <a class="el" 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>. </li>
@@ -257,7 +257,7 @@ Public Member Functions</h2></td></tr>
257 257
 <div class="memdoc">
258 258
 
259 259
 <p>Send the query <em>sql</em> to the database. </p>
260
-<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000016">Todo:</a></b></dt><dd>refactor this using metadata to construct a proper result set .. sqlite doesn't return things in orderly fashion - if a field is empty (i.e. NULL) it just doesn't include it in the results (ARG!), i _think_ and other strange random behavior is observed ..- so, we need to construct a skeleton result set from metadata and then fill it leaving the appropriate gaps such that the field name will _always_ be there. We can't simply refer to tableMetaData as it may be a join or such - which would mean parsing the query, etc..ugly The problem is that we cannot rely on sqlite to return metadata if, for instance, the query returns no results.. Consider using sqlite3_column_metadata. Also, some of this might be better moved to <a class="el" href="class_w_sql_1_1_w_sqlite_driver.html#a1cf0f135668cdd8299995c1ffff72724">result()</a></dd></dl>
260
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000016">Todo:</a></b></dt><dd>refactor this using metadata to construct a proper result set .. sqlite doesn't return things in orderly fashion - if a field is empty (i.e. NULL) it just doesn't include it in the results (ARG!), i _think_ and other strange random behavior is observed ..- so, we need to construct a skeleton result set from metadata and then fill it leaving the appropriate gaps such that the field name will _always_ be there. We can't simply refer to tableMetaData as it may be a join or such - which would mean parsing the query, etc..ugly The problem is that we cannot rely on sqlite to return metadata if, for instance, the query returns no results.. Consider using sqlite3_column_metadata. Also, some of this might be better moved to <a class="el" href="class_w_sql_1_1_w_sqlite_driver.html#a1cf0f135668cdd8299995c1ffff72724">getResult()</a></dd></dl>
261 261
 <dl><dt><b>Parameters:</b></dt><dd>
262 262
   <table class="params">
263 263
     <tr><td class="paramname">std::string</td><td>sql containing the query string </td></tr>

+ 1
- 1
doc/html/functions_0x72.html View File

@@ -201,7 +201,7 @@ function toggleVisibility(linkObj) {
201 201
 <li>replace()
202 202
 : <a class="el" href="class_w_sql_1_1_w_sql_table.html#adbe33d5ad790813796d6dc6002de9d87">WSql::WSqlTable</a>
203 203
 </li>
204
-<li>result()
204
+<li>getResult()
205 205
 : <a class="el" href="class_w_sql_1_1_w_sql_database.html#a7f485f7a20f577f5f398c7b5fec07ab7">WSql::WSqlDatabase</a>
206 206
 , <a class="el" href="class_w_sql_1_1_w_sql_driver.html#ae5670416af2dc36911bc29478e5ad0e3">WSql::WSqlDriver</a>
207 207
 , <a class="el" href="class_w_sql_1_1_w_mysql_driver.html#a064edf98eaa9453d358818d76627ef6b">WSql::WMysqlDriver</a>

+ 1
- 1
doc/html/functions_func_0x72.html View File

@@ -197,7 +197,7 @@ function toggleVisibility(linkObj) {
197 197
 <li>replace()
198 198
 : <a class="el" href="class_w_sql_1_1_w_sql_table.html#adbe33d5ad790813796d6dc6002de9d87">WSql::WSqlTable</a>
199 199
 </li>
200
-<li>result()
200
+<li>getResult()
201 201
 : <a class="el" href="class_w_sql_1_1_w_sqlite_driver.html#a1cf0f135668cdd8299995c1ffff72724">WSql::WSqliteDriver</a>
202 202
 , <a class="el" href="class_w_sql_1_1_w_sql_database.html#a7f485f7a20f577f5f398c7b5fec07ab7">WSql::WSqlDatabase</a>
203 203
 , <a class="el" href="class_w_sql_1_1_w_mysql_driver.html#a064edf98eaa9453d358818d76627ef6b">WSql::WMysqlDriver</a>

+ 4
- 4
doc/html/search/all_72.html View File

@@ -144,10 +144,10 @@
144 144
  <div class="SREntry">
145 145
   <a id="Item20" onkeydown="return searchResults.Nav(event,20)" onkeypress="return searchResults.Nav(event,20)" onkeyup="return searchResults.Nav(event,20)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_result')">result</a>
146 146
   <div class="SRChildren">
147
-    <a id="Item20_c0" onkeydown="return searchResults.NavChild(event,20,0)" onkeypress="return searchResults.NavChild(event,20,0)" onkeyup="return searchResults.NavChild(event,20,0)" class="SRScope" href="../class_w_sql_1_1_w_mysql_driver.html#a064edf98eaa9453d358818d76627ef6b" target="_parent">WSql::WMysqlDriver::result()</a>
148
-    <a id="Item20_c1" onkeydown="return searchResults.NavChild(event,20,1)" onkeypress="return searchResults.NavChild(event,20,1)" onkeyup="return searchResults.NavChild(event,20,1)" class="SRScope" href="../class_w_sql_1_1_w_sqlite_driver.html#a1cf0f135668cdd8299995c1ffff72724" target="_parent">WSql::WSqliteDriver::result()</a>
149
-    <a id="Item20_c2" onkeydown="return searchResults.NavChild(event,20,2)" onkeypress="return searchResults.NavChild(event,20,2)" onkeyup="return searchResults.NavChild(event,20,2)" class="SRScope" href="../class_w_sql_1_1_w_sql_database.html#a7f485f7a20f577f5f398c7b5fec07ab7" target="_parent">WSql::WSqlDatabase::result()</a>
150
-    <a id="Item20_c3" onkeydown="return searchResults.NavChild(event,20,3)" onkeypress="return searchResults.NavChild(event,20,3)" onkeyup="return searchResults.NavChild(event,20,3)" class="SRScope" href="../class_w_sql_1_1_w_sql_driver.html#ae5670416af2dc36911bc29478e5ad0e3" target="_parent">WSql::WSqlDriver::result()</a>
147
+    <a id="Item20_c0" onkeydown="return searchResults.NavChild(event,20,0)" onkeypress="return searchResults.NavChild(event,20,0)" onkeyup="return searchResults.NavChild(event,20,0)" class="SRScope" href="../class_w_sql_1_1_w_mysql_driver.html#a064edf98eaa9453d358818d76627ef6b" target="_parent">WSql::WMysqlDriver::getResult()</a>
148
+    <a id="Item20_c1" onkeydown="return searchResults.NavChild(event,20,1)" onkeypress="return searchResults.NavChild(event,20,1)" onkeyup="return searchResults.NavChild(event,20,1)" class="SRScope" href="../class_w_sql_1_1_w_sqlite_driver.html#a1cf0f135668cdd8299995c1ffff72724" target="_parent">WSql::WSqliteDriver::getResult()</a>
149
+    <a id="Item20_c2" onkeydown="return searchResults.NavChild(event,20,2)" onkeypress="return searchResults.NavChild(event,20,2)" onkeyup="return searchResults.NavChild(event,20,2)" class="SRScope" href="../class_w_sql_1_1_w_sql_database.html#a7f485f7a20f577f5f398c7b5fec07ab7" target="_parent">WSql::WSqlDatabase::getResult()</a>
150
+    <a id="Item20_c3" onkeydown="return searchResults.NavChild(event,20,3)" onkeypress="return searchResults.NavChild(event,20,3)" onkeyup="return searchResults.NavChild(event,20,3)" class="SRScope" href="../class_w_sql_1_1_w_sql_driver.html#ae5670416af2dc36911bc29478e5ad0e3" target="_parent">WSql::WSqlDriver::getResult()</a>
151 151
   </div>
152 152
  </div>
153 153
 </div>

+ 4
- 4
doc/html/search/functions_72.html View File

@@ -138,10 +138,10 @@
138 138
  <div class="SREntry">
139 139
   <a id="Item19" onkeydown="return searchResults.Nav(event,19)" onkeypress="return searchResults.Nav(event,19)" onkeyup="return searchResults.Nav(event,19)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_result')">result</a>
140 140
   <div class="SRChildren">
141
-    <a id="Item19_c0" onkeydown="return searchResults.NavChild(event,19,0)" onkeypress="return searchResults.NavChild(event,19,0)" onkeyup="return searchResults.NavChild(event,19,0)" class="SRScope" href="../class_w_sql_1_1_w_mysql_driver.html#a064edf98eaa9453d358818d76627ef6b" target="_parent">WSql::WMysqlDriver::result()</a>
142
-    <a id="Item19_c1" onkeydown="return searchResults.NavChild(event,19,1)" onkeypress="return searchResults.NavChild(event,19,1)" onkeyup="return searchResults.NavChild(event,19,1)" class="SRScope" href="../class_w_sql_1_1_w_sqlite_driver.html#a1cf0f135668cdd8299995c1ffff72724" target="_parent">WSql::WSqliteDriver::result()</a>
143
-    <a id="Item19_c2" onkeydown="return searchResults.NavChild(event,19,2)" onkeypress="return searchResults.NavChild(event,19,2)" onkeyup="return searchResults.NavChild(event,19,2)" class="SRScope" href="../class_w_sql_1_1_w_sql_database.html#a7f485f7a20f577f5f398c7b5fec07ab7" target="_parent">WSql::WSqlDatabase::result()</a>
144
-    <a id="Item19_c3" onkeydown="return searchResults.NavChild(event,19,3)" onkeypress="return searchResults.NavChild(event,19,3)" onkeyup="return searchResults.NavChild(event,19,3)" class="SRScope" href="../class_w_sql_1_1_w_sql_driver.html#ae5670416af2dc36911bc29478e5ad0e3" target="_parent">WSql::WSqlDriver::result()</a>
141
+    <a id="Item19_c0" onkeydown="return searchResults.NavChild(event,19,0)" onkeypress="return searchResults.NavChild(event,19,0)" onkeyup="return searchResults.NavChild(event,19,0)" class="SRScope" href="../class_w_sql_1_1_w_mysql_driver.html#a064edf98eaa9453d358818d76627ef6b" target="_parent">WSql::WMysqlDriver::getResult()</a>
142
+    <a id="Item19_c1" onkeydown="return searchResults.NavChild(event,19,1)" onkeypress="return searchResults.NavChild(event,19,1)" onkeyup="return searchResults.NavChild(event,19,1)" class="SRScope" href="../class_w_sql_1_1_w_sqlite_driver.html#a1cf0f135668cdd8299995c1ffff72724" target="_parent">WSql::WSqliteDriver::getResult()</a>
143
+    <a id="Item19_c2" onkeydown="return searchResults.NavChild(event,19,2)" onkeypress="return searchResults.NavChild(event,19,2)" onkeyup="return searchResults.NavChild(event,19,2)" class="SRScope" href="../class_w_sql_1_1_w_sql_database.html#a7f485f7a20f577f5f398c7b5fec07ab7" target="_parent">WSql::WSqlDatabase::getResult()</a>
144
+    <a id="Item19_c3" onkeydown="return searchResults.NavChild(event,19,3)" onkeypress="return searchResults.NavChild(event,19,3)" onkeyup="return searchResults.NavChild(event,19,3)" class="SRScope" href="../class_w_sql_1_1_w_sql_driver.html#ae5670416af2dc36911bc29478e5ad0e3" target="_parent">WSql::WSqlDriver::getResult()</a>
145 145
   </div>
146 146
  </div>
147 147
 </div>

+ 2
- 2
doc/html/todo.html View File

@@ -217,12 +217,12 @@ function toggleVisibility(linkObj) {
217 217
 <p><a class="anchor" id="_todo000014"></a> </p>
218 218
 <dl>
219 219
 <dt>Class <a class="el" href="class_w_sql_1_1_w_sqlite_driver.html">WSql::WSqliteDriver</a>  </dt>
220
-<dd>This driver is unfinished. Basic functionality is there but it is not, ah, elegant. Metadata is incomplete, all results are cached locally and there may be strange behavior. Basically I have done enough to get sufficient metadata for the ORM generator (except indices still) and query() will perform the query and return a result via result(). tableNames() works and tableMetaData() works as well (with the above caveats). Transactions are not supported and I seriously doubt that this is thread safe. It quite is crude at the moment - your milage may vary. It _might_ work for you but at this point I don't recommend it for production (10/10/2011)</dd>
220
+<dd>This driver is unfinished. Basic functionality is there but it is not, ah, elegant. Metadata is incomplete, all results are cached locally and there may be strange behavior. Basically I have done enough to get sufficient metadata for the ORM generator (except indices still) and query() will perform the query and return a result via getResult(). tableNames() works and tableMetaData() works as well (with the above caveats). Transactions are not supported and I seriously doubt that this is thread safe. It quite is crude at the moment - your milage may vary. It _might_ work for you but at this point I don't recommend it for production (10/10/2011)</dd>
221 221
 </dl>
222 222
 <p><a class="anchor" id="_todo000016"></a> </p>
223 223
 <dl>
224 224
 <dt>Member <a class="el" href="class_w_sql_1_1_w_sqlite_driver.html#a4ba7ea260dd263e74d9c16c58e655434">WSql::WSqliteDriver::query</a> (std::string sql) </dt>
225
-<dd>refactor this using metadata to construct a proper result set .. sqlite doesn't return things in orderly fashion - if a field is empty (i.e. NULL) it just doesn't include it in the results (ARG!), i _think_ and other strange random behavior is observed ..- so, we need to construct a skeleton result set from metadata and then fill it leaving the appropriate gaps such that the field name will _always_ be there. We can't simply refer to tableMetaData as it may be a join or such - which would mean parsing the query, etc..ugly The problem is that we cannot rely on sqlite to return metadata if, for instance, the query returns no results.. Consider using sqlite3_column_metadata. Also, some of this might be better moved to result()</dd>
225
+<dd>refactor this using metadata to construct a proper result set .. sqlite doesn't return things in orderly fashion - if a field is empty (i.e. NULL) it just doesn't include it in the results (ARG!), i _think_ and other strange random behavior is observed ..- so, we need to construct a skeleton result set from metadata and then fill it leaving the appropriate gaps such that the field name will _always_ be there. We can't simply refer to tableMetaData as it may be a join or such - which would mean parsing the query, etc..ugly The problem is that we cannot rely on sqlite to return metadata if, for instance, the query returns no results.. Consider using sqlite3_column_metadata. Also, some of this might be better moved to getResult()</dd>
226 226
 </dl>
227 227
 <p><a class="anchor" id="_todo000017"></a> </p>
228 228
 <dl>

+ 2
- 2
doc/html/wmysqlresult_8cpp_source.html View File

@@ -135,7 +135,7 @@ function toggleVisibility(linkObj) {
135 135
 <a name="l00044"></a>00044 
136 136
 <a name="l00045"></a><a class="code" href="class_w_sql_1_1_w_mysql_result.html#af0e35fb6c3832c1b213b8729243728b7">00045</a> <a class="code" href="class_w_sql_1_1_w_mysql_result.html#af0e35fb6c3832c1b213b8729243728b7">WMysqlResult::~WMysqlResult</a>()
137 137
 <a name="l00046"></a>00046 {
138
-<a name="l00047"></a>00047     freeresult();
138
+<a name="l00047"></a>00047     freegetResult();
139 139
 <a name="l00048"></a>00048 }
140 140
 <a name="l00049"></a>00049 
141 141
 <a name="l00050"></a>00050 <span class="comment">// WMysqlResult&amp; WMysqlResult::operator=( const WMysqlResult &amp; other )</span>
@@ -149,7 +149,7 @@ function toggleVisibility(linkObj) {
149 149
 <a name="l00058"></a>00058 <span class="comment">// ///!\todo return ...;</span>
150 150
 <a name="l00059"></a>00059 <span class="comment">// }</span>
151 151
 <a name="l00060"></a>00060 
152
-<a name="l00061"></a>00061 <span class="keywordtype">void</span> WMysqlResult::freeresult()
152
+<a name="l00061"></a>00061 <span class="keywordtype">void</span> WMysqlResult::freegetResult()
153 153
 <a name="l00062"></a>00062 {
154 154
 <a name="l00063"></a>00063     mysql_free_result(_mysqlResult);
155 155
 <a name="l00064"></a>00064 }

+ 2
- 2
doc/html/wmysqlresult_8h_source.html View File

@@ -167,9 +167,9 @@ function toggleVisibility(linkObj) {
167 167
 <a name="l00065"></a>00065 
168 168
 <a name="l00066"></a>00066     <span class="keyword">private</span>:
169 169
 <a name="l00067"></a><a class="code" href="class_w_sql_1_1_w_mysql_result.html#a1cc3d6f1837c9d43abb38b07c26467d8">00067</a>         <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_w_sql_1_1_w_mysql_driver.html" title="A driver for MySQL databases.">WMysqlDriver</a>;
170
-<a name="l00068"></a>00068         <span class="keywordtype">void</span> freeresult();
170
+<a name="l00068"></a>00068         <span class="keywordtype">void</span> freegetResult();
171 171
 <a name="l00069"></a>00069         <span class="keywordtype">void</span> setResult(MYSQL_RES *res){_mysqlResult = res;}
172
-<a name="l00070"></a>00070         MYSQL_RES * result(){<span class="keywordflow">return</span> _mysqlResult;};
172
+<a name="l00070"></a>00070         MYSQL_RES * getResult(){<span class="keywordflow">return</span> _mysqlResult;};
173 173
 <a name="l00071"></a>00071         MYSQL_RES *_mysqlResult;
174 174
 <a name="l00072"></a>00072 };
175 175
 <a name="l00073"></a>00073 

+ 2
- 2
examples/test_wmysqlresultset.cpp View File

@@ -42,14 +42,14 @@ int main()
42 42
         }
43 43
         
44 44
         std::string sql = "select * from " + *it + " limit 2;";
45
-        if(!db.query(sql))
45
+        if(!db.doQuery(sql))
46 46
         {
47 47
             std::cout << "Query Failed: " << db.error().text() << std::endl;
48 48
             it++;
49 49
             continue;
50 50
         }else{
51 51
             
52
-            WSql::WSqlResult *result = db.result();
52
+            WSql::WSqlResult *result = db.getResult();
53 53
             WSql::WSqlRecord record = result->fetchFirst();
54 54
             while(!record.empty())
55 55
             {

+ 2
- 2
examples/test_wsqlresultset.cpp View File

@@ -17,7 +17,7 @@ int main()
17 17
     while (it != tables.end()) 
18 18
     {
19 19
         std::string sql = "select * from " + *it + " ;";
20
-        if(!db.query(sql))
20
+        if(!db.doQuery(sql))
21 21
         {
22 22
             std::cerr << "Query Failed: " << db.error().text() << std::endl;
23 23
             it++;
@@ -41,7 +41,7 @@ int main()
41 41
                 std::cout << "  * Autoincrement:  "  << (clm.isAutoIncremented()?"true" : "false") << std::endl;
42 42
                 std::cout << "  * default value:  "  << clm.defaultValue<std::string>() << std::endl;
43 43
             }
44
-            WSql::WSqlResult *result = db.result();
44
+            WSql::WSqlResult *result = db.getResult();
45 45
             WSql::WSqlRecord record = result->fetchFirst();
46 46
             while(!record.empty())
47 47
             {

+ 10
- 10
src/sql/drivers/wmysqldriver.cpp View File

@@ -150,11 +150,11 @@ bool WMysqlDriver::open()
150 150
     This method sends the SQL given in \a sqlstring to the server to be
151 151
     executed. If the query was successful it returns true, if not it sets an
152 152
     error and returns false. If the query should return results (eg. a SELECT)
153
-    they will be available from result().
153
+    they will be available from getResult().
154 154
     
155 155
     \returns bool on success
156 156
 */
157
-bool WMysqlDriver::query(std::string sqlstring )
157
+bool WMysqlDriver::doQuery(std::string sqlstring )
158 158
 {
159 159
     if(!isOpen())
160 160
         return false;
@@ -198,12 +198,12 @@ if (!db.open())
198 198
     dosomeerror();
199 199
 if (!db.query(std::string("select foo from bar")))
200 200
     dosomeerror();
201
-WSqlResult *result = db.result();
202
-//WSqlResult *result2 = db.result(); <- wrong 
201
+WSqlResult *result = db.getResult();
202
+//WSqlResult *result2 = db.getResult(); <- wrong 
203 203
 //...iterate over results ..._then repeat:
204 204
 if (!db.query(std::string("select baz from bar")))
205 205
     dosomeerror();
206
-WSqlResult *result = db.result();
206
+WSqlResult *result = db.getResult();
207 207
 ..etc.
208 208
 \endcode
209 209
 
@@ -267,7 +267,7 @@ set first.
267 267
 \note WARNING: This method will invalidate previous WSqlResults returned - nesting
268 268
 calls to this method inside of a loop iterating over WSqlResults will not work. Obtain
269 269
 the list \em first and \em aftwards execute a query and fetch the result set using
270
-result().
270
+getResult().
271 271
 \retval vector<string> a list of table names
272 272
  */
273 273
 std::vector< std::string > WMysqlDriver::tableNames()
@@ -283,7 +283,7 @@ std::vector< std::string > WMysqlDriver::tableNames()
283 283
     }
284 284
     std::string sql = "show tables";
285 285
     query(sql);
286
-    result();
286
+    getResult();
287 287
     int numtables = _result->count();
288 288
     for(int i=0;i<numtables;++i)
289 289
         vecToReturn.push_back(_result->fetch(i).field(0).data<std::string>());
@@ -323,7 +323,7 @@ std::vector< std::string > WMysqlDriver::tableNames()
323 323
     \warning If the table metadata has not been initialized yet this method will invalidate 
324 324
     any previous WSqlResult pointer returned - in this case nesting calls to this method inside 
325 325
     of a loop iterating over WSqlResults WILL NOT WORK. Obtain the WSqlTable \em first and 
326
-    \em then query() a query and fetch the result set using result() or use WSqlDatabase::initMetaData()
326
+    \em then query() a query and fetch the result set using getResult() or use WSqlDatabase::initMetaData()
327 327
     to initialize the metadata for all tables at once.
328 328
     
329 329
     \param string the name of the table to use
@@ -345,7 +345,7 @@ WSqlTable WMysqlDriver::tableMetaData( const std::string& tableName )
345 345
     std::vector<std::string>::const_iterator column_names_it;
346 346
     std::string sql("show columns in "); sql.append(tableName);
347 347
     query(sql);
348
-    result();
348
+    getResult();
349 349
     WSqlColumn clm;
350 350
     WSqlRecord record = _result->fetchFirst();
351 351
     while(!record.empty())
@@ -381,7 +381,7 @@ WSqlTable WMysqlDriver::tableMetaData( const std::string& tableName )
381 381
         " where table_name like '" + tableName + "' and column_name like '" + *column_names_it + "'";
382 382
         
383 383
         query(sql);
384
-        result();
384
+        getResult();
385 385
         WSqlRecord record = _result->fetchFirst();
386 386
         while(!record.empty())
387 387
         {

+ 2
- 2
src/sql/drivers/wmysqlresult.cpp View File

@@ -44,7 +44,7 @@ WMysqlResult::WMysqlResult( const WSql::WSqlDriver* driver ): WSqlResult( driver
44 44
 
45 45
 WMysqlResult::~WMysqlResult()
46 46
 {
47
-    freeresult();
47
+    freeResult();
48 48
 }
49 49
 
50 50
 // WMysqlResult& WMysqlResult::operator=( const WMysqlResult & other )
@@ -58,7 +58,7 @@ WMysqlResult::~WMysqlResult()
58 58
 // ///!\todo return ...;
59 59
 // }
60 60
 
61
-void WMysqlResult::freeresult()
61
+void WMysqlResult::freeResult()
62 62
 {
63 63
     mysql_free_result(_mysqlResult);
64 64
 }

+ 2
- 2
src/sql/drivers/wmysqlresult.h View File

@@ -65,9 +65,9 @@ class WMysqlResult : public WSqlResult
65 65
 
66 66
     private:
67 67
         friend class WMysqlDriver;
68
-        void freeresult();
68
+        void freeResult();
69 69
         void setResult(MYSQL_RES *res){_mysqlResult = res;}
70
-        MYSQL_RES * result(){return _mysqlResult;};
70
+        MYSQL_RES * getResult(){return _mysqlResult;};
71 71
         MYSQL_RES *_mysqlResult;
72 72
 };
73 73
 

+ 2
- 2
src/sql/drivers/wsqlitedriver.cpp View File

@@ -37,7 +37,7 @@ namespace WSql
37 37
  * Metadata is incomplete, all results are cached locally and there may be strange behavior.
38 38
  * Basically I have done enough to get sufficient metadata for the ORM generator (except
39 39
  *  indices still) and query() will perform the query and return a result
40
- * via result(). tableNames() works and tableMetaData() works as well (with the above
40
+ * via getResult(). tableNames() works and tableMetaData() works as well (with the above
41 41
  * caveats). Transactions are not supported and I seriously doubt that this is thread safe.
42 42
  * It quite is crude at the moment - your milage may vary. It _might_ work for you but
43 43
  * at this point I don't recommend it for production (10/10/2011)
@@ -284,7 +284,7 @@ void WSqliteDriver::close()
284 284
  would mean parsing the query, etc..ugly The problem is that we cannot
285 285
  rely on sqlite to return metadata if, for instance, the query returns no results..
286 286
  Consider using sqlite3_column_metadata.
287
- Also, some of this might be better moved to result()
287
+ Also, some of this might be better moved to getResult()
288 288
  
289 289
  * @param std::string sql containing the query string
290 290
  * @retval bool

+ 16
- 16
src/sql/wsqldatabase.cpp View File

@@ -56,7 +56,7 @@ std::string sql = "select * from " + sometable + " limit 2;";
56 56
 if(!db.query(sql))
57 57
     std::cout << "Query Failed: " << db.error().text() << std::endl;
58 58
 }else{
59
-    WSql::WSqlResult *result = db.result();
59
+    WSql::WSqlResult *result = db.getResult();
60 60
     std::cout << "Number of rows: " << result->size() << std::endl;
61 61
     WSql::WSqlRecord record = result->fetchFirst();
62 62
     while(!record.empty())
@@ -111,7 +111,7 @@ WSqlDatabase::WSqlDatabase()
111 111
     
112 112
     This constructs a new database object initialized with the values of  \a other
113 113
      *    WARNING: This also creates a new driver! If \a other
114
-     *    is destroyed result() is invalid until the next query() is called!
114
+     *    is destroyed getResult() is invalid until the next query() is called!
115 115
 
116 116
     \param WSqlDatabase other - database to copy
117 117
 */
@@ -130,7 +130,7 @@ WSqlDatabase::WSqlDatabase(const WSqlDatabase &other)
130 130
 /*!\brief Destroys the object and frees any allocated resources.
131 131
  * 
132 132
 Note that the driver is also destroyed at this time - any WSqlResults
133
-obtained from result() will be invalid after this.
133
+obtained from getResult() will be invalid after this.
134 134
     \sa close()
135 135
 */
136 136
 
@@ -145,7 +145,7 @@ WSqlDatabase::~WSqlDatabase()
145 145
 /*!\brief Copies the values of \a other to this object.
146 146
  * 
147 147
     WARNING: This also creates a new driver! If \a other
148
-    is destroyed result() is invalid until the next query()!
148
+    is destroyed getResult() is invalid until the next query()!
149 149
 
150 150
     \param WSqlDatabase other - database to copy
151 151
 */
@@ -419,11 +419,11 @@ std::string WSqlDatabase::hostName() const
419 419
 
420 420
 This returns a pointer to the database driver used to access the database
421 421
     connection. \em Caution! This is not meant to be used directly - use open().
422
-    close(), query() and result() for interaction with the driver instead.
422
+    close(), query() and getResult() for interaction with the driver instead.
423 423
     
424 424
     !This may be removed in future.
425 425
 
426
-    \sa open() close() query() result()
426
+    \sa open() close() query() getResult()
427 427
 */
428 428
 
429 429
 WSqlDriver* WSqlDatabase::driver() const
@@ -470,7 +470,7 @@ WSqlError WSqlDatabase::error() const
470 470
   \warning If the table metadata has not been initialized yet this method will invalidate 
471 471
   any previous WSqlResult pointer returned - in this case nesting calls to this method inside 
472 472
   of a loop iterating over WSqlResults WILL NOT WORK. Obtain the WSqlTable \em first and 
473
-  \em then query() a query and fetch the result set using result() or use initMetaData()
473
+  \em then query() a query and fetch the result set using getResult() or use initMetaData()
474 474
   to initialize the metadata for all tables at once.
475 475
   
476 476
 \todo Use the table type - currently does nothing.
@@ -481,7 +481,7 @@ WSqlError WSqlDatabase::error() const
481 481
 */
482 482
 const std::vector<std::string>& WSqlDatabase::tableNames(WSql::TableType type)
483 483
 {
484
-	if(_tableNames.empty())
484
+	if(_tableNames.empty() && _driver->isValid() )
485 485
         _tableNames = _driver->tableNames();
486 486
     return _tableNames;
487 487
 }
@@ -514,7 +514,7 @@ const std::vector<std::string>& WSqlDatabase::tableNames(WSql::TableType type)
514 514
  \warning If the table metadata has not been initialized yet this method will invalidate 
515 515
  any previous WSqlResult pointer returned - in this case nesting calls to this method inside 
516 516
  of a loop iterating over WSqlResults WILL NOT WORK. Obtain the WSqlTable \em first and 
517
- \em then query() a query and fetch the result set using result() or use initMetaData()
517
+ \em then query() a query and fetch the result set using getResult() or use initMetaData()
518 518
  to initialize the metadata for all tables at once.
519 519
  
520 520
  \param string the name of the table to use
@@ -609,12 +609,12 @@ bool WSqlDatabase::isValid() const
609 609
 /*! \brief Executes the query in \a sql returning true on sucess
610 610
  * 
611 611
  * This method sends the query SQL in string \a sql  to the database server,
612
- * the results of which will be available by calling result(). Use this method
612
+ * the results of which will be available by calling getResult(). Use this method
613 613
  * when you expect a result set, for non-result execution use execute()
614
- * \sa result() execute()
614
+ * \sa getResult() execute()
615 615
  * \retval bool true on success.
616 616
  */
617
-bool WSqlDatabase::query(const std::string& sql)
617
+bool WSqlDatabase::doQuery(const std::string& sql)
618 618
 {
619 619
     return _driver->query(sql);
620 620
 }
@@ -639,12 +639,12 @@ bool WSqlDatabase::query(const std::string& sql)
639 639
  *    dosomeerror();
640 640
  * if (!db.query(std::string("select foo from bar")))
641 641
  *    dosomeerror();
642
- * WSqlResult *result = db.result();
643
- * //WSqlResult *result2 = db.result(); <- wrong 
642
+ * WSqlResult *result = db.getResult();
643
+ * //WSqlResult *result2 = db.getResult(); <- wrong 
644 644
  * //...iterate over results ..._then repeat:
645 645
  * if (!db.query(std::string("select baz from bar")))
646 646
  *    dosomeerror();
647
- * WSqlResult *result = db.result();
647
+ * WSqlResult *result = db.getResult();
648 648
  * ..etc.
649 649
  * \endcode
650 650
  * \sa WSqlResult WSqlRecord WMysqlDriver WSqliteDriver
@@ -652,7 +652,7 @@ bool WSqlDatabase::query(const std::string& sql)
652 652
  * \param bool iscached - if true (the default) fetches entire result set at once.
653 653
  * \retval WSqlResult* - the result set 
654 654
  */
655
-WSqlResult * WSqlDatabase::result(bool iscached)
655
+WSqlResult * WSqlDatabase::getResult(bool iscached)
656 656
 {
657 657
     return _driver->result(iscached);
658 658
 }

+ 38
- 28
src/sql/wsqldatabase.h View File

@@ -1,17 +1,17 @@
1 1
 /*
2 2
  *    WORM - a DAL/ORM code generation framework
3 3
  *    Copyright (C) 2011  Erik Winn <sidewalksoftware@gmail.com>
4
- * 
4
+ *
5 5
  *    This program is free software: you can redistribute it and/or modify
6 6
  *    it under the terms of the GNU General Public License as published by
7 7
  *    the Free Software Foundation, either version 3 of the License, or
8 8
  *    (at your option) any later version.
9
- * 
9
+ *
10 10
  *    This program is distributed in the hope that it will be useful,
11 11
  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
12 12
  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 13
  *    GNU General Public License for more details.
14
- * 
14
+ *
15 15
  *    You should have received a copy of the GNU General Public License
16 16
  *    along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 17
  */
@@ -33,14 +33,14 @@ class WSqlDriver;
33 33
 
34 34
 class WSqlDatabase
35 35
 {
36
-	
36
+
37 37
 public:
38
-	
39
-	WSqlDatabase();
38
+
39
+    WSqlDatabase();
40 40
     WSqlDatabase(const WSql::DriverType &type);
41
-	WSqlDatabase(const WSqlDatabase &other);
41
+    WSqlDatabase(const WSqlDatabase &other);
42 42
 
43
-~WSqlDatabase();
43
+    ~WSqlDatabase();
44 44
 
45 45
     WSqlDatabase &operator=(const WSqlDatabase &other);
46 46
 
@@ -53,48 +53,58 @@ public:
53 53
     WSqlError error() const;
54 54
     std::vector<std::string> errors();
55 55
     bool isValid() const;
56
-    
56
+
57 57
     //General connection configurations ..
58 58
     std::string databaseName() const;
59 59
     std::string userName() const;
60 60
     std::string password() const;
61 61
     std::string hostName() const;
62
-    int port() const {return _port;}
62
+    int port() const {
63
+        return _port;
64
+    }
63 65
     std::string connectionOptions() const;
64
-    WSql::DriverType driverType(){return _driverType;}
65
-    	
66
+    WSql::DriverType driverType() {
67
+        return _driverType;
68
+    }
69
+
66 70
     void setDatabaseName(const std::string& name);
67 71
     void setUserName(const std::string& name);
68 72
     void setPassword(const std::string& password);
69 73
     void setHostName(const std::string& host);
70 74
     void setPort(int p);
71 75
     void setConnectOptions(const std::string& options = std::string());
72
-	void setDriverType(WSql::DriverType t);
73
-	
74
-    void addError(const WSqlError& e){_errorStack.push_back(e);}
76
+    void setDriverType(WSql::DriverType t);
77
+
78
+    void addError(const WSqlError& e) {
79
+        _errorStack.push_back(e);
80
+    }
75 81
     //REMOVE:?
76
-	void setDriver(WSqlDriver *d){_driver=d;}
77
-    
82
+    void setDriver(WSqlDriver *d) {
83
+        _driver=d;
84
+    }
85
+
78 86
     //Raw driver access ..
79 87
     WSqlDriver* driver() const;
80
-    WSqlDriver* handle() const {return driver();}
81
-    
88
+    WSqlDriver* handle() const {
89
+        return driver();
90
+    }
91
+
82 92
     //Metadata
83 93
     const std::vector<std::string>& tableNames(WSql::TableType type = WSql::Tables);
84 94
     WSqlTable tableMetaData( const std::string &tableName ) const;
85 95
     void initMetaData();
86
-   
96
+
87 97
     //Query interaction - wrapper around driver ..
88
-    bool query(const std::string& sql );
98
+    bool doQuery(const std::string& sql );
89 99
 //    bool execute(const std::string& sql );
90
-    WSqlResult* result(bool iscached=true);
100
+    WSqlResult* getResult(bool iscached=true);
91 101
     bool initDriver();
92
-    
102
+
93 103
 private:
94 104
     void init();
95
-	
96
-	bool _isValid;
97
-	WSql::DriverType _driverType;
105
+
106
+    bool _isValid;
107
+    WSql::DriverType _driverType;
98 108
     WSqlDriver* _driver;
99 109
     std::string _databaseName;
100 110
     std::string _userName;
@@ -103,8 +113,8 @@ private:
103 113
     std::string _connectionOptions;
104 114
     int _port;
105 115
 
106
-	std::vector<std::string> _tableNames;
107
-	std::vector<WSqlError> _errorStack;	
116
+    std::vector<std::string> _tableNames;
117
+    std::vector<WSqlError> _errorStack;
108 118
 };
109 119
 
110 120
 } //namespace WSql

+ 5
- 0
src/sql/wsqldatum.cpp View File

@@ -26,6 +26,11 @@ namespace WSql{
26 26
      *    This class provides a flexible type container for a single value found in a database column. It can
27 27
      *    be instatiated to hold the types supported by WSqlDataType. It includes methods for conversion
28 28
      *   to various types on demand.
29
+     * 
30
+     * \todo - resolve: whether to use boost::any instead of string for internal storage .. or, revert to the 
31
+     * previous void pointer version?  why? unsure of data integrity, eg. blob to string, longlong, etc .. contrary
32
+     * to initial assumptions, some dbms may return types in the api (sqlite?) rather than string reps thereof.
33
+     * regardless, blob is another issue, may be huge .. or streamable .. think on this. 
29 34
      *    
30 35
      *    \ingroup WSql
31 36
      *    \sa WSqlDataType WSqlField WSqlColumn

+ 4
- 4
src/sql/wsqldriver.cpp View File

@@ -53,7 +53,7 @@ WSqlDriver::WSqlDriver(WSqlDatabase* db)
53 53
 
54 54
 /*!\brief Destroys the driver and created resources
55 55
  * 
56
- * Note that the result pointer obtained from result() is \em invalid after the 
56
+ * Note that the result pointer obtained from getResult() is \em invalid after the 
57 57
  * object is destroyed! This means you do not need to (and should not) delete 
58 58
  * a result from the driver and that you also must be careful not to use it after 
59 59
  * a WSqlDriver object has been destroyed.
@@ -168,9 +168,9 @@ WSqlTable* WSqlDriver::getTable( const std::string& tablename )
168 168
 
169 169
     Executes the SQL statement in \a sql and returns true if there were no
170 170
     errors.  Note that if the query was a SELECT expecting results the 
171
-    WSqlResult is initiated before return and can be accesses using result().
172
-    If there were no records returned result() will return an empty result.
173
-    \sa WSqlResult result()
171
+    WSqlResult is initiated before return and can be accesses using getResult().
172
+    If there were no records returned getResult() will return an empty result.
173
+    \sa WSqlResult getResult()
174 174
 */
175 175
 
176 176
 /*!

+ 4
- 0
src/sql/wsqlfield.cpp View File

@@ -66,6 +66,10 @@ namespace WSql
66 66
  *    all setting the data with the supported types. Note that the types are coverted to string
67 67
  *    and stored in the WSqlDatum.
68 68
  *    
69
+ *  \todo maybe should implement deep copy of _data ..? also, missing copy ctor .. this only
70
+ * applies if WSqlDatum changes the internal storage from string to boost::any ..
71
+ * 
72
+ * 
69 73
  *   \ingroup WSql
70 74
  *   \sa data() name() columnName() setData()
71 75
  *   \sa WSqlRecord WSqlDatum WSqlDataType

+ 1
- 1
src/sql/wsqlresult.cpp View File

@@ -41,7 +41,7 @@ namespace WSql {
41 41
 std::string sql = "select * from " + tablename + " limit 2";
42 42
 if(!db.execute(sql)) exit();
43 43
 
44
-WSqlResult *result = db.result();
44
+WSqlResult *result = db.getResult();
45 45
 WSqlRecord record = result->fetchFirst();
46 46
 while(!record.empty())
47 47
 {

+ 1
- 0
src/sql/wsqltable.cpp View File

@@ -29,6 +29,7 @@ namespace WSql {
29 29
     information about indices, foriegn keys, primary keys, etc.  It is used primarily by the
30 30
     ORM generator.
31 31
 
32
+    \todo - correct this, actually we _have a naming convention like rails ..
32 33
     Tables to be generated may have any naming schema - but it is recommended that this
33 34
     is at least consistant. Worm will not alter the names but rather takes them exactly as they
34 35
     are from the the names in the database - so "my_table" will produce a class object 

Loading…
Cancel
Save