apr-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bo...@apache.org
Subject svn commit: r794511 [19/29] - /apr/site/trunk/docs/docs/apr/trunk/
Date Thu, 16 Jul 2009 03:44:29 GMT
Modified: apr/site/trunk/docs/docs/apr/trunk/group___a_p_r___util___d_b_d.html
URL: http://svn.apache.org/viewvc/apr/site/trunk/docs/docs/apr/trunk/group___a_p_r___util___d_b_d.html?rev=794511&r1=794510&r2=794511&view=diff
==============================================================================
--- apr/site/trunk/docs/docs/apr/trunk/group___a_p_r___util___d_b_d.html (original)
+++ apr/site/trunk/docs/docs/apr/trunk/group___a_p_r___util___d_b_d.html Thu Jul 16 03:44:20 2009
@@ -85,105 +85,69 @@
  }</td></tr>
 
 <tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#g5ac60f67f1f9131b053e3828397752de">APU_DECLARE</a> (<a class="el" href="group__apr__errno.html#gf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a>) apr_dbd_init(<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *pool)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#gf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#g7969f50d38bda792cbef72136300a574">apr_dbd_init</a> (<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *pool)</td></tr>
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#g26e40c606585283e84a7ae6179591889">APU_DECLARE</a> (const char *) apr_dbd_name(const apr_dbd_driver_t *driver)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#gf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#g8ba85faccf7e8eea525812f8f2dfed25">apr_dbd_get_driver</a> (<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *pool, const char *name, const apr_dbd_driver_t **driver)</td></tr>
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#g58996e2d6cea54891bbe055f6b5e9d58">APU_DECLARE</a> (void *) apr_dbd_native_handle(const apr_dbd_driver_t *driver</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#gf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#gbddb1fdcb2f8a5f5b83127485c78e8ae">apr_dbd_open_ex</a> (const apr_dbd_driver_t *driver, <a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *pool, const char *params, apr_dbd_t **handle, const char **error)</td></tr>
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#gc62a2cd2b097528975dfe8b1902dfa32">APU_DECLARE_NONSTD</a> (int) apr_dbd_pvquery(const apr_dbd_driver_t *driver</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#gf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#geff12b01f78ac78721acc4a0a318e673">apr_dbd_open</a> (const apr_dbd_driver_t *driver, <a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *pool, const char *params, apr_dbd_t **handle)</td></tr>
 
