449 lines
30 KiB
HTML
449 lines
30 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||
<html>
|
||
|
||
<head>
|
||
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
|
||
<title>QxOrm : C++ Qt ORM Object Relational Mapping database library - QxEntityEditor : C++ Qt entities graphic
|
||
editor (data model designer and source code generator)</title>
|
||
<link rel='stylesheet' type='text/css' href='./resource/qxorm_style.css'>
|
||
<script type="text/javascript" src="./resource/jquery.min.js"></script>
|
||
<script type="text/javascript" src="./resource/qxorm_script.js"></script>
|
||
</head>
|
||
|
||
<body>
|
||
<table border="0" style="width: 80%" align="center">
|
||
<col>
|
||
<col>
|
||
<col>
|
||
<col>
|
||
<col>
|
||
<tbody>
|
||
<tr>
|
||
<td><a href="./home.html"><img alt="QxOrm" src="./resource/logo_qxorm_and_qxee.png" align="left"
|
||
border="0"></a></td>
|
||
<td align="right" style="vertical-align:bottom">
|
||
<div id="qx_search">
|
||
<gcse:search></gcse:search>
|
||
</div>
|
||
</td>
|
||
<td width="15"></td>
|
||
<td align="right" style="vertical-align:bottom">
|
||
<img alt="Windows" src="./resource/logo_windows.gif" width="35" height="35">
|
||
<img alt="Linux" src="./resource/logo_linux.gif" width="35" height="35">
|
||
<img alt="Macintosh" src="./resource/logo_mac.gif" width="35" height="35">
|
||
</td>
|
||
<td width="70"><img alt="C++" src="./resource/logo_cpp.gif" width="50" height="50" align="right"></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<hr style="width: 80%" align="center" size="1" color="#100D5A">
|
||
<table border="0" style="width: 80%" align="center">
|
||
<col>
|
||
<col>
|
||
<col>
|
||
<col>
|
||
<col>
|
||
<col>
|
||
<tbody>
|
||
<tr>
|
||
<td align="center"><a href="./home.html" class="btn_nav">Home</a></td>
|
||
<td align="center"><a href="./download.html" class="btn_nav">Download</a></td>
|
||
<td align="center"><a href="./quick_sample.html" class="btn_nav">Quick sample</a></td>
|
||
<td align="center" onmouseover="showHideElementById('menu_tuto', true);"
|
||
onmouseout="showHideElementById('menu_tuto', false);">
|
||
<a href="./tutorial.html" class="btn_nav">Tutorial (4)</a>
|
||
<table class="table_menu_tuto">
|
||
<tbody>
|
||
<tr>
|
||
<td>
|
||
<div id="menu_tuto" class="div_menu_tuto">
|
||
<a href="./tutorial_3.html" class="btn_sub_menu">install QxOrm</a><br />
|
||
<a href="./tutorial.html" class="btn_sub_menu">qxBlog</a><br />
|
||
<a href="./tutorial_2.html" class="btn_sub_menu">qxClientServer</a><br />
|
||
<a href="./tutorial_4.html" class="btn_sub_menu">QxEntityEditor videos</a>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</td>
|
||
<td align="center" onmouseover="showHideElementById('menu_manual', true);"
|
||
onmouseout="showHideElementById('menu_manual', false);">
|
||
<a href="./manual.html" class="btn_nav">Manual (2)</a>
|
||
<table class="table_menu_manual">
|
||
<tbody>
|
||
<tr>
|
||
<td>
|
||
<div id="menu_manual" class="div_menu_manual">
|
||
<a href="./manual.html" class="btn_sub_menu">QxOrm manual</a><br />
|
||
<a href="./manual_qxee.html" class="btn_sub_menu">QxEntityEditor manual</a><br />
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</td>
|
||
<td align="center"><a href="./link.html" class="btn_nav">Forum</a></td>
|
||
<td align="center"><a href="./customer.html" class="btn_nav">Our customers</a></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<hr style="width: 80%" align="center" size="1" color="#100D5A">
|
||
<table border="0" style="width: 80%" align="center">
|
||
<col>
|
||
<col>
|
||
<col>
|
||
<col>
|
||
<col>
|
||
<col>
|
||
<tbody>
|
||
<tr>
|
||
<td align="left" valign="top">
|
||
<font size="2" class="txt_with_shadow">QxOrm >> Quick sample</font>
|
||
</td>
|
||
<td align="right" valign="top">
|
||
<table cellspacing="0" cellpadding="1">
|
||
<col>
|
||
<col>
|
||
<tbody>
|
||
<tr>
|
||
<td align="right" valign="top">
|
||
<font size="2" class="txt_with_shadow">Current version : </font>
|
||
</td>
|
||
<td align="left" valign="top">
|
||
<font size="2" class="txt_with_shadow">QxOrm 1.5.0 - <a href="../doxygen/index.html"
|
||
target="_blank">QxOrm library online class documentation</a> - <a
|
||
href="https://github.com/QxOrm/QxOrm" target="_blank">GitHub</a></font>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td align="right" valign="top">
|
||
<font size="2" class="txt_with_shadow"></font>
|
||
</td>
|
||
<td align="left" valign="top">
|
||
<font size="2" class="txt_with_shadow">QxEntityEditor 1.2.8</font>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</td>
|
||
<td width="10px"></td>
|
||
<td width="40px" height="30px"><a href="../qxorm_fr/quick_sample.html"><img alt="Version fran<61>aise du site"
|
||
src="./resource/FR.png" width="40" height="30" border="0"></a></td>
|
||
<td width="40px" height="30px"><a href="../qxorm_en/quick_sample.html"><img alt="Web site english version"
|
||
src="./resource/GB.png" width="40" height="30" border="0"></a></td>
|
||
<td width="40px" height="30px"><a href="http://sites.google.com/site/qxormpostgres/" target="_blank"><img
|
||
alt="" src="./resource/ES.png" width="40" height="30" border="0"></a></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<table border="1" frame="vsides" rules="cols" style="width: 80%" align="center" cellpadding="6" bgcolor="#F2F2F4">
|
||
<col>
|
||
<tbody>
|
||
<tr>
|
||
<td align="justify">
|
||
<table border="0" style="width: 100%" align="center">
|
||
<col>
|
||
<col>
|
||
<tbody>
|
||
<tr>
|
||
<td><b>In this chapter, we will see a quick sample with basic functionalities of QxOrm
|
||
library.</b> <br>
|
||
<br>
|
||
<i>Note :</i> <b>QxOrm</b> library uses the following syntax and naming convention for C++
|
||
source code :
|
||
<ul>
|
||
<li>all classes, functions, properties, etc... are defined under <a
|
||
href="./resource/qxorm.namespace.qx.jpg"><i>namespace qx</i></a> ;
|
||
</li>
|
||
<li>all macros of QxOrm library are prefixed by <i>QX_...</i> ;
|
||
</li>
|
||
<li>all abstracts classes (or interfaces) start with prefix <i>Ix</i> (for example
|
||
<i>IxFactory</i> is an interface to create an instance of object) ;
|
||
</li>
|
||
<li>other classes start with prefix <i>Qx</i> (for example <i>QxDataMember</i>) ;
|
||
</li>
|
||
<li>containers of objects end with suffix <i>X</i> (for example <i>QxDataMemberX</i> is a
|
||
list of <i>QxDataMember</i>) ;
|
||
</li>
|
||
<li>functions to interact with databases are under <a
|
||
href="./resource/qxorm.namespace.qx.dao.jpg"><i>namespace qx::dao</i></a> (for
|
||
example <i>qx::dao::fetch_by_id()</i>) ;
|
||
</li>
|
||
<li>functions to <i>serialize</i> are under <a
|
||
href="./resource/qxorm.namespace.qx.serialization.jpg"><i>namespace
|
||
qx::serialization</i></a> (for example <i>qx::serialization::xml::to_file()</i>)
|
||
;
|
||
</li>
|
||
<li>the <i>reflection</i> (or <i>introspection</i>) engine can be used with
|
||
<b><i>qx::QxClassX</i></b> (for example <i>qx::QxClassX::invoke()</i> to call a class
|
||
method) ;
|
||
</li>
|
||
<li>all traits classes are under <a
|
||
href="./resource/qxorm.namespace.qx.trait.jpg"><i>namespace qx::trait</i></a> (for
|
||
example <i>qx::trait::is_smart_ptr<T></i>).
|
||
</li>
|
||
</ul>
|
||
</td>
|
||
<td width="200" align="center" valign="top"><a href="./resource/qt_ambassador_logo.png"
|
||
target="_blank"><img alt="qt_ambassador" src="./resource/qt_ambassador_logo_150x150.png"
|
||
width="150" height="150" border="0"></a><br>
|
||
<b>
|
||
<font size="2">QxOrm library has been accepted into the <a
|
||
href="http://forum.qt.io/category/24/qt-ambassador-program" target="_blank">Qt
|
||
Ambassador Program</a></font>
|
||
</b>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<i>Additional note :</i> you can find a more complex sample (with inheritance, polymorphism,
|
||
relationships, collections, shared libraries,
|
||
memory leak, etc...) in the folder <i>./test/qxDllSample/</i> of your QxOrm package.
|
||
The <i>./test/qxDllSample/</i> folder contains 2 projects of
|
||
DLL type (shared libraries) and 1 project of executable type : <i>./dll1/</i>,
|
||
<i>./dll2/</i> and <i>./exe/</i>.<br>
|
||
This solution can be built with <b>Visual C++ 2008, 2010 or 2012</b> on Windows (open the file
|
||
<i>./test/qxDllSample/test.sln</i>).<br>
|
||
This solution can also be compiled with <b>GCC</b> on Linux, <b>Clang</b> on Mac OS X and <b>MinGW</b> on
|
||
Windows with <i>qmake</i> command line.<br>
|
||
<br>
|
||
Quick sample step by step :
|
||
<ul>
|
||
<li><a href="#quick_sample_1">1- <i>drug.h</i> file : <i>drug</i> class definition with 3 properties :
|
||
<i>id</i>, <i>name</i> and <i>description</i></a></li>
|
||
<li><a href="#quick_sample_2">2- <i>drug.cpp</i> file : 'setting function' implementation : <i>void
|
||
qx::register_class()</i></a></li>
|
||
<li><a href="#quick_sample_3">3- <i>main.cpp</i> file : basic functionalities of QxOrm library with
|
||
<i>drug</i> class</a></li>
|
||
<li><a href="#quick_sample_4">4- execute program and trace output debug</a></li>
|
||
<li><a href="#quick_sample_5">5- <i>./export_drugs.xml</i> file created by the program</a></li>
|
||
</ul>
|
||
<br>
|
||
<font color="#100D5A"><a name="quick_sample_1">*
|
||
-----------------------------------------------------------------------------------------------------<br>
|
||
* 1- <i>drug.h</i> file : <i>drug</i> class definition with 3 properties : <i>id</i>, <i>name</i>
|
||
and <i>description</i><br> *
|
||
-----------------------------------------------------------------------------------------------------<br>
|
||
</a></font><br>
|
||
<table border="1" bgcolor="#FFFFFF">
|
||
<col>
|
||
<tbody>
|
||
<tr>
|
||
<td title="drug.h">
|
||
<pre><span class="pre">#ifndef _CLASS_DRUG_H_
|
||
#define _CLASS_DRUG_H_
|
||
</span><span class="keyword">
|
||
class</span> drug<span class="operator">
|
||
{</span><span class="keyword">
|
||
public</span><span class="operator">:</span><span class="type">
|
||
long</span> id<span class="operator">;</span>
|
||
QString name<span class="operator">;</span>
|
||
QString description<span class="operator">;</span>
|
||
|
||
drug<span class="operator">() :</span> id<span class="operator">(</span><span class="int">0</span><span class="operator">) { ; }</span><span class="keyword">
|
||
virtual</span><span class="operator"> ~</span>drug<span class="operator">() { ; }
|
||
};</span>
|
||
|
||
QX_REGISTER_HPP_MY_TEST_EXE<span class="operator">(</span>drug<span class="operator">,</span> qx<span class="operator">::</span>trait<span class="operator">::</span>no_base_class_defined<span class="operator">,</span><span class="int"> 1</span><span class="operator">)</span><span class="comment">
|
||
|
||
/* This macro is necessary to register 'drug' class in QxOrm context */
|
||
/* param 1 : the current class to register => 'drug' */
|
||
/* param 2 : the base class, if no base class, use the qx trait => 'qx::trait::no_base_class_defined' */
|
||
/* param 3 : the class version used by serialization to provide 'ascendant compatibility' */</span><span class="pre">
|
||
|
||
#endif <span class="comment">// _CLASS_DRUG_H_</span></span></pre>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<br><br>
|
||
<font color="#100D5A"><a name="quick_sample_2">*
|
||
----------------------------------------------------------------------------------------------------<br>
|
||
* 2- <i>drug.cpp</i> file : 'setting function' implementation : <i>void
|
||
qx::register_class()</i><br> *
|
||
----------------------------------------------------------------------------------------------------
|
||
</a></font><br><br>
|
||
<table border="1" bgcolor="#FFFFFF">
|
||
<col>
|
||
<tbody>
|
||
<tr>
|
||
<td title="drug.cpp">
|
||
<pre><span class="pre">#include <span class="string">"precompiled.h"</span> <span class="comment">// Precompiled-header with '#include <QxOrm.h>' and '#include "export.h"'</span>
|
||
#include <span class="string">"drug.h"</span> <span class="comment">// Class definition 'drug'</span>
|
||
#include <span class="string"><QxOrm_Impl.h></span> <span class="comment">// Automatic memory leak detection and boost serialization export macro</span>
|
||
</span>
|
||
QX_REGISTER_CPP_MY_TEST_EXE<span class="operator">(</span>drug<span class="operator">)</span><span class="comment"> // This macro is necessary to register 'drug' class in QxOrm context
|
||
</span><span class="keyword">
|
||
namespace</span> qx<span class="operator"> {</span><span class="keyword">
|
||
template</span><span class="operator"> <></span><span class="type"> void</span> register_class<span class="operator">(</span>QxClass<span class="operator"><</span>drug<span class="operator">> &</span> t<span class="operator">)
|
||
{</span>
|
||
t<span class="operator">.</span>id<span class="operator">(&</span> drug<span class="operator">::</span>id<span class="operator">,</span><span class="string"> "id"</span><span class="operator">);</span><span class="comment"> // Register 'drug::id' <=> primary key in your database
|
||
</span> t<span class="operator">.</span>data<span class="operator">(&</span> drug<span class="operator">::</span>name<span class="operator">,</span><span class="string"> "name"</span><span class="operator">,</span><span class="int"> 1</span><span class="operator">);</span><span class="comment"> // Register 'drug::name' property with key 'name' and version '1'
|
||
</span> t<span class="operator">.</span>data<span class="operator">(&</span> drug<span class="operator">::</span>description<span class="operator">,</span><span class="string"> "desc"</span><span class="operator">);</span><span class="comment"> // Register 'drug::description' property with key 'desc'
|
||
</span><span class="operator">}}</span></pre>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<br>
|
||
<br>
|
||
<font color="#100D5A"><a name="quick_sample_3">*
|
||
-----------------------------------------------------------------------------------------------<br>
|
||
* 3- <i>main.cpp</i> file : basic functionalities of QxOrm library with <i>drug</i> class<br> *
|
||
-----------------------------------------------------------------------------------------------
|
||
</a></font><br><br>
|
||
<table border="1" bgcolor="#FFFFFF">
|
||
<col>
|
||
<tbody>
|
||
<tr>
|
||
<td title="main.cpp">
|
||
<pre><span class="pre">#include <span class="string">"precompiled.h"</span>
|
||
#include <span class="string">"drug.h"</span>
|
||
#include <span class="string"><QxOrm_Impl.h></span>
|
||
</span><span class="type">
|
||
int</span><span class="keyword"> main</span><span class="operator">(</span><span class="type">int</span> argc<span class="operator">,</span><span class="type"> char</span><span class="operator"> *</span> argv<span class="operator">[])
|
||
{</span>
|
||
QApplication app<span class="operator">(</span>argc<span class="operator">,</span> argv<span class="operator">);</span><span class="comment"> // Qt application
|
||
|
||
// Create 3 new drugs
|
||
// It is possible to use 'std' and 'Qt' smart pointer : 'std::shared_ptr', 'QSharedPointer', etc...
|
||
</span><span class="keyword"> typedef</span> std<span class="operator">::</span>shared_ptr<span class="operator"><</span>drug<span class="operator">></span> drug_ptr<span class="operator">;</span>
|
||
drug_ptr d1<span class="operator">;</span> d1<span class="operator">.</span>reset<span class="operator">(</span><span class="keyword">new</span> drug<span class="operator">());</span> d1<span class="operator">-></span>name<span class="operator"> =</span><span class="string"> "name1"</span><span class="operator">;</span> d1<span class="operator">-></span>description<span class="operator"> =</span><span class="string"> "desc1"</span><span class="operator">;</span>
|
||
drug_ptr d2<span class="operator">;</span> d2<span class="operator">.</span>reset<span class="operator">(</span><span class="keyword">new</span> drug<span class="operator">());</span> d2<span class="operator">-></span>name<span class="operator"> =</span><span class="string"> "name2"</span><span class="operator">;</span> d2<span class="operator">-></span>description<span class="operator"> =</span><span class="string"> "desc2"</span><span class="operator">;</span>
|
||
drug_ptr d3<span class="operator">;</span> d3<span class="operator">.</span>reset<span class="operator">(</span><span class="keyword">new</span> drug<span class="operator">());</span> d3<span class="operator">-></span>name<span class="operator"> =</span><span class="string"> "name3"</span><span class="operator">;</span> d3<span class="operator">-></span>description<span class="operator"> =</span><span class="string"> "desc3"</span><span class="operator">;</span><span class="comment">
|
||
|
||
// Insert drugs into container
|
||
// It is possible to use many containers from 'std', 'boost', 'Qt' and 'qx::QxCollection<Key, Value>'
|
||
</span><span class="keyword"> typedef</span> std<span class="operator">::</span>vector<span class="operator"><</span>drug_ptr<span class="operator">></span> type_lst_drug<span class="operator">;</span>
|
||
type_lst_drug lst_drug<span class="operator">;</span>
|
||
lst_drug<span class="operator">.</span>push_back<span class="operator">(</span>d1<span class="operator">);</span>
|
||
lst_drug<span class="operator">.</span>push_back<span class="operator">(</span>d2<span class="operator">);</span>
|
||
lst_drug<span class="operator">.</span>push_back<span class="operator">(</span>d3<span class="operator">);</span><span class="comment">
|
||
|
||
// Init parameters to communicate with a database
|
||
</span> qx<span class="operator">::</span>QxSqlDatabase<span class="operator">::</span>getSingleton<span class="operator">()-></span>setDriverName<span class="operator">(</span><span class="string">"QSQLITE"</span><span class="operator">);</span>
|
||
qx<span class="operator">::</span>QxSqlDatabase<span class="operator">::</span>getSingleton<span class="operator">()-></span>setDatabaseName<span class="operator">(</span><span class="string">"./test_qxorm.db"</span><span class="operator">);</span>
|
||
qx<span class="operator">::</span>QxSqlDatabase<span class="operator">::</span>getSingleton<span class="operator">()-></span>setHostName<span class="operator">(</span><span class="string">"localhost"</span><span class="operator">);</span>
|
||
qx<span class="operator">::</span>QxSqlDatabase<span class="operator">::</span>getSingleton<span class="operator">()-></span>setUserName<span class="operator">(</span><span class="string">"root"</span><span class="operator">);</span>
|
||
qx<span class="operator">::</span>QxSqlDatabase<span class="operator">::</span>getSingleton<span class="operator">()-></span>setPassword<span class="operator">(</span><span class="string">""</span><span class="operator">);</span><span class="comment">
|
||
|
||
// Create table 'drug' into database to store drugs
|
||
</span> QSqlError daoError<span class="operator"> =</span> qx<span class="operator">::</span>dao<span class="operator">::</span>create_table<span class="operator"><</span>drug<span class="operator">>();</span><span class="comment">
|
||
|
||
// Insert drugs from container to database
|
||
// 'id' property of 'd1', 'd2' and 'd3' are auto-updated
|
||
</span> daoError<span class="operator"> =</span> qx<span class="operator">::</span>dao<span class="operator">::</span>insert<span class="operator">(</span>lst_drug<span class="operator">);</span><span class="comment">
|
||
|
||
// Modify and update the second drug into database
|
||
</span> d2<span class="operator">-></span>name<span class="operator"> =</span><span class="string"> "name2 modified"</span><span class="operator">;</span>
|
||
d2<span class="operator">-></span>description<span class="operator"> =</span><span class="string"> "desc2 modified"</span><span class="operator">;</span>
|
||
daoError<span class="operator"> =</span> qx<span class="operator">::</span>dao<span class="operator">::</span>update<span class="operator">(</span>d2<span class="operator">);</span><span class="comment">
|
||
|
||
// Delete the first drug from database
|
||
</span> daoError<span class="operator"> =</span> qx<span class="operator">::</span>dao<span class="operator">::</span>delete_by_id<span class="operator">(</span>d1<span class="operator">);</span><span class="comment">
|
||
|
||
// Count drugs into database
|
||
</span><span class="type"> long</span> lDrugCount<span class="operator"> =</span> qx<span class="operator">::</span>dao<span class="operator">::</span>count<span class="operator"><</span>drug<span class="operator">>();</span><span class="comment">
|
||
|
||
// Fetch drug with id '3' into a new variable
|
||
</span> drug_ptr d_tmp<span class="operator">;</span> d_tmp<span class="operator">.</span>reset<span class="operator">(</span><span class="keyword">new</span> drug<span class="operator">());</span>
|
||
d_tmp<span class="operator">-></span>id<span class="operator"> =</span><span class="int"> 3</span><span class="operator">;</span>
|
||
daoError<span class="operator"> =</span> qx<span class="operator">::</span>dao<span class="operator">::</span>fetch_by_id<span class="operator">(</span>d_tmp<span class="operator">);</span><span class="comment">
|
||
|
||
// Export drugs from container to a file under xml format (serialization)
|
||
</span> qx<span class="operator">::</span>serialization<span class="operator">::</span>xml<span class="operator">::</span>to_file<span class="operator">(</span>lst_drug<span class="operator">,</span><span class="string"> "./export_drugs.xml"</span><span class="operator">);</span><span class="comment">
|
||
|
||
// Import drugs from xml file into a new container
|
||
</span> type_lst_drug lst_drug_tmp<span class="operator">;</span>
|
||
qx<span class="operator">::</span>serialization<span class="operator">::</span>xml<span class="operator">::</span>from_file<span class="operator">(</span>lst_drug_tmp<span class="operator">,</span><span class="string"> "./export_drugs.xml"</span><span class="operator">);</span><span class="comment">
|
||
|
||
// Clone a drug
|
||
</span> drug_ptr d_clone<span class="operator"> =</span> qx<span class="operator">::</span>clone<span class="operator">(*</span> d1<span class="operator">);</span><span class="comment">
|
||
|
||
// Create a new drug by class name (factory)
|
||
</span> qx<span class="operator">::</span>any d_any<span class="operator"> =</span> qx<span class="operator">::</span>create<span class="operator">(</span><span class="string">"drug"</span><span class="operator">);</span><span class="comment">
|
||
|
||
// Insert drugs container into 'qx::cache'
|
||
</span> qx<span class="operator">::</span>cache<span class="operator">::</span>set<span class="operator">(</span><span class="string">"drugs"</span><span class="operator">,</span> lst_drug<span class="operator">);</span><span class="comment">
|
||
|
||
// Remove all elements from 'qx::cache'
|
||
</span> qx<span class="operator">::</span>cache<span class="operator">::</span>clear<span class="operator">();</span><span class="comment">
|
||
|
||
// Create a dummy memory leak
|
||
</span> drug<span class="operator"> *</span> pDummy<span class="operator"> =</span><span class="keyword"> new</span> drug<span class="operator">();</span><span class="flow">
|
||
|
||
return</span><span class="int"> 0</span><span class="operator">;
|
||
}</span></pre>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<br>
|
||
<p>
|
||
<font color="#100D5A"><a name="quick_sample_4">*
|
||
-------------------------------------------------------------------------<br>
|
||
* 4- execute program and trace output debug<br> *
|
||
-------------------------------------------------------------------------
|
||
</a></font><br>
|
||
</p>
|
||
<p></p>
|
||
<font size="2">[QxOrm] qx::QxSqlDatabase : create new database
|
||
connection in thread '3616' with key
|
||
'{d315250c-b5c9-46e0-9402-f800368a6673}'<br>
|
||
[QxOrm] sql query (78 ms) : CREATE TABLE drug (id INTEGER NOT NULL
|
||
PRIMARY KEY AUTOINCREMENT, name TEXT, desc TEXT)<br>
|
||
[QxOrm] sql query (63 ms) : INSERT INTO drug (name, desc) VALUES
|
||
(:name, :desc)<br>
|
||
[QxOrm] sql query (62 ms) : UPDATE drug SET id = :id, name = :name,
|
||
desc = :desc WHERE id = :id_bis<br>
|
||
[QxOrm] sql query (63 ms) : DELETE FROM drug WHERE id = :id<br>
|
||
[QxOrm] sql query (0 ms) : SELECT COUNT(*) FROM drug<br>
|
||
[QxOrm] sql query (0 ms) : SELECT drug.id AS drug_id_0, drug.name AS
|
||
drug_name_0, drug.desc AS drug_desc_0 FROM drug WHERE drug_id_0 =
|
||
:id<br>
|
||
[QxOrm] Leaked object at 0xf52ad8 (size 16, src\main.cpp:74)<br>
|
||
[QxOrm] **** 1 memory leaks found **** </font><br>
|
||
<br>
|
||
<p></p>
|
||
<font color="#100D5A"><a name="quick_sample_5">*
|
||
------------------------------------------------------------------------------<br>
|
||
* 5- <i>./export_drugs.xml</i> file created by the program<br> *
|
||
------------------------------------------------------------------------------</a>
|
||
</font><br>
|
||
<br>
|
||
<a href="./resource/quick_sample.export_drugs.xml.txt"><img alt="quick_sample.export_drugs.xml"
|
||
src="./resource/quick_sample.export_drugs.xml.jpg" width="642" height="452" border="0"></a>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<br>
|
||
<hr style="width: 80%" align="center" size="1" color="#100D5A">
|
||
<table border="0" style="width: 80%" align="center">
|
||
<col>
|
||
<col>
|
||
<col>
|
||
<tbody>
|
||
<tr>
|
||
<td align="left" valign="middle">
|
||
<img alt="QxOrm" src="./resource/logo_qxorm_small.png" width="168" height="40">
|
||
</td>
|
||
<td align="center" valign="middle">
|
||
<font size="2"><EFBFBD> 2011-202XDL Teamty - <a href="mailto:ic-east.com">ic-east.com</a></font>
|
||
</td>
|
||
<td align="right" valign="middle">
|
||
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
|
||
<input type="hidden" name="cmd" value="_s-xclick">
|
||
<input type="hidden" name="hosted_button_id" value="2K4Z58ZYAYJ6S">
|
||
<input type="image" src="./resource/paypal_support_qxorm_library.gif" border="0" name="submit"
|
||
alt="Support QxOrm library - PayPal">
|
||
<img alt="" border="0" src="https://www.paypalobjects.com/fr_FR/i/scr/pixel.gif" width="1" height="1">
|
||
</form>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</body>
|
||
|
||
</html> |