-<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gfcd1706c9144e6d6eee6127661ae3be2"></a><!-- doxytag: member="APR_Util_DBD::name" ref="gfcd1706c9144e6d6eee6127661ae3be2" args="" -->
-const char *&nbsp;</td><td class="memItemRight" valign="bottom"><b>name</b></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#gf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#g4abe00d844cd547cc69880fe14af4aca">apr_dbd_close</a> (const apr_dbd_driver_t *driver, apr_dbd_t *handle)</td></tr>
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g13380de2c65258ceb1b4a477f536d0ce"></a><!-- doxytag: member="APR_Util_DBD::driver" ref="g13380de2c65258ceb1b4a477f536d0ce" args="" -->
-const char const <br class="typebreak">
-apr_dbd_driver_t **&nbsp;</td><td class="memItemRight" valign="bottom"><b>driver</b></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#g7a14e0073a36bd97dd82baa5f20e874c">apr_dbd_name</a> (const apr_dbd_driver_t *driver)</td></tr>
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g9069a943190f0778947265895c478883"></a><!-- doxytag: member="APR_Util_DBD::pool" ref="g9069a943190f0778947265895c478883" args="" -->
-<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><b>pool</b></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#gb2a238e15942e66a2b92836c392d5334">apr_dbd_native_handle</a> (const apr_dbd_driver_t *driver, apr_dbd_t *handle)</td></tr>
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g9a8bda9fdcb1d8f1784e4eef621a0ae2"></a><!-- doxytag: member="APR_Util_DBD::params" ref="g9a8bda9fdcb1d8f1784e4eef621a0ae2" args="" -->
-<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> const char *&nbsp;</td><td class="memItemRight" valign="bottom"><b>params</b></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#ge3fca3b3c05f835f9849668a338d82d1">apr_dbd_check_conn</a> (const apr_dbd_driver_t *driver, <a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *pool, apr_dbd_t *handle)</td></tr>
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g68ba22c11aa974c2d027851747c98822"></a><!-- doxytag: member="APR_Util_DBD::handle" ref="g68ba22c11aa974c2d027851747c98822" args="" -->
-<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> const char apr_dbd_t **&nbsp;</td><td class="memItemRight" valign="bottom"><b>handle</b></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#gfecb22f98684f29e579fd73eb58b1e86">apr_dbd_set_dbname</a> (const apr_dbd_driver_t *driver, <a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *pool, apr_dbd_t *handle, const char *name)</td></tr>
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g1c7a35441d749e860588bd9c9b2092d5"></a><!-- doxytag: member="APR_Util_DBD::error" ref="g1c7a35441d749e860588bd9c9b2092d5" args="" -->
-<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> const char <br class="typebreak">
-apr_dbd_t const char **&nbsp;</td><td class="memItemRight" valign="bottom"><b>error</b></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#g1c401df12087d3bf1f15a9b80a8f572d">apr_dbd_transaction_start</a> (const apr_dbd_driver_t *driver, <a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *pool, apr_dbd_t *handle, apr_dbd_transaction_t **trans)</td></tr>
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g135dae7b88ae03090c5a7f638f980f24"></a><!-- doxytag: member="APR_Util_DBD::trans" ref="g135dae7b88ae03090c5a7f638f980f24" args="" -->
-<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> apr_dbd_t <br class="typebreak">
-apr_dbd_transaction_t **&nbsp;</td><td class="memItemRight" valign="bottom"><b>trans</b></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#g6f3a5d6b351cd05646c9399a64eafeb5">apr_dbd_transaction_end</a> (const apr_dbd_driver_t *driver, <a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *pool, apr_dbd_transaction_t *trans)</td></tr>
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g719919dff9b073c668fd47f22f420774"></a><!-- doxytag: member="APR_Util_DBD::mode" ref="g719919dff9b073c668fd47f22f420774" args="" -->
-apr_dbd_transaction_t int&nbsp;</td><td class="memItemRight" valign="bottom"><b>mode</b></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#g2a54cfffc3a348a424002eba937b5853">apr_dbd_transaction_mode_get</a> (const apr_dbd_driver_t *driver, apr_dbd_transaction_t *trans)</td></tr>
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gb2b92eb3b022a090ef84c159253fb635"></a><!-- doxytag: member="APR_Util_DBD::nrows" ref="gb2b92eb3b022a090ef84c159253fb635" args="" -->
-apr_dbd_t int *&nbsp;</td><td class="memItemRight" valign="bottom"><b>nrows</b></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#gb78c0464926311ef64882adfee2f0f42">apr_dbd_transaction_mode_set</a> (const apr_dbd_driver_t *driver, apr_dbd_transaction_t *trans, int mode)</td></tr>
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g4e2545dd013163aa26d4aa994db42fb6"></a><!-- doxytag: member="APR_Util_DBD::statement" ref="g4e2545dd013163aa26d4aa994db42fb6" args="" -->
-apr_dbd_t int const char *&nbsp;</td><td class="memItemRight" valign="bottom"><b>statement</b></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#g40dbb6bb3f3f171f3443d21f3594a66a">apr_dbd_query</a> (const apr_dbd_driver_t *driver, apr_dbd_t *handle, int *nrows, const char *statement)</td></tr>
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g3bb17d78322a086f98b82abd8bb9a8cd"></a><!-- doxytag: member="APR_Util_DBD::res" ref="g3bb17d78322a086f98b82abd8bb9a8cd" args="" -->
-<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> apr_dbd_t <br class="typebreak">
-apr_dbd_results_t **&nbsp;</td><td class="memItemRight" valign="bottom"><b>res</b></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#g144d354a36140fade933c1ef72661004">apr_dbd_select</a> (const apr_dbd_driver_t *driver, <a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *pool, apr_dbd_t *handle, apr_dbd_results_t **res, const char *statement, int random)</td></tr>
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gc93942ec5efab7a3d75b75e70c8c7a94"></a><!-- doxytag: member="APR_Util_DBD::random" ref="gc93942ec5efab7a3d75b75e70c8c7a94" args="" -->
-<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> apr_dbd_t <br class="typebreak">
-apr_dbd_results_t const char <br class="typebreak">
-int&nbsp;</td><td class="memItemRight" valign="bottom"><b>random</b></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#g77d1bccedee2c61dc96de6852f3a7cc4">apr_dbd_num_cols</a> (const apr_dbd_driver_t *driver, apr_dbd_results_t *res)</td></tr>
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g98834f9ea71a411bba8858886c6454ed"></a><!-- doxytag: member="APR_Util_DBD::row" ref="g98834f9ea71a411bba8858886c6454ed" args="" -->
-<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> apr_dbd_results_t <br class="typebreak">
-apr_dbd_row_t **&nbsp;</td><td class="memItemRight" valign="bottom"><b>row</b></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#g2c9f511aba325f8904e69158eacd3987">apr_dbd_num_tuples</a> (const apr_dbd_driver_t *driver, apr_dbd_results_t *res)</td></tr>
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g75c9df9c4ef67392d3f04dd674382bce"></a><!-- doxytag: member="APR_Util_DBD::rownum" ref="g75c9df9c4ef67392d3f04dd674382bce" args="" -->
-<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> apr_dbd_results_t <br class="typebreak">
-apr_dbd_row_t int&nbsp;</td><td class="memItemRight" valign="bottom"><b>rownum</b></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#gd4cdc5f4e8981b93f5a467a8c8a768f1">apr_dbd_get_row</a> (const apr_dbd_driver_t *driver, <a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *pool, apr_dbd_results_t *res, apr_dbd_row_t **row, int rownum)</td></tr>
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ge2d80c10d5136f660b76beaf704934f5"></a><!-- doxytag: member="APR_Util_DBD::col" ref="ge2d80c10d5136f660b76beaf704934f5" args="" -->
-apr_dbd_row_t int&nbsp;</td><td class="memItemRight" valign="bottom"><b>col</b></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#g1d6d3b38a0d677e3d65501074832a5b8">apr_dbd_get_entry</a> (const apr_dbd_driver_t *driver, apr_dbd_row_t *row, int col)</td></tr>
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g705b7ca7fb0a9700b61ad996d694a778"></a><!-- doxytag: member="APR_Util_DBD::errnum" ref="g705b7ca7fb0a9700b61ad996d694a778" args="" -->
-apr_dbd_t int&nbsp;</td><td class="memItemRight" valign="bottom"><b>errnum</b></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#g8eac8897bd1211564166b08492f458d7">apr_dbd_get_name</a> (const apr_dbd_driver_t *driver, apr_dbd_results_t *res, int col)</td></tr>
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g7793f069712367d96ac8021492fba941"></a><!-- doxytag: member="APR_Util_DBD::string" ref="g7793f069712367d96ac8021492fba941" args="" -->
-<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> const char *&nbsp;</td><td class="memItemRight" valign="bottom"><b>string</b></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#gffa947c657862c2996707da339482287">apr_dbd_error</a> (const apr_dbd_driver_t *driver, apr_dbd_t *handle, int errnum)</td></tr>
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g1086b66aba6ed16e6853a4cef784f8f6"></a><!-- doxytag: member="APR_Util_DBD::query" ref="g1086b66aba6ed16e6853a4cef784f8f6" args="" -->
-<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> apr_dbd_t const char *&nbsp;</td><td class="memItemRight" valign="bottom"><b>query</b></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#gb5806cd6535aaeafe8e9f79ef2cc90c9">apr_dbd_escape</a> (const apr_dbd_driver_t *driver, <a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *pool, const char *string, apr_dbd_t *handle)</td></tr>
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g3b25265345988aead1789676cc374ba1"></a><!-- doxytag: member="APR_Util_DBD::label" ref="g3b25265345988aead1789676cc374ba1" args="" -->
-<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> apr_dbd_t const <br class="typebreak">
-char const char *&nbsp;</td><td class="memItemRight" valign="bottom"><b>label</b></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#gcf21412447c4357c64d1e9200a0f5eec">apr_dbd_prepare</a> (const apr_dbd_driver_t *driver, <a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *pool, apr_dbd_t *handle, const char *query, const char *label, apr_dbd_prepared_t **statement)</td></tr>
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g7b9eedb8b5923d616c292903065439f6"></a><!-- doxytag: member="APR_Util_DBD::nargs" ref="g7b9eedb8b5923d616c292903065439f6" args="" -->
-<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> apr_dbd_t int <br class="typebreak">
-apr_dbd_prepared_t int&nbsp;</td><td class="memItemRight" valign="bottom"><b>nargs</b></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#g1c4b005abda896011ca414679edfe112">apr_dbd_pquery</a> (const apr_dbd_driver_t *driver, <a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *pool, apr_dbd_t *handle, int *nrows, apr_dbd_prepared_t *statement, int nargs, const char **args)</td></tr>
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ga72bdc340ae9df68cd6f4afa28f1fd81"></a><!-- doxytag: member="APR_Util_DBD::args" ref="ga72bdc340ae9df68cd6f4afa28f1fd81" args="" -->
-<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> apr_dbd_t int <br class="typebreak">
-apr_dbd_prepared_t int const <br class="typebreak">
-char **&nbsp;</td><td class="memItemRight" valign="bottom"><b>args</b></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#g9f9ee377c2d335f8f1a9bffe4bf7194f">apr_dbd_pselect</a> (const apr_dbd_driver_t *driver, <a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *pool, apr_dbd_t *handle, apr_dbd_results_t **res, apr_dbd_prepared_t *statement, int random, int nargs, const char **args)</td></tr>
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g2b76f7cb738a5dc6077174fa03ab42f5"></a><!-- doxytag: member="APR_Util_DBD::type" ref="g2b76f7cb738a5dc6077174fa03ab42f5" args="" -->
-<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> apr_dbd_t int <br class="typebreak">
-apr_dbd_prepared_t <a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> <br class="typebreak">
-apr_dbd_t apr_dbd_results_t <br class="typebreak">
-apr_dbd_prepared_t int <br class="typebreak">
-apr_dbd_row_t int <br class="typebreak">
-<a class="el" href="group___a_p_r___util___d_b_d.html#g19608fa5d518a5121bee23daacc5c230">apr_dbd_type_e</a>&nbsp;</td><td class="memItemRight" valign="bottom"><b>type</b></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#g52ad74205d0afa92098e546303b9ee4c">apr_dbd_pvquery</a> (const apr_dbd_driver_t *driver, <a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *pool, apr_dbd_t *handle, int *nrows, apr_dbd_prepared_t *statement,...)</td></tr>
 
-<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g06de830a0219765bcda49e9ecfee4a09"></a><!-- doxytag: member="APR_Util_DBD::data" ref="g06de830a0219765bcda49e9ecfee4a09" args="" -->
-<a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> apr_dbd_t int <br class="typebreak">
-apr_dbd_prepared_t <a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> <br class="typebreak">
-apr_dbd_t apr_dbd_results_t <br class="typebreak">
-apr_dbd_prepared_t int <br class="typebreak">
-apr_dbd_row_t int <br class="typebreak">
-<a class="el" href="group___a_p_r___util___d_b_d.html#g19608fa5d518a5121bee23daacc5c230">apr_dbd_type_e</a> void *&nbsp;</td><td class="memItemRight" valign="bottom"><b>data</b></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#gfbd4dbbddfa76586f172ec0832d4fd37">apr_dbd_pvselect</a> (const apr_dbd_driver_t *driver, <a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *pool, apr_dbd_t *handle, apr_dbd_results_t **res, apr_dbd_prepared_t *statement, int random,...)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#g7933396b01b4676ae2835d1f09d9a1be">apr_dbd_pbquery</a> (const apr_dbd_driver_t *driver, <a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *pool, apr_dbd_t *handle, int *nrows, apr_dbd_prepared_t *statement, const void **args)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#g19b88ed11097a2d07bef1e31619fff0a">apr_dbd_pbselect</a> (const apr_dbd_driver_t *driver, <a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *pool, apr_dbd_t *handle, apr_dbd_results_t **res, apr_dbd_prepared_t *statement, int random, const void **args)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#g27d1ca34ce4064bb14ac3cb315ba8d14">apr_dbd_pvbquery</a> (const apr_dbd_driver_t *driver, <a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *pool, apr_dbd_t *handle, int *nrows, apr_dbd_prepared_t *statement,...)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#gcfe85d56d78d5e4767684238287b700b">apr_dbd_pvbselect</a> (const apr_dbd_driver_t *driver, <a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *pool, apr_dbd_t *handle, apr_dbd_results_t **res, apr_dbd_prepared_t *statement, int random,...)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#gf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___a_p_r___util___d_b_d.html#g67e57ef4eb7952df79ceaa6e92767d41">apr_dbd_datum_get</a> (const apr_dbd_driver_t *driver, apr_dbd_row_t *row, int col, <a class="el" href="group___a_p_r___util___d_b_d.html#g19608fa5d518a5121bee23daacc5c230">apr_dbd_type_e</a> type, void *data)</td></tr>
 
 </table>
 <hr><h2>Define Documentation</h2>
@@ -299,76 +263,177 @@
 </div>
 </div><p>
 <hr><h2>Function Documentation</h2>
-<a class="anchor" name="g58996e2d6cea54891bbe055f6b5e9d58"></a><!-- doxytag: member="apr_dbd.h::APU_DECLARE" ref="g58996e2d6cea54891bbe055f6b5e9d58" args="(void *) apr_dbd_native_handle(const apr_dbd_driver_t *driver" -->
+<a class="anchor" name="ge3fca3b3c05f835f9849668a338d82d1"></a><!-- doxytag: member="apr_dbd.h::apr_dbd_check_conn" ref="ge3fca3b3c05f835f9849668a338d82d1" args="(const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">APU_DECLARE           </td>
+          <td class="memname">int apr_dbd_check_conn           </td>
           <td>(</td>
-          <td class="paramtype">void *&nbsp;</td>
-          <td class="paramname">          </td>
-          <td>&nbsp;)&nbsp;</td>
-          <td> const</td>
+          <td class="paramtype">const apr_dbd_driver_t *&nbsp;</td>
+          <td class="paramname"> <em>driver</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>pool</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">apr_dbd_t *&nbsp;</td>
+          <td class="paramname"> <em>handle</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
 <p>
-apr_dbd_native_handle: get native database handle of the underlying db<p>
+check_conn: check status of a database connection<p>
 <dl compact><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>driver</em>&nbsp;</td><td>- the driver </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- apr_dbd handle </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>- working pool </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- the connection to check </td></tr>
   </table>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>- native handle </dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS or error </dd></dl>
 
 </div>
 </div><p>
-<a class="anchor" name="g26e40c606585283e84a7ae6179591889"></a><!-- doxytag: member="apr_dbd.h::APU_DECLARE" ref="g26e40c606585283e84a7ae6179591889" args="(const char *) apr_dbd_name(const apr_dbd_driver_t *driver)" -->
+<a class="anchor" name="g4abe00d844cd547cc69880fe14af4aca"></a><!-- doxytag: member="apr_dbd.h::apr_dbd_close" ref="g4abe00d844cd547cc69880fe14af4aca" args="(const apr_dbd_driver_t *driver, apr_dbd_t *handle)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">APU_DECLARE           </td>
+          <td class="memname"><a class="el" href="group__apr__errno.html#gf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_dbd_close           </td>
           <td>(</td>
-          <td class="paramtype">const char *&nbsp;</td>
-          <td class="paramname">          </td>
-          <td>&nbsp;)&nbsp;</td>
-          <td> const</td>
+          <td class="paramtype">const apr_dbd_driver_t *&nbsp;</td>
+          <td class="paramname"> <em>driver</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">apr_dbd_t *&nbsp;</td>
+          <td class="paramname"> <em>handle</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
 <p>
-apr_dbd_name: get the name of the driver<p>
+apr_dbd_close: close a connection to a backend<p>
 <dl compact><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>driver</em>&nbsp;</td><td>- the driver </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- handle to close </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>driver</em>&nbsp;</td><td>- driver struct. </td></tr>
   </table>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>- name</dd></dl>
-apr_dbd_get_entry: get an entry from a row<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS for success or error status </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g67e57ef4eb7952df79ceaa6e92767d41"></a><!-- doxytag: member="apr_dbd.h::apr_dbd_datum_get" ref="g67e57ef4eb7952df79ceaa6e92767d41" args="(const apr_dbd_driver_t *driver, apr_dbd_row_t *row, int col, apr_dbd_type_e type, void *data)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__apr__errno.html#gf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_dbd_datum_get           </td>
+          <td>(</td>
+          <td class="paramtype">const apr_dbd_driver_t *&nbsp;</td>
+          <td class="paramname"> <em>driver</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">apr_dbd_row_t *&nbsp;</td>
+          <td class="paramname"> <em>row</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>col</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group___a_p_r___util___d_b_d.html#g19608fa5d518a5121bee23daacc5c230">apr_dbd_type_e</a>&nbsp;</td>
+          <td class="paramname"> <em>type</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void *&nbsp;</td>
+          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+apr_dbd_datum_get: get a binary entry from a row<p>
 <dl compact><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>driver</em>&nbsp;</td><td>- the driver </td></tr>
     <tr><td valign="top"></td><td valign="top"><em>row</em>&nbsp;</td><td>- row pointer </td></tr>
     <tr><td valign="top"></td><td valign="top"><em>col</em>&nbsp;</td><td>- entry number </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>- type of data to get </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>- pointer to data, allocated by the caller </td></tr>
   </table>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>value from the row, or NULL if col is out of bounds.</dd></dl>
-apr_dbd_get_name: get an entry name from a result set<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>driver</em>&nbsp;</td><td>- the driver </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>res</em>&nbsp;</td><td>- result set pointer </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>col</em>&nbsp;</td><td>- entry number </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>name of the entry, or NULL if col is out of bounds.</dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS on success, APR_ENOENT if data is NULL or APR_EGENERAL </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gffa947c657862c2996707da339482287"></a><!-- doxytag: member="apr_dbd.h::apr_dbd_error" ref="gffa947c657862c2996707da339482287" args="(const apr_dbd_driver_t *driver, apr_dbd_t *handle, int errnum)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* apr_dbd_error           </td>
+          <td>(</td>
+          <td class="paramtype">const apr_dbd_driver_t *&nbsp;</td>
+          <td class="paramname"> <em>driver</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">apr_dbd_t *&nbsp;</td>
+          <td class="paramname"> <em>handle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>errnum</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
 apr_dbd_error: get current error message (if any)<p>
 <dl compact><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
@@ -377,7 +442,48 @@
     <tr><td valign="top"></td><td valign="top"><em>errnum</em>&nbsp;</td><td>- error code from operation that returned an error </td></tr>
   </table>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>the database current error message, or message for errnum (implementation-dependent whether errnum is ignored)</dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the database current error message, or message for errnum (implementation-dependent whether errnum is ignored) </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb5806cd6535aaeafe8e9f79ef2cc90c9"></a><!-- doxytag: member="apr_dbd.h::apr_dbd_escape" ref="gb5806cd6535aaeafe8e9f79ef2cc90c9" args="(const apr_dbd_driver_t *driver, apr_pool_t *pool, const char *string, apr_dbd_t *handle)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* apr_dbd_escape           </td>
+          <td>(</td>
+          <td class="paramtype">const apr_dbd_driver_t *&nbsp;</td>
+          <td class="paramname"> <em>driver</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>pool</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>string</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">apr_dbd_t *&nbsp;</td>
+          <td class="paramname"> <em>handle</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
 apr_dbd_escape: escape a string so it is safe for use in query/select<p>
 <dl compact><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
@@ -387,50 +493,42 @@
     <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- the connection </td></tr>
   </table>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>the escaped, safe string</dd></dl>
-quote an XML string Replace '&lt;', '&gt;', and '&amp;' with '&lt;', '&gt;', and '&amp;'. <dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>The pool to allocate out of </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>s</em>&nbsp;</td><td>The string to quote </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>quotes</em>&nbsp;</td><td>If quotes is true, then replace '"' with '"'. </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>The quoted string </dd></dl>
-<dl class="note" compact><dt><b>Note:</b></dt><dd>If the string does not contain special characters, it is not duplicated into the pool and the original string is returned.</dd></dl>
-Search for a precompiled pattern within a string <dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>pattern</em>&nbsp;</td><td>The pattern </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>s</em>&nbsp;</td><td>The string in which to search for the pattern </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>slen</em>&nbsp;</td><td>The length of s (excluding null terminator) </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>A pointer to the first instance of the pattern in s, or NULL if not found </dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>the escaped, safe string </dd></dl>
 
 </div>
 </div><p>
-<a class="anchor" name="g5ac60f67f1f9131b053e3828397752de"></a><!-- doxytag: member="apr_dbd.h::APU_DECLARE" ref="g5ac60f67f1f9131b053e3828397752de" args="(apr_status_t) apr_dbd_init(apr_pool_t *pool)" -->
+<a class="anchor" name="g8ba85faccf7e8eea525812f8f2dfed25"></a><!-- doxytag: member="apr_dbd.h::apr_dbd_get_driver" ref="g8ba85faccf7e8eea525812f8f2dfed25" args="(apr_pool_t *pool, const char *name, const apr_dbd_driver_t **driver)" -->
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">APU_DECLARE           </td>
+          <td class="memname"><a class="el" href="group__apr__errno.html#gf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_dbd_get_driver           </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="group__apr__errno.html#gf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a>&nbsp;</td>
-          <td class="paramname">          </td>
-          <td>&nbsp;)&nbsp;</td>
+          <td class="paramtype"><a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>pool</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>name</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const apr_dbd_driver_t **&nbsp;</td>
+          <td class="paramname"> <em>driver</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
           <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
         </tr>
       </table>
 </div>
 <div class="memdoc">
 
 <p>
-apr_dbd_init: perform once-only initialisation. Call once only.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>- pool to register any shutdown cleanups, etc</td></tr>
-  </table>
-</dl>
 apr_dbd_get_driver: get the driver struct for a name<p>
 <dl compact><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
@@ -442,123 +540,272 @@
 <dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS for success <p>
 APR_ENOTIMPL for no driver (when DSO not enabled) <p>
 APR_EDSOOPEN if DSO driver file can't be opened <p>
-APR_ESYMNOTFOUND if the driver file doesn't contain a driver</dd></dl>
-apr_dbd_open_ex: open a connection to a backend<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>- working pool </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>params</em>&nbsp;</td><td>- arguments to driver (implementation-dependent) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- pointer to handle to return </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>driver</em>&nbsp;</td><td>- driver struct. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>error</em>&nbsp;</td><td>- descriptive error. </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS for success <p>
-APR_EGENERAL if driver exists but connection failed </dd></dl>
-<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>PostgreSQL: the params is passed directly to the PQconnectdb() function (check PostgreSQL documentation for more details on the syntax). <p>
-SQLite2: the params is split on a colon, with the first part used as the filename and second part converted to an integer and used as file mode. <p>
-SQLite3: the params is passed directly to the sqlite3_open() function as a filename to be opened (check SQLite3 documentation for more details). <p>
-Oracle: the params can have "user", "pass", "dbname" and "server" keys, each followed by an equal sign and a value. Such key/value pairs can be delimited by space, CR, LF, tab, semicolon, vertical bar or comma. <p>
-MySQL: the params can have "host", "port", "user", "pass", "dbname", "sock", "flags" "fldsz", "group" and "reconnect" keys, each followed by an equal sign and a value. Such key/value pairs can be delimited by space, CR, LF, tab, semicolon, vertical bar or comma. For now, "flags" can only recognise CLIENT_FOUND_ROWS (check MySQL manual for details). The value associated with "fldsz" determines maximum amount of memory (in bytes) for each of the fields in the result set of prepared statements. By default, this value is 1 MB. The value associated with "group" determines which group from configuration file to use (see MYSQL_READ_DEFAULT_GROUP option of mysql_options() in MySQL manual). Reconnect is set to 1 by default (i.e. true). <p>
-FreeTDS: the params can have "username", "password", "appname", "dbname", "host", "charset", "lang" and "server" keys, each followed by an equal sign and a value.</dd></dl>
-apr_dbd_open: open a connection to a backend<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>- working pool </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>params</em>&nbsp;</td><td>- arguments to driver (implementation-dependent) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- pointer to handle to return </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>driver</em>&nbsp;</td><td>- driver struct. </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS for success <p>
-APR_EGENERAL if driver exists but connection failed </dd></dl>
-<dl class="see" compact><dt><b>See also:</b></dt><dd>apr_dbd_open_ex</dd></dl>
-apr_dbd_close: close a connection to a backend<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- handle to close </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>driver</em>&nbsp;</td><td>- driver struct. </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS for success or error status</dd></dl>
-check_conn: check status of a database connection<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>driver</em>&nbsp;</td><td>- the driver </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>- working pool </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- the connection to check </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS or error</dd></dl>
-apr_dbd_set_dbname: select database name. May be a no-op if not supported.<p>
+APR_ESYMNOTFOUND if the driver file doesn't contain a driver </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g1d6d3b38a0d677e3d65501074832a5b8"></a><!-- doxytag: member="apr_dbd.h::apr_dbd_get_entry" ref="g1d6d3b38a0d677e3d65501074832a5b8" args="(const apr_dbd_driver_t *driver, apr_dbd_row_t *row, int col)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* apr_dbd_get_entry           </td>
+          <td>(</td>
+          <td class="paramtype">const apr_dbd_driver_t *&nbsp;</td>
+          <td class="paramname"> <em>driver</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">apr_dbd_row_t *&nbsp;</td>
+          <td class="paramname"> <em>row</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>col</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+apr_dbd_get_entry: get an entry from a row<p>
 <dl compact><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>driver</em>&nbsp;</td><td>- the driver </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>- working pool </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- the connection </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>- the database to select </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>row</em>&nbsp;</td><td>- row pointer </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>col</em>&nbsp;</td><td>- entry number </td></tr>
   </table>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success or error code</dd></dl>
-apr_dbd_transaction_start: start a transaction. May be a no-op.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>value from the row, or NULL if col is out of bounds. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g8eac8897bd1211564166b08492f458d7"></a><!-- doxytag: member="apr_dbd.h::apr_dbd_get_name" ref="g8eac8897bd1211564166b08492f458d7" args="(const apr_dbd_driver_t *driver, apr_dbd_results_t *res, int col)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* apr_dbd_get_name           </td>
+          <td>(</td>
+          <td class="paramtype">const apr_dbd_driver_t *&nbsp;</td>
+          <td class="paramname"> <em>driver</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">apr_dbd_results_t *&nbsp;</td>
+          <td class="paramname"> <em>res</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>col</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+apr_dbd_get_name: get an entry name from a result set<p>
 <dl compact><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>driver</em>&nbsp;</td><td>- the driver </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>- a pool to use for error messages (if any). </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- the db connection </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>trans</em>&nbsp;</td><td>- ptr to a transaction. May be null on entry </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>res</em>&nbsp;</td><td>- result set pointer </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>col</em>&nbsp;</td><td>- entry number </td></tr>
   </table>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success or error code </dd></dl>
-<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>Note that transaction modes, set by calling apr_dbd_transaction_mode_set(), will affect all query/select calls within a transaction. By default, any error in query/select during a transaction will cause the transaction to inherit the error code and any further query/select calls will fail immediately. Put transaction in "ignore errors" mode to avoid that. Use "rollback" mode to do explicit rollback.</dd></dl>
-apr_dbd_transaction_end: end a transaction (commit on success, rollback on error). May be a no-op.<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>driver</em>&nbsp;</td><td>- the driver </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- the db connection </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>trans</em>&nbsp;</td><td>- the transaction. </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success or error code</dd></dl>
-apr_dbd_transaction_mode_get: get the mode of transaction<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>name of the entry, or NULL if col is out of bounds. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gd4cdc5f4e8981b93f5a467a8c8a768f1"></a><!-- doxytag: member="apr_dbd.h::apr_dbd_get_row" ref="gd4cdc5f4e8981b93f5a467a8c8a768f1" args="(const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_results_t *res, apr_dbd_row_t **row, int rownum)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int apr_dbd_get_row           </td>
+          <td>(</td>
+          <td class="paramtype">const apr_dbd_driver_t *&nbsp;</td>
+          <td class="paramname"> <em>driver</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>pool</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">apr_dbd_results_t *&nbsp;</td>
+          <td class="paramname"> <em>res</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">apr_dbd_row_t **&nbsp;</td>
+          <td class="paramname"> <em>row</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>rownum</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+apr_dbd_get_row: get a row from a result set<p>
 <dl compact><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>driver</em>&nbsp;</td><td>- the driver </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>trans</em>&nbsp;</td><td>- the transaction </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>- pool to allocate the row </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>res</em>&nbsp;</td><td>- result set pointer </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>row</em>&nbsp;</td><td>- pointer to row pointer. May point to NULL on entry </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>rownum</em>&nbsp;</td><td>- row number (counting from 1), or -1 for "next row". Ignored if random access is not supported. </td></tr>
   </table>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>mode of transaction</dd></dl>
-apr_dbd_transaction_mode_set: set the mode of transaction<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success, -1 for rownum out of range or data finished </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g7969f50d38bda792cbef72136300a574"></a><!-- doxytag: member="apr_dbd.h::apr_dbd_init" ref="g7969f50d38bda792cbef72136300a574" args="(apr_pool_t *pool)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__apr__errno.html#gf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_dbd_init           </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>pool</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+apr_dbd_init: perform once-only initialisation. Call once only.<p>
 <dl compact><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>driver</em>&nbsp;</td><td>- the driver </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>trans</em>&nbsp;</td><td>- the transaction </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>mode</em>&nbsp;</td><td>- new mode of the transaction </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>- pool to register any shutdown cleanups, etc </td></tr>
   </table>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>the mode of transaction in force after the call</dd></dl>
-apr_dbd_query: execute an SQL query that doesn't return a result set<p>
+
+</div>
+</div><p>
+<a class="anchor" name="g7a14e0073a36bd97dd82baa5f20e874c"></a><!-- doxytag: member="apr_dbd.h::apr_dbd_name" ref="g7a14e0073a36bd97dd82baa5f20e874c" args="(const apr_dbd_driver_t *driver)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* apr_dbd_name           </td>
+          <td>(</td>
+          <td class="paramtype">const apr_dbd_driver_t *&nbsp;</td>
+          <td class="paramname"> <em>driver</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+apr_dbd_name: get the name of the driver<p>
 <dl compact><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>driver</em>&nbsp;</td><td>- the driver </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- the connection </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>nrows</em>&nbsp;</td><td>- number of rows affected. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>statement</em>&nbsp;</td><td>- the SQL statement to execute </td></tr>
   </table>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success or error code</dd></dl>
-apr_dbd_select: execute an SQL query that returns a result set<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>- name </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gb2a238e15942e66a2b92836c392d5334"></a><!-- doxytag: member="apr_dbd.h::apr_dbd_native_handle" ref="gb2a238e15942e66a2b92836c392d5334" args="(const apr_dbd_driver_t *driver, apr_dbd_t *handle)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void* apr_dbd_native_handle           </td>
+          <td>(</td>
+          <td class="paramtype">const apr_dbd_driver_t *&nbsp;</td>
+          <td class="paramname"> <em>driver</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">apr_dbd_t *&nbsp;</td>
+          <td class="paramname"> <em>handle</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+apr_dbd_native_handle: get native database handle of the underlying db<p>
 <dl compact><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>driver</em>&nbsp;</td><td>- the driver </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>- pool to allocate the result set </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- the connection </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>res</em>&nbsp;</td><td>- pointer to result set pointer. May point to NULL on entry </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>statement</em>&nbsp;</td><td>- the SQL statement to execute </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>random</em>&nbsp;</td><td>- 1 to support random access to results (seek any row); 0 to support only looping through results in order (async access - faster) </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- apr_dbd handle </td></tr>
   </table>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success or error code</dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>- native handle </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g77d1bccedee2c61dc96de6852f3a7cc4"></a><!-- doxytag: member="apr_dbd.h::apr_dbd_num_cols" ref="g77d1bccedee2c61dc96de6852f3a7cc4" args="(const apr_dbd_driver_t *driver, apr_dbd_results_t *res)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int apr_dbd_num_cols           </td>
+          <td>(</td>
+          <td class="paramtype">const apr_dbd_driver_t *&nbsp;</td>
+          <td class="paramname"> <em>driver</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">apr_dbd_results_t *&nbsp;</td>
+          <td class="paramname"> <em>res</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
 apr_dbd_num_cols: get the number of columns in a results set<p>
 <dl compact><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
@@ -566,7 +813,36 @@
     <tr><td valign="top"></td><td valign="top"><em>res</em>&nbsp;</td><td>- result set. </td></tr>
   </table>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>number of columns</dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>number of columns </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g2c9f511aba325f8904e69158eacd3987"></a><!-- doxytag: member="apr_dbd.h::apr_dbd_num_tuples" ref="g2c9f511aba325f8904e69158eacd3987" args="(const apr_dbd_driver_t *driver, apr_dbd_results_t *res)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int apr_dbd_num_tuples           </td>
+          <td>(</td>
+          <td class="paramtype">const apr_dbd_driver_t *&nbsp;</td>
+          <td class="paramname"> <em>driver</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">apr_dbd_results_t *&nbsp;</td>
+          <td class="paramname"> <em>res</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
 apr_dbd_num_tuples: get the number of rows in a results set of a synchronous select<p>
 <dl compact><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
@@ -574,59 +850,178 @@
     <tr><td valign="top"></td><td valign="top"><em>res</em>&nbsp;</td><td>- result set. </td></tr>
   </table>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>number of rows, or -1 if the results are asynchronous</dd></dl>
-apr_dbd_get_row: get a row from a result set<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>driver</em>&nbsp;</td><td>- the driver </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>- pool to allocate the row </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>res</em>&nbsp;</td><td>- result set pointer </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>row</em>&nbsp;</td><td>- pointer to row pointer. May point to NULL on entry </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>rownum</em>&nbsp;</td><td>- row number (counting from 1), or -1 for "next row". Ignored if random access is not supported. </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success, -1 for rownum out of range or data finished</dd></dl>
-apr_dbd_prepare: prepare a statement<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>number of rows, or -1 if the results are asynchronous </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="geff12b01f78ac78721acc4a0a318e673"></a><!-- doxytag: member="apr_dbd.h::apr_dbd_open" ref="geff12b01f78ac78721acc4a0a318e673" args="(const apr_dbd_driver_t *driver, apr_pool_t *pool, const char *params, apr_dbd_t **handle)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__apr__errno.html#gf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_dbd_open           </td>
+          <td>(</td>
+          <td class="paramtype">const apr_dbd_driver_t *&nbsp;</td>
+          <td class="paramname"> <em>driver</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>pool</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>params</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">apr_dbd_t **&nbsp;</td>
+          <td class="paramname"> <em>handle</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+apr_dbd_open: open a connection to a backend<p>
 <dl compact><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>driver</em>&nbsp;</td><td>- the driver </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>- pool to alloc the result from </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- the connection </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>query</em>&nbsp;</td><td>- the SQL query </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>label</em>&nbsp;</td><td>- A label for the prepared statement. use NULL for temporary prepared statements (eg within a Request in httpd) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>statement</em>&nbsp;</td><td>- statement to prepare. May point to null on entry. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>- working pool </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>params</em>&nbsp;</td><td>- arguments to driver (implementation-dependent) </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- pointer to handle to return </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>driver</em>&nbsp;</td><td>- driver struct. </td></tr>
   </table>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success or error code </dd></dl>
-<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>To specify parameters of the prepared query, use %s, %d etc. (see below for full list) in place of database specific parameter syntax (e.g. for PostgreSQL, this would be $1, $2, for SQLite3 this would be ? etc.). For instance: "SELECT name FROM customers WHERE name=%s" would be a query that this function understands. <p>
-Here is the full list of format specifiers that this function understands and what they map to in SQL: %hhd (TINY INT), %hhu (UNSIGNED TINY INT), %hd (SHORT), %hu (UNSIGNED SHORT), %d (INT), %u (UNSIGNED INT), %ld (LONG), %lu (UNSIGNED LONG), %lld (LONG LONG), %llu (UNSIGNED LONG LONG), %f (FLOAT, REAL), %lf (DOUBLE PRECISION), %s (VARCHAR), %pDt (TEXT), %pDi (TIME), %pDd (DATE), %pDa (DATETIME), %pDs (TIMESTAMP), %pDz (TIMESTAMP WITH TIME ZONE), %pDb (BLOB), %pDc (CLOB) and %pDn (NULL). Not all databases have support for all these types, so the underlying driver will attempt the "best match" where possible. A % followed by any letter not in the above list will be interpreted as VARCHAR (i.e. %s).</dd></dl>
-apr_dbd_pquery: query using a prepared statement + args<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS for success <p>
+APR_EGENERAL if driver exists but connection failed </dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="group___a_p_r___util___d_b_d.html#gbddb1fdcb2f8a5f5b83127485c78e8ae">apr_dbd_open_ex</a> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gbddb1fdcb2f8a5f5b83127485c78e8ae"></a><!-- doxytag: member="apr_dbd.h::apr_dbd_open_ex" ref="gbddb1fdcb2f8a5f5b83127485c78e8ae" args="(const apr_dbd_driver_t *driver, apr_pool_t *pool, const char *params, apr_dbd_t **handle, const char **error)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__apr__errno.html#gf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apr_dbd_open_ex           </td>
+          <td>(</td>
+          <td class="paramtype">const apr_dbd_driver_t *&nbsp;</td>
+          <td class="paramname"> <em>driver</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>pool</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>params</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">apr_dbd_t **&nbsp;</td>
+          <td class="paramname"> <em>handle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char **&nbsp;</td>
+          <td class="paramname"> <em>error</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+apr_dbd_open_ex: open a connection to a backend<p>
 <dl compact><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>driver</em>&nbsp;</td><td>- the driver </td></tr>
     <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>- working pool </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- the connection </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>nrows</em>&nbsp;</td><td>- number of rows affected. </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>statement</em>&nbsp;</td><td>- the prepared statement to execute </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>nargs</em>&nbsp;</td><td>- ignored (for backward compatibility only) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>args</em>&nbsp;</td><td>- args to prepared statement </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>params</em>&nbsp;</td><td>- arguments to driver (implementation-dependent) </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- pointer to handle to return </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>driver</em>&nbsp;</td><td>- driver struct. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>error</em>&nbsp;</td><td>- descriptive error. </td></tr>
   </table>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success or error code</dd></dl>
-apr_dbd_pselect: select using a prepared statement + args<p>
-<dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>driver</em>&nbsp;</td><td>- the driver </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>- working pool </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- the connection </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>res</em>&nbsp;</td><td>- pointer to query results. May point to NULL on entry </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>statement</em>&nbsp;</td><td>- the prepared statement to execute </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>random</em>&nbsp;</td><td>- Whether to support random-access to results </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>nargs</em>&nbsp;</td><td>- ignored (for backward compatibility only) </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>args</em>&nbsp;</td><td>- args to prepared statement </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success or error code</dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS for success <p>
+APR_EGENERAL if driver exists but connection failed </dd></dl>
+<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>PostgreSQL: the params is passed directly to the PQconnectdb() function (check PostgreSQL documentation for more details on the syntax). <p>
+SQLite2: the params is split on a colon, with the first part used as the filename and second part converted to an integer and used as file mode. <p>
+SQLite3: the params is passed directly to the sqlite3_open() function as a filename to be opened (check SQLite3 documentation for more details). <p>
+Oracle: the params can have "user", "pass", "dbname" and "server" keys, each followed by an equal sign and a value. Such key/value pairs can be delimited by space, CR, LF, tab, semicolon, vertical bar or comma. <p>
+MySQL: the params can have "host", "port", "user", "pass", "dbname", "sock", "flags" "fldsz", "group" and "reconnect" keys, each followed by an equal sign and a value. Such key/value pairs can be delimited by space, CR, LF, tab, semicolon, vertical bar or comma. For now, "flags" can only recognise CLIENT_FOUND_ROWS (check MySQL manual for details). The value associated with "fldsz" determines maximum amount of memory (in bytes) for each of the fields in the result set of prepared statements. By default, this value is 1 MB. The value associated with "group" determines which group from configuration file to use (see MYSQL_READ_DEFAULT_GROUP option of mysql_options() in MySQL manual). Reconnect is set to 1 by default (i.e. true). <p>
+FreeTDS: the params can have "username", "password", "appname", "dbname", "host", "charset", "lang" and "server" keys, each followed by an equal sign and a value. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g7933396b01b4676ae2835d1f09d9a1be"></a><!-- doxytag: member="apr_dbd.h::apr_dbd_pbquery" ref="g7933396b01b4676ae2835d1f09d9a1be" args="(const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, int *nrows, apr_dbd_prepared_t *statement, const void **args)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int apr_dbd_pbquery           </td>
+          <td>(</td>
+          <td class="paramtype">const apr_dbd_driver_t *&nbsp;</td>
+          <td class="paramname"> <em>driver</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>pool</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">apr_dbd_t *&nbsp;</td>
+          <td class="paramname"> <em>handle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int *&nbsp;</td>
+          <td class="paramname"> <em>nrows</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">apr_dbd_prepared_t *&nbsp;</td>
+          <td class="paramname"> <em>statement</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void **&nbsp;</td>
+          <td class="paramname"> <em>args</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
 apr_dbd_pbquery: query using a prepared statement + binary args<p>
 <dl compact><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
@@ -638,7 +1033,66 @@
     <tr><td valign="top"></td><td valign="top"><em>args</em>&nbsp;</td><td>- binary args to prepared statement </td></tr>
   </table>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success or error code</dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success or error code </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g19b88ed11097a2d07bef1e31619fff0a"></a><!-- doxytag: member="apr_dbd.h::apr_dbd_pbselect" ref="g19b88ed11097a2d07bef1e31619fff0a" args="(const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, apr_dbd_results_t **res, apr_dbd_prepared_t *statement, int random, const void **args)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int apr_dbd_pbselect           </td>
+          <td>(</td>
+          <td class="paramtype">const apr_dbd_driver_t *&nbsp;</td>
+          <td class="paramname"> <em>driver</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>pool</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">apr_dbd_t *&nbsp;</td>
+          <td class="paramname"> <em>handle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">apr_dbd_results_t **&nbsp;</td>
+          <td class="paramname"> <em>res</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">apr_dbd_prepared_t *&nbsp;</td>
+          <td class="paramname"> <em>statement</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>random</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void **&nbsp;</td>
+          <td class="paramname"> <em>args</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
 apr_dbd_pbselect: select using a prepared statement + binary args<p>
 <dl compact><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
@@ -651,671 +1105,848 @@
     <tr><td valign="top"></td><td valign="top"><em>args</em>&nbsp;</td><td>- binary args to prepared statement </td></tr>
   </table>
 </dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success or error code</dd></dl>
-apr_dbd_datum_get: get a binary entry from a row<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success or error code </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="g1c4b005abda896011ca414679edfe112"></a><!-- doxytag: member="apr_dbd.h::apr_dbd_pquery" ref="g1c4b005abda896011ca414679edfe112" args="(const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, int *nrows, apr_dbd_prepared_t *statement, int nargs, const char **args)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int apr_dbd_pquery           </td>
+          <td>(</td>
+          <td class="paramtype">const apr_dbd_driver_t *&nbsp;</td>
+          <td class="paramname"> <em>driver</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>pool</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">apr_dbd_t *&nbsp;</td>
+          <td class="paramname"> <em>handle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int *&nbsp;</td>
+          <td class="paramname"> <em>nrows</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">apr_dbd_prepared_t *&nbsp;</td>
+          <td class="paramname"> <em>statement</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>nargs</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char **&nbsp;</td>
+          <td class="paramname"> <em>args</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>
+apr_dbd_pquery: query using a prepared statement + args<p>
 <dl compact><dt><b>Parameters:</b></dt><dd>
   <table border="0" cellspacing="2" cellpadding="0">
     <tr><td valign="top"></td><td valign="top"><em>driver</em>&nbsp;</td><td>- the driver </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>row</em>&nbsp;</td><td>- row pointer </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>col</em>&nbsp;</td><td>- entry number </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>- type of data to get </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>- pointer to data, allocated by the caller </td></tr>
-  </table>
-</dl>
-<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS on success, APR_ENOENT if data is NULL or APR_EGENERAL</dd></dl>
-Open a dbm file by file name and type of DBM <dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>dbm</em>&nbsp;</td><td>The newly opened database </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>The type of the DBM (not all may be available at run time) <pre>
-  db   for Berkeley DB files
-  gdbm for GDBM files
-  ndbm for NDBM files
-  sdbm for SDBM files (always available)
-  default for the default DBM type
-  </pre> </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>The dbm file name to open </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>mode</em>&nbsp;</td><td>The flag value <pre>
-           APR_DBM_READONLY   open for read-only access
-           APR_DBM_READWRITE  open for read-write access
-           APR_DBM_RWCREATE   open for r/w, create if needed
-           APR_DBM_RWTRUNC    open for r/w, truncate if already there
- </pre> </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>perm</em>&nbsp;</td><td>Permissions to apply to if created </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>cntxt</em>&nbsp;</td><td>The pool to use when creating the dbm </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>- working pool </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>handle</em>&nbsp;</td><td>- the connection </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>nrows</em>&nbsp;</td><td>- number of rows affected. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>statement</em>&nbsp;</td><td>- the prepared statement to execute </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>nargs</em>&nbsp;</td><td>- ignored (for backward compatibility only) </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>args</em>&nbsp;</td><td>- args to prepared statement </td></tr>
   </table>
 </dl>
-<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>The dbm name may not be a true file name, as many dbm packages append suffixes for seperate data and index files. </dd></dl>
-<dl compact><dt><b><a class="el" href="bug.html#_bug000001">Bug:</a></b></dt><dd>In apr-util 0.9 and 1.x, the type arg was case insensitive. This was highly inefficient, and as of 2.x the dbm name must be provided in the correct case (lower case for all bundled providers) </dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 for success or error code </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="gcf21412447c4357c64d1e9200a0f5eec"></a><!-- doxytag: member="apr_dbd.h::apr_dbd_prepare" ref="gcf21412447c4357c64d1e9200a0f5eec" args="(const apr_dbd_driver_t *driver, apr_pool_t *pool, apr_dbd_t *handle, const char *query, const char *label, apr_dbd_prepared_t **statement)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int apr_dbd_prepare           </td>
+          <td>(</td>
+          <td class="paramtype">const apr_dbd_driver_t *&nbsp;</td>
+          <td class="paramname"> <em>driver</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="group__apr__pools.html#gf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *&nbsp;</td>
+          <td class="paramname"> <em>pool</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">apr_dbd_t *&nbsp;</td>
+          <td class="paramname"> <em>handle</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>query</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>label</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">apr_dbd_prepared_t **&nbsp;</td>
+          <td class="paramname"> <em>statement</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
 <p>
-Open a dbm file by file name <dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>dbm</em>&nbsp;</td><td>The newly opened database </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>The dbm file name to open </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>mode</em>&nbsp;</td><td>The flag value <pre>
-           APR_DBM_READONLY   open for read-only access
-           APR_DBM_READWRITE  open for read-write access
-           APR_DBM_RWCREATE   open for r/w, create if needed
-           APR_DBM_RWTRUNC    open for r/w, truncate if already there
- </pre> </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>perm</em>&nbsp;</td><td>Permissions to apply to if created </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>cntxt</em>&nbsp;</td><td>The pool to use when creating the dbm </td></tr>
-  </table>
-</dl>
-<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>The dbm name may not be a true file name, as many dbm packages append suffixes for seperate data and index files.</dd></dl>
-Fetch a dbm record value by key <dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>dbm</em>&nbsp;</td><td>The database </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>The key datum to find this record </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>pvalue</em>&nbsp;</td><td>The value datum retrieved for this record</td></tr>
-  </table>
-</dl>
-Store a dbm record value by key <dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>dbm</em>&nbsp;</td><td>The database </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>The key datum to store this record by </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>The value datum to store in this record</td></tr>
-  </table>
-</dl>
-Delete a dbm record value by key <dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>dbm</em>&nbsp;</td><td>The database </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>The key datum of the record to delete </td></tr>
-  </table>
-</dl>
-<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>It is not an error to delete a non-existent record.</dd></dl>
-Search for a key within the dbm <dl compact><dt><b>Parameters:</b></dt><dd>
-  <table border="0" cellspacing="2" cellpadding="0">
-    <tr><td valign="top"></td><td valign="top"><em>dbm</em>&nbsp;</td><td>The database </td></tr>
-    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>The datum describing a key to test</td></tr>
-  </table>
-</dl>
-Retrieve the first record key from a dbm <dl compact><dt><b>Parameters:</b></dt><dd>

[... 1236 lines stripped ...]


Mime
View raw message