Files
doc-exports/docs/dws/umn/dws_01_0086.html
Lu, Huayi c5fcb46315 DWS UMN 801 version
Reviewed-by: Hasko, Vladimir <vladimir.hasko@t-systems.com>
Co-authored-by: Lu, Huayi <luhuayi@huawei.com>
Co-committed-by: Lu, Huayi <luhuayi@huawei.com>
2022-12-13 12:47:57 +00:00

335 lines
51 KiB
HTML

<a name="EN-US_TOPIC_0000001180440111"></a><a name="EN-US_TOPIC_0000001180440111"></a>
<h1 class="topictitle1">Using an ODBC Driver to Connect to a Database</h1>
<div id="body1509159132282"><p id="EN-US_TOPIC_0000001180440111__p4447886312449">GaussDB(DWS) allows you to use an ODBC driver to connect to the database through an ECS on the <span id="EN-US_TOPIC_0000001180440111__text1860219334119">cloud</span> platform or over the Internet.</p>
<p id="EN-US_TOPIC_0000001180440111__p20961377114425">For details about how to use the ODBC API, see the official document.</p>
<div class="section" id="EN-US_TOPIC_0000001180440111__section17871125219214"><h4 class="sectiontitle">Prerequisites</h4><ul id="EN-US_TOPIC_0000001180440111__ul851820296410"><li id="EN-US_TOPIC_0000001180440111__li3662151832915">You have downloaded ODBC driver packages <span class="filepath" id="EN-US_TOPIC_0000001180440111__filepath1166551813296"><b>dws_odbc_driver_for_linux.zip</b></span> (for Linux) and <span class="filepath" id="EN-US_TOPIC_0000001180440111__filepath7653111812296"><b>dws_odbc_driver_for_windows.zip</b></span> (for Windows). For details, see <a href="dws_01_0032.html">Downloading the JDBC or ODBC Driver</a>.<p id="EN-US_TOPIC_0000001180440111__p7035726113931">GaussDB(DWS) also supports open-source ODBC driver: PostgreSQL ODBC 09.01.0200 or later.</p>
</li><li id="EN-US_TOPIC_0000001180440111__li85185291849">You have downloaded the open-source unixODBC code file 2.3.0 from <a href="https://sourceforge.net/projects/unixodbc/files/unixODBC/2.3.0/unixODBC-2.3.0.tar.gz/download" target="_blank" rel="noopener noreferrer">https://sourceforge.net/projects/unixodbc/files/unixODBC/2.3.0/unixODBC-2.3.0.tar.gz/download</a>.</li><li id="EN-US_TOPIC_0000001180440111__li6710155017321">You have downloaded the SSL certificate file. For details, see <a href="dws_01_0083.html">(Optional) Downloading the SSL Certificate</a>.</li></ul>
</div>
<div class="section" id="EN-US_TOPIC_0000001180440111__section42307202184151"><h4 class="sectiontitle">Using an ODBC Driver to Connect to a Database (Linux)</h4><ol id="EN-US_TOPIC_0000001180440111__ol58383118184236"><li id="EN-US_TOPIC_0000001180440111__li22399552184847"><span>Upload the ODBC package and code file to the Linux environment and decompress them to the specified directory.</span></li><li id="EN-US_TOPIC_0000001180440111__li44629232185020"><span>Log in to the Linux environment as user <strong id="EN-US_TOPIC_0000001180440111__b62711076185045">root</strong>.</span></li><li id="EN-US_TOPIC_0000001180440111__li13805782185042"><span>Prepare <strong id="EN-US_TOPIC_0000001180440111__b842352706145016">unixODBC</strong>.</span><p><ol type="a" id="EN-US_TOPIC_0000001180440111__ol51532133185452"><li id="EN-US_TOPIC_0000001180440111__li56389105185454">Decompress the <strong id="EN-US_TOPIC_0000001180440111__b2006741919145033">unixODBC</strong> code file.<pre class="screen" id="EN-US_TOPIC_0000001180440111__screen111870954315">tar -xvf unixODBC-2.3.0.tar.gz</pre>
</li><li id="EN-US_TOPIC_0000001180440111__li8509910185525">Modify the configuration.<pre class="screen" id="EN-US_TOPIC_0000001180440111__screen3288112412439">cd unixODBC-2.3.0
vi configure</pre>
<p id="EN-US_TOPIC_0000001180440111__p40903079185544">Change the value of <span class="parmname" id="EN-US_TOPIC_0000001180440111__parmname65819334185554"><b>LIB_VERSION</b></span> to the following. Save the change and exit.</p>
<pre class="screen" id="EN-US_TOPIC_0000001180440111__screen12538133185649">LIB_VERSION="1:0:0"</pre>
</li><li id="EN-US_TOPIC_0000001180440111__li15236967185652">Compile the code file and install the driver.<pre class="screen" id="EN-US_TOPIC_0000001180440111__screen17346133714438">./configure --enable-gui=no
make
make install</pre>
</li></ol>
</p></li><li id="EN-US_TOPIC_0000001180440111__li1680342185325"><span>Replace the driver file.</span><p><ol type="a" id="EN-US_TOPIC_0000001180440111__ol2972802419237"><li id="EN-US_TOPIC_0000001180440111__li6653799219340">Decompress <span class="filepath" id="EN-US_TOPIC_0000001180440111__filepath6197102019340"><b>dws_odbc_driver_for_linux.zip</b></span>.<pre class="screen" id="EN-US_TOPIC_0000001180440111__screen19584115418438">unzip dws_odbc_driver_for_linux.zip</pre>
</li><li id="EN-US_TOPIC_0000001180440111__li1979546019237">Copy all files in the <span class="filepath" id="EN-US_TOPIC_0000001180440111__filepath1816594934313"><b>lib</b></span> directory to <span class="filepath" id="EN-US_TOPIC_0000001180440111__filepath11170144944318"><b>/usr/local/lib</b></span>. If there are files with the same name, overwrite them.</li><li id="EN-US_TOPIC_0000001180440111__li3838060519238">Copy <span class="filepath" id="EN-US_TOPIC_0000001180440111__filepath119351555154310"><b>psqlodbcw.la</b></span> and <span class="filepath" id="EN-US_TOPIC_0000001180440111__filepath293911551433"><b>psqlodbcw.so</b></span> in the <span class="filepath" id="EN-US_TOPIC_0000001180440111__filepath5940175554313"><b>odbc/lib</b></span> directory to <span class="filepath" id="EN-US_TOPIC_0000001180440111__filepath19940135534318"><b>/usr/local/lib</b></span>.</li></ol>
</p></li><li id="EN-US_TOPIC_0000001180440111__li46316519011"><span>Run the following command to modify the configuration of the driver file:</span><p><pre class="screen" id="EN-US_TOPIC_0000001180440111__screen1192197184416">vi /usr/local/etc/odbcinst.ini</pre>
<p id="EN-US_TOPIC_0000001180440111__p596588781960">Copy the following content to the file:</p>
<pre class="screen" id="EN-US_TOPIC_0000001180440111__screen52768284192146">[DWS]
Driver64=/usr/local/lib/psqlodbcw.so</pre>
<p id="EN-US_TOPIC_0000001180440111__p5205028419636">The parameters are as follows:</p>
<ul id="EN-US_TOPIC_0000001180440111__ul1960091192141"><li id="EN-US_TOPIC_0000001180440111__li61496548192141"><span class="parmname" id="EN-US_TOPIC_0000001180440111__parmname58213316203"><b>[DWS]</b></span>: indicates the driver name. You can customize the name.</li><li id="EN-US_TOPIC_0000001180440111__li20365480192141"><span class="parmname" id="EN-US_TOPIC_0000001180440111__parmname83476172715038"><b>Driver64</b></span> or <span class="parmname" id="EN-US_TOPIC_0000001180440111__parmname72737448915038"><b>Driver</b></span>: indicates the path where the dynamic library of the driver resides. For a 64-bit operating system, search for <span class="parmname" id="EN-US_TOPIC_0000001180440111__parmname8831308151524"><b>Driver64</b></span> first. If <span class="parmname" id="EN-US_TOPIC_0000001180440111__parmname135152214215216"><b>Driver64</b></span> is not configured, search for <span class="parmname" id="EN-US_TOPIC_0000001180440111__parmname1356133915228"><b>Driver</b></span>.</li></ul>
</p></li><li id="EN-US_TOPIC_0000001180440111__li5994285219917"><span>Run the following command to modify the data source file:</span><p><pre class="screen" id="EN-US_TOPIC_0000001180440111__screen1187521104417">vi /usr/local/etc/odbc.ini</pre>
<p id="EN-US_TOPIC_0000001180440111__p6601764019934">Copy the following content to the configuration file, save the modification, and exit.</p>
<pre class="screen" id="EN-US_TOPIC_0000001180440111__screen2948013119213">[DWSODBC]
Driver=DWS
Servername=10.10.0.13
Database=<span id="EN-US_TOPIC_0000001180440111__text1492618223496">gaussdb</span>
Username=dbadmin
Password=<em id="EN-US_TOPIC_0000001180440111__i8963915310">password</em>
Port=8000
Sslmode=allow</pre>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" id="EN-US_TOPIC_0000001180440111__table698016191057" frame="border" border="1" rules="all"><thead align="left"><tr id="EN-US_TOPIC_0000001180440111__row43688892191057"><th align="left" class="cellrowborder" valign="top" width="20%" id="mcps1.3.4.2.6.2.4.1.4.1.1"><p id="EN-US_TOPIC_0000001180440111__p49139350191057"><strong id="EN-US_TOPIC_0000001180440111__b4331210191910">Parameter</strong></p>
</th>
<th align="left" class="cellrowborder" valign="top" width="40%" id="mcps1.3.4.2.6.2.4.1.4.1.2"><p id="EN-US_TOPIC_0000001180440111__p53562174191057"><strong id="EN-US_TOPIC_0000001180440111__b1861928191910">Description</strong></p>
</th>
<th align="left" class="cellrowborder" valign="top" width="40%" id="mcps1.3.4.2.6.2.4.1.4.1.3"><p id="EN-US_TOPIC_0000001180440111__p56575432191057"><strong id="EN-US_TOPIC_0000001180440111__b3176675391910">Example Value</strong></p>
</th>
</tr>
</thead>
<tbody><tr id="EN-US_TOPIC_0000001180440111__row38648128191057"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.2.6.2.4.1.4.1.1 "><p id="EN-US_TOPIC_0000001180440111__p43490644191057">[DSN]</p>
</td>
<td class="cellrowborder" valign="top" width="40%" headers="mcps1.3.4.2.6.2.4.1.4.1.2 "><p id="EN-US_TOPIC_0000001180440111__p33081269191057">Data source name.</p>
</td>
<td class="cellrowborder" valign="top" width="40%" headers="mcps1.3.4.2.6.2.4.1.4.1.3 "><p id="EN-US_TOPIC_0000001180440111__p62337098191057">[DWSODBC]</p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001180440111__row24162971191057"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.2.6.2.4.1.4.1.1 "><p id="EN-US_TOPIC_0000001180440111__p11043674191057">Driver</p>
</td>
<td class="cellrowborder" valign="top" width="40%" headers="mcps1.3.4.2.6.2.4.1.4.1.2 "><p id="EN-US_TOPIC_0000001180440111__p22122434191057">Driver name, corresponding to <strong id="EN-US_TOPIC_0000001180440111__b84235270615421">DriverName</strong> in <span class="filepath" id="EN-US_TOPIC_0000001180440111__filepath107056302415438"><b>odbcinst.ini</b></span>.</p>
</td>
<td class="cellrowborder" valign="top" width="40%" headers="mcps1.3.4.2.6.2.4.1.4.1.3 "><p id="EN-US_TOPIC_0000001180440111__p47086714191057">Driver=DWS</p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001180440111__row21127243191057"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.2.6.2.4.1.4.1.1 "><p id="EN-US_TOPIC_0000001180440111__p33585151191057">Servername</p>
</td>
<td class="cellrowborder" valign="top" width="40%" headers="mcps1.3.4.2.6.2.4.1.4.1.2 "><p id="EN-US_TOPIC_0000001180440111__p36042711191057">Server IP address.</p>
</td>
<td class="cellrowborder" valign="top" width="40%" headers="mcps1.3.4.2.6.2.4.1.4.1.3 "><p id="EN-US_TOPIC_0000001180440111__p33778492191057">Servername=10.10.0.13</p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001180440111__row35570974191057"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.2.6.2.4.1.4.1.1 "><p id="EN-US_TOPIC_0000001180440111__p62676673191057">Database</p>
</td>
<td class="cellrowborder" valign="top" width="40%" headers="mcps1.3.4.2.6.2.4.1.4.1.2 "><p id="EN-US_TOPIC_0000001180440111__p43645732191057">Name of the database to be connected to.</p>
</td>
<td class="cellrowborder" valign="top" width="40%" headers="mcps1.3.4.2.6.2.4.1.4.1.3 "><p id="EN-US_TOPIC_0000001180440111__p45643375191057">Database=<span id="EN-US_TOPIC_0000001180440111__text32573110495">gaussdb</span></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001180440111__row8137195191057"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.2.6.2.4.1.4.1.1 "><p id="EN-US_TOPIC_0000001180440111__p55133095191057">Username</p>
</td>
<td class="cellrowborder" valign="top" width="40%" headers="mcps1.3.4.2.6.2.4.1.4.1.2 "><p id="EN-US_TOPIC_0000001180440111__p36595678191057">Database username.</p>
</td>
<td class="cellrowborder" valign="top" width="40%" headers="mcps1.3.4.2.6.2.4.1.4.1.3 "><p id="EN-US_TOPIC_0000001180440111__p11459962191057">Username=dbadmin</p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001180440111__row36030802191057"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.2.6.2.4.1.4.1.1 "><p id="EN-US_TOPIC_0000001180440111__p32813824191057">Password</p>
</td>
<td class="cellrowborder" valign="top" width="40%" headers="mcps1.3.4.2.6.2.4.1.4.1.2 "><p id="EN-US_TOPIC_0000001180440111__p40674054191057">Database user password.</p>
</td>
<td class="cellrowborder" valign="top" width="40%" headers="mcps1.3.4.2.6.2.4.1.4.1.3 "><p id="EN-US_TOPIC_0000001180440111__p6264077191057">Password=<em id="EN-US_TOPIC_0000001180440111__i1415111243317">password</em></p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001180440111__row56376696191057"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.2.6.2.4.1.4.1.1 "><p id="EN-US_TOPIC_0000001180440111__p3109667191057">Port</p>
</td>
<td class="cellrowborder" valign="top" width="40%" headers="mcps1.3.4.2.6.2.4.1.4.1.2 "><p id="EN-US_TOPIC_0000001180440111__p50556450191057">Port number of the server.</p>
</td>
<td class="cellrowborder" valign="top" width="40%" headers="mcps1.3.4.2.6.2.4.1.4.1.3 "><p id="EN-US_TOPIC_0000001180440111__p1431774191057">Port=8000</p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001180440111__row12885966191057"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.3.4.2.6.2.4.1.4.1.1 "><p id="EN-US_TOPIC_0000001180440111__p37130287191057">Sslmode</p>
</td>
<td class="cellrowborder" valign="top" width="40%" headers="mcps1.3.4.2.6.2.4.1.4.1.2 "><p id="EN-US_TOPIC_0000001180440111__p54763265191057">SSL certification mode. This parameter is enabled for the cluster by default.</p>
<p id="EN-US_TOPIC_0000001180440111__p1442353513431">Values and meanings:</p>
<ul id="EN-US_TOPIC_0000001180440111__ul1438325020436"><li id="EN-US_TOPIC_0000001180440111__l9ac09a2ab8b14487ba43bce7515fe02c"><strong id="EN-US_TOPIC_0000001180440111__b32561338841035">disable</strong>: only tries to establish a non-SSL connection.</li><li id="EN-US_TOPIC_0000001180440111__l10714c79fff643a2bde8cc0d14f9a550"><strong id="EN-US_TOPIC_0000001180440111__b20989924241035">allow</strong>: tries establishing a non-SSL connection first, and then an SSL connection if the attempt fails.</li><li id="EN-US_TOPIC_0000001180440111__lc2da059541734fba8d137f55a96233b8"><strong id="EN-US_TOPIC_0000001180440111__b176551509841035">prefer</strong>: tries establishing an SSL connection first, and then a non-SSL connection if the attempt fails.</li><li id="EN-US_TOPIC_0000001180440111__l78e6534064744494898e97b882918b8a"><strong id="EN-US_TOPIC_0000001180440111__b143512726541035">require</strong>: only tries establishing an SSL connection. If there is a CA file, perform the verification according to the scenario in which the parameter is set to <strong id="EN-US_TOPIC_0000001180440111__b85429463641035">verify-ca</strong>.</li><li id="EN-US_TOPIC_0000001180440111__l49c0e849bdfc4e2fb2194e8431ac964a"><strong id="EN-US_TOPIC_0000001180440111__b90384709241035">verify-ca</strong>: tries establishing an SSL connection and checks whether the server certificate is issued by a trusted CA.</li><li id="EN-US_TOPIC_0000001180440111__l0476331028bd4ac5b3ed14065a17cc1b"><strong id="EN-US_TOPIC_0000001180440111__b173264976541035">verify-full</strong>: not supported by GaussDB(DWS)</li></ul>
<div class="note" id="EN-US_TOPIC_0000001180440111__note94497271018"><span class="notetitle"> NOTE: </span><div class="notebody"><p id="EN-US_TOPIC_0000001180440111__p444916277012">The SSL mode delivers higher security than the common mode. By default, the SSL function is enabled in a cluster to allow SSL or non-SSL connections from the client. You are advised to use the SSL mode when using ODBC to connect to a GaussDB (DWS) cluster.</p>
</div></div>
</td>
<td class="cellrowborder" valign="top" width="40%" headers="mcps1.3.4.2.6.2.4.1.4.1.3 "><p id="EN-US_TOPIC_0000001180440111__p6639467191057">Sslmode=allow</p>
</td>
</tr>
</tbody>
</table>
</div>
<div class="note" id="EN-US_TOPIC_0000001180440111__note29200528152533"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><p id="EN-US_TOPIC_0000001180440111__p61478167152533">You can view the values of <strong id="EN-US_TOPIC_0000001180440111__b842352706153811">Servername</strong> and <strong id="EN-US_TOPIC_0000001180440111__b842352706153817">Port</strong> on the GaussDB(DWS) management console. Log in to the GaussDB(DWS) management console and click <span class="uicontrol" id="EN-US_TOPIC_0000001180440111__uicontrol230942777154016"><b>Connection Management</b></span>. In the <span class="uicontrol" id="EN-US_TOPIC_0000001180440111__uicontrol230942777154048"><b>Data Warehouse Connection String</b></span> area, select the target cluster and obtain <span class="parmname" id="EN-US_TOPIC_0000001180440111__parmname416504042154113"><b>Private Network Address</b></span> or <span class="parmname" id="EN-US_TOPIC_0000001180440111__parmname668357971154113"><b>Public Network Address</b></span>. For details, see <a href="dws_01_0033.html">Obtaining the Cluster Connection Address</a>.</p>
</div></div>
</p></li><li id="EN-US_TOPIC_0000001180440111__li6874063191310"><span>Configure environment variables.</span><p><pre class="screen" id="EN-US_TOPIC_0000001180440111__screen1220893664411">vi ~/.bashrc</pre>
<p id="EN-US_TOPIC_0000001180440111__p46013599191353">Add the following information to the configuration file:</p>
<pre class="screen" id="EN-US_TOPIC_0000001180440111__screen6587863619147">export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH
export ODBCSYSINI=/usr/local/etc
export ODBCINI=/usr/local/etc/odbc.ini</pre>
</p></li><li id="EN-US_TOPIC_0000001180440111__li51296297191449"><span>Import environment variables.</span><p><pre class="screen" id="EN-US_TOPIC_0000001180440111__screen1635219505445">source ~/.bashrc</pre>
</p></li><li id="EN-US_TOPIC_0000001180440111__li10140537191514"><span>Run the following commands to connect to the database:</span><p><pre class="screen" id="EN-US_TOPIC_0000001180440111__screen828313279460">/usr/local/bin/isql -v DWSODBC</pre>
<p id="EN-US_TOPIC_0000001180440111__p52062584634">If the following information is displayed, the connection is successful:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001180440111__screen50768870192026"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
<span class="normal">4</span>
<span class="normal">5</span>
<span class="normal">6</span>
<span class="normal">7</span>
<span class="normal">8</span>
<span class="normal">9</span></pre></div></td><td class="code"><div><pre><span></span><span class="o">+</span><span class="c1">---------------------------------------+ </span>
<span class="o">|</span><span class="w"> </span><span class="n">Connected</span><span class="o">!</span><span class="w"> </span><span class="o">|</span><span class="w"> </span>
<span class="o">|</span><span class="w"> </span><span class="o">|</span><span class="w"> </span>
<span class="o">|</span><span class="w"> </span><span class="k">sql</span><span class="o">-</span><span class="k">statement</span><span class="w"> </span><span class="o">|</span><span class="w"> </span>
<span class="o">|</span><span class="w"> </span><span class="n">help</span><span class="w"> </span><span class="p">[</span><span class="n">tablename</span><span class="p">]</span><span class="w"> </span><span class="o">|</span><span class="w"> </span>
<span class="o">|</span><span class="w"> </span><span class="n">quit</span><span class="w"> </span><span class="o">|</span><span class="w"> </span>
<span class="o">|</span><span class="w"> </span><span class="o">|</span><span class="w"> </span>
<span class="o">+</span><span class="c1">---------------------------------------+ </span>
<span class="k">SQL</span><span class="o">&gt;</span><span class="w"> </span>
</pre></div></td></tr></table></div>
</div>
</p></li></ol>
</div>
<div class="section" id="EN-US_TOPIC_0000001180440111__section31086112145338"><h4 class="sectiontitle">Using an ODBC Driver to Connect to a Database (Windows)</h4><ol id="EN-US_TOPIC_0000001180440111__ol2138056114572"><li id="EN-US_TOPIC_0000001180440111__li872731215932"><span>Decompress ODBC driver package <span class="filepath" id="EN-US_TOPIC_0000001180440111__filepath471148015955"><b>dws_odbc_driver_for_windows.zip</b></span> (for Windows) and install <span class="filepath" id="EN-US_TOPIC_0000001180440111__filepath32149566111923"><b>psqlodbc.msi</b></span>.</span></li><li id="EN-US_TOPIC_0000001180440111__li2546198214158"><span>Decompress the SSL certificate package to obtain the certificate file.</span><p><p id="EN-US_TOPIC_0000001180440111__p978212174543">You can choose to automatically or manually deploy the certificate based on your needs.</p>
<p id="EN-US_TOPIC_0000001180440111__p3712133735313">Automatic deployment:</p>
<p id="EN-US_TOPIC_0000001180440111__p20712123755316">Double-click the <strong id="EN-US_TOPIC_0000001180440111__b842352706185049">sslcert_env.bat</strong> file. The certificate is automatically deployed to a default location.</p>
<div class="note" id="EN-US_TOPIC_0000001180440111__note12712153713536"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><p id="EN-US_TOPIC_0000001180440111__p1971283716535">The <strong id="EN-US_TOPIC_0000001180440111__b84235270618538">sslcert_env.bat</strong> file ensures the purity of the certificate environment. When the <span class="filepath" id="EN-US_TOPIC_0000001180440111__filepath1070563024185355"><b>%APPDATA%\postgresql</b></span> directory exists, a message will be prompted asking you whether you want to remove related directories. If you want to remove related directories, back up files in the directory.</p>
</div></div>
<div class="p" id="EN-US_TOPIC_0000001180440111__p871503710532">Manual deployment:<ol type="a" id="EN-US_TOPIC_0000001180440111__ol971512372537"><li id="EN-US_TOPIC_0000001180440111__li4712203795319">Create a new folder named <span class="parmvalue" id="EN-US_TOPIC_0000001180440111__parmvalue1271243712533"><b>postgresql</b></span> in the <span class="filepath" id="EN-US_TOPIC_0000001180440111__filepath187126374531"><b>%APPDATA%\</b></span> directory.</li><li id="EN-US_TOPIC_0000001180440111__li1715137125312">Copy files <span class="filepath" id="EN-US_TOPIC_0000001180440111__filepath802667186174228"><b>client.crt</b></span>, <span class="filepath" id="EN-US_TOPIC_0000001180440111__filepath1405418173174228"><b>client.key</b></span>, <span class="filepath" id="EN-US_TOPIC_0000001180440111__filepath1601843327174228"><b>client.key.cipher</b></span>, and <span class="filepath" id="EN-US_TOPIC_0000001180440111__filepath1542043402174228"><b>client.key.rand</b></span> to the <span class="filepath" id="EN-US_TOPIC_0000001180440111__filepath1212064917444"><b>%APPDATA%\postgresql</b></span> directory and change <strong id="EN-US_TOPIC_0000001180440111__b637999848174425">client</strong> in the file name to <strong id="EN-US_TOPIC_0000001180440111__b107468202617487">postgres</strong>. For example, change the name of <span class="filepath" id="EN-US_TOPIC_0000001180440111__filepath1349544050174818"><b>client.key</b></span> to <span class="filepath" id="EN-US_TOPIC_0000001180440111__filepath1440362531174831"><b>postgres.key</b></span>.</li><li id="EN-US_TOPIC_0000001180440111__li4715153714539">Copy <span class="filepath" id="EN-US_TOPIC_0000001180440111__filepath2043287654174856"><b>cacert.pem</b></span> to <span class="filepath" id="EN-US_TOPIC_0000001180440111__filepath189881092817492"><b>%APPDATA%\postgresql</b></span> and change the name of <span class="filepath" id="EN-US_TOPIC_0000001180440111__filepath1439223584174919"><b>cacert.pem</b></span> to <span class="filepath" id="EN-US_TOPIC_0000001180440111__filepath2127076779174924"><b>root.crt</b></span>.</li></ol>
</div>
</p></li><li id="EN-US_TOPIC_0000001180440111__lf33a212263634615b4fbacf3d789b929"><span>Open Driver Manager.</span><p><p id="EN-US_TOPIC_0000001180440111__a8cf25c24bbdc4a98b86916942ac1417f">Currently, because <span id="EN-US_TOPIC_0000001180440111__te1f6a1c318b148699f26d2ba01ffb38d">GaussDB(DWS)</span> only provides a 32-bit ODBC driver, it only supports 32-bit application development. Use the 32-bit Driver Manager when you configure the data source. (Assume the Windows system drive is drive C. If another disk drive is used, modify the path accordingly.)</p>
<ul id="EN-US_TOPIC_0000001180440111__u097e2db1c3af436b909e817167a58ae6"><li id="EN-US_TOPIC_0000001180440111__l28c81f0b9c7f461b8c255af03fa20be3">In a 64-bit Windows operating system, open <strong id="EN-US_TOPIC_0000001180440111__b842352706154940">C:\Windows\SysWOW64\odbcad32.exe</strong>.<p id="EN-US_TOPIC_0000001180440111__a9717f2dcbd904f319c811aa779a49ede">Do not choose <strong id="EN-US_TOPIC_0000001180440111__b10777145113253">Control Panel</strong> &gt; <strong id="EN-US_TOPIC_0000001180440111__b1078311517254">System and Security</strong> &gt; <strong id="EN-US_TOPIC_0000001180440111__b4784175162515">Administrative Tools</strong> &gt; <strong id="EN-US_TOPIC_0000001180440111__b18784135118255">Data Sources (ODBC)</strong> directly.</p>
<div class="note" id="EN-US_TOPIC_0000001180440111__nca1e7e82949f47a99d5b7f5f9cb47d19"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><p id="EN-US_TOPIC_0000001180440111__a2451821c31ab4c7bad8a98605f7cde8e">WOW64 is the acronym for Windows 32-bit on Windows 64-bit. <strong id="EN-US_TOPIC_0000001180440111__b842352706155639">C:\Windows\SysWOW64\</strong> stores the 32-bit environment on a 64-bit system. <strong id="EN-US_TOPIC_0000001180440111__b842352706155655">C:\Windows\System32\</strong> stores the environment consistent with the current operating system. For technical details, see the Windows technical documents.</p>
</div></div>
</li><li id="EN-US_TOPIC_0000001180440111__lff4131c5fa82445d925b99c829996239">In a 32-bit Windows operating system, open <strong id="EN-US_TOPIC_0000001180440111__b640022159">C:\Windows\System32\odbcad32.exe</strong>.<p id="EN-US_TOPIC_0000001180440111__abb043c2490b449dc94085625a60ea1af">You can also open Driver Manager by choosing <strong id="EN-US_TOPIC_0000001180440111__b73771462268">Control Panel</strong> &gt; <strong id="EN-US_TOPIC_0000001180440111__b12378861268">System and Security</strong> &gt; <strong id="EN-US_TOPIC_0000001180440111__b1837810652614">Administrative Tools</strong> &gt; <strong id="EN-US_TOPIC_0000001180440111__b837819602617">Data Sources (ODBC)</strong>.</p>
</li></ul>
</p></li><li id="EN-US_TOPIC_0000001180440111__li56721736141540"><span>Configure a data source to be connected to.</span><p><ol type="a" id="EN-US_TOPIC_0000001180440111__ol41797475152355"><li id="EN-US_TOPIC_0000001180440111__li12659042152355">On the <strong id="EN-US_TOPIC_0000001180440111__b68972146264">User DSN</strong> tab, click <strong id="EN-US_TOPIC_0000001180440111__b1090351482618">Add</strong> and choose <strong id="EN-US_TOPIC_0000001180440111__b89031414172619">PostgreSQL Unicode</strong> for setup.<div class="fignone" id="EN-US_TOPIC_0000001180440111__fig46625912141933"><span class="figcap"><b>Figure 1 </b>Configuring a data source to be connected to</span><br><span><img id="EN-US_TOPIC_0000001180440111__image18602527141933" src="figure/en-us_image_0000001180320325.png"></span></div>
<p id="EN-US_TOPIC_0000001180440111__p623103011566">You can view the values of <strong id="EN-US_TOPIC_0000001180440111__b2060101996">Server</strong> and <strong id="EN-US_TOPIC_0000001180440111__b154098119">Port</strong> on the GaussDB(DWS) management console. Log in to the GaussDB(DWS) management console and click <strong id="EN-US_TOPIC_0000001180440111__b1111863616384">Connections</strong>. In the <span class="uicontrol" id="EN-US_TOPIC_0000001180440111__uicontrol145142447"><b>Data Warehouse Connection String</b></span> area, select the target cluster and obtain <span class="parmname" id="EN-US_TOPIC_0000001180440111__parmname1380922116"><b>Private Network Address</b></span> or <span class="parmname" id="EN-US_TOPIC_0000001180440111__parmname1787506148"><b>Public Network Address</b></span>. For details, see <a href="dws_01_0033.html">Obtaining the Cluster Connection Address</a>.</p>
</li><li id="EN-US_TOPIC_0000001180440111__li22304115152428">Click <span class="uicontrol" id="EN-US_TOPIC_0000001180440111__uicontrol39977673152428"><b>Test</b></span> to verify that the connection is correct. If <span class="parmvalue" id="EN-US_TOPIC_0000001180440111__parmvalue24254738152428"><b>Connection successful</b></span> is displayed, the connection is correct.</li></ol>
</p></li><li id="EN-US_TOPIC_0000001180440111__li33236979152817"><span>Compile an ODBC sample program to connect to the data source.</span><p><p id="EN-US_TOPIC_0000001180440111__p23993252393">The ODBC API does not provide the database connection retry capability. You need to implement the connection retry processing in the service code.</p>
<p id="EN-US_TOPIC_0000001180440111__p5104714152834">The sample code is as follows:</p>
<div class="codecoloring" codetype="Java" id="EN-US_TOPIC_0000001180440111__screen52603220152846"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
<span class="normal"> 3</span>
<span class="normal"> 4</span>
<span class="normal"> 5</span>
<span class="normal"> 6</span>
<span class="normal"> 7</span>
<span class="normal"> 8</span>
<span class="normal"> 9</span>
<span class="normal">10</span>
<span class="normal">11</span>
<span class="normal">12</span>
<span class="normal">13</span>
<span class="normal">14</span>
<span class="normal">15</span>
<span class="normal">16</span>
<span class="normal">17</span>
<span class="normal">18</span>
<span class="normal">19</span>
<span class="normal">20</span>
<span class="normal">21</span>
<span class="normal">22</span>
<span class="normal">23</span>
<span class="normal">24</span>
<span class="normal">25</span>
<span class="normal">26</span>
<span class="normal">27</span>
<span class="normal">28</span>
<span class="normal">29</span>
<span class="normal">30</span>
<span class="normal">31</span>
<span class="normal">32</span>
<span class="normal">33</span>
<span class="normal">34</span>
<span class="normal">35</span>
<span class="normal">36</span>
<span class="normal">37</span>
<span class="normal">38</span>
<span class="normal">39</span>
<span class="normal">40</span>
<span class="normal">41</span>
<span class="normal">42</span>
<span class="normal">43</span>
<span class="normal">44</span>
<span class="normal">45</span>
<span class="normal">46</span>
<span class="normal">47</span>
<span class="normal">48</span>
<span class="normal">49</span>
<span class="normal">50</span>
<span class="normal">51</span>
<span class="normal">52</span>
<span class="normal">53</span>
<span class="normal">54</span>
<span class="normal">55</span>
<span class="normal">56</span>
<span class="normal">57</span>
<span class="normal">58</span>
<span class="normal">59</span>
<span class="normal">60</span>
<span class="normal">61</span>
<span class="normal">62</span>
<span class="normal">63</span>
<span class="normal">64</span>
<span class="normal">65</span>
<span class="normal">66</span>
<span class="normal">67</span>
<span class="normal">68</span>
<span class="normal">69</span>
<span class="normal">70</span>
<span class="normal">71</span>
<span class="normal">72</span>
<span class="normal">73</span>
<span class="normal">74</span>
<span class="normal">75</span>
<span class="normal">76</span>
<span class="normal">77</span>
<span class="normal">78</span>
<span class="normal">79</span>
<span class="normal">80</span>
<span class="normal">81</span>
<span class="normal">82</span>
<span class="normal">83</span></pre></div></td><td class="code"><div><pre><span></span><span class="c1">// This example shows how to obtain GaussDB(DWS) data through the ODBC driver.</span><span class="w"></span>
<span class="c1">// DBtest.c (compile with: libodbc.so) </span><span class="w"></span>
<span class="err">#</span><span class="n">include</span><span class="w"> </span><span class="o">&lt;</span><span class="n">stdlib</span><span class="p">.</span><span class="na">h</span><span class="o">&gt;</span><span class="w"> </span>
<span class="err">#</span><span class="n">include</span><span class="w"> </span><span class="o">&lt;</span><span class="n">stdio</span><span class="p">.</span><span class="na">h</span><span class="o">&gt;</span><span class="w"> </span>
<span class="err">#</span><span class="n">include</span><span class="w"> </span><span class="o">&lt;</span><span class="n">sqlext</span><span class="p">.</span><span class="na">h</span><span class="o">&gt;</span><span class="w"></span>
<span class="err">#</span><span class="n">ifdef</span><span class="w"> </span><span class="n">WIN32</span><span class="w"></span>
<span class="err">#</span><span class="n">include</span><span class="w"> </span><span class="o">&lt;</span><span class="n">windows</span><span class="p">.</span><span class="na">h</span><span class="o">&gt;</span><span class="w"></span>
<span class="err">#</span><span class="n">endif</span><span class="w"> </span>
<span class="n">SQLHENV</span><span class="w"> </span><span class="n">V_OD_Env</span><span class="p">;</span><span class="w"> </span><span class="c1">// Handle ODBC environment </span><span class="w"></span>
<span class="n">SQLHSTMT</span><span class="w"> </span><span class="n">V_OD_hstmt</span><span class="p">;</span><span class="w"> </span><span class="c1">// Handle statement </span><span class="w"></span>
<span class="n">SQLHDBC</span><span class="w"> </span><span class="n">V_OD_hdbc</span><span class="p">;</span><span class="w"> </span><span class="c1">// Handle connection </span><span class="w"></span>
<span class="kt">char</span><span class="w"> </span><span class="n">typename</span><span class="o">[</span><span class="mi">100</span><span class="o">]</span><span class="p">;</span><span class="w"></span>
<span class="n">SQLINTEGER</span><span class="w"> </span><span class="n">value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">100</span><span class="p">;</span><span class="w"></span>
<span class="n">SQLINTEGER</span><span class="w"> </span><span class="n">V_OD_erg</span><span class="p">,</span><span class="n">V_OD_buffer</span><span class="p">,</span><span class="n">V_OD_err</span><span class="p">,</span><span class="n">V_OD_id</span><span class="p">;</span><span class="w"></span>
<span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">argc</span><span class="p">,</span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">argv</span><span class="o">[]</span><span class="p">)</span><span class="w"> </span>
<span class="p">{</span><span class="w"> </span>
<span class="w"> </span><span class="c1">// 1. Apply for an environment handle. </span><span class="w"></span>
<span class="w"> </span><span class="n">V_OD_erg</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SQLAllocHandle</span><span class="p">(</span><span class="n">SQL_HANDLE_ENV</span><span class="p">,</span><span class="n">SQL_NULL_HANDLE</span><span class="p">,</span><span class="o">&amp;</span><span class="n">V_OD_Env</span><span class="p">);</span><span class="w"> </span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">((</span><span class="n">V_OD_erg</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">SQL_SUCCESS</span><span class="p">)</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="p">(</span><span class="n">V_OD_erg</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">SQL_SUCCESS_WITH_INFO</span><span class="p">))</span><span class="w"> </span>
<span class="w"> </span><span class="p">{</span><span class="w"> </span>
<span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">&quot;Error AllocHandle\n&quot;</span><span class="p">);</span><span class="w"> </span>
<span class="w"> </span><span class="n">exit</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span><span class="w"> </span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span>
<span class="w"> </span><span class="c1">// 2. Set environment attributes (version information). </span><span class="w"></span>
<span class="w"> </span><span class="n">SQLSetEnvAttr</span><span class="p">(</span><span class="n">V_OD_Env</span><span class="p">,</span><span class="w"> </span><span class="n">SQL_ATTR_ODBC_VERSION</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="kt">void</span><span class="o">*</span><span class="p">)</span><span class="n">SQL_OV_ODBC3</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span><span class="w"> </span>
<span class="w"> </span><span class="c1">// 3. Apply for a connection handle. </span><span class="w"></span>
<span class="w"> </span><span class="n">V_OD_erg</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SQLAllocHandle</span><span class="p">(</span><span class="n">SQL_HANDLE_DBC</span><span class="p">,</span><span class="w"> </span><span class="n">V_OD_Env</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">V_OD_hdbc</span><span class="p">);</span><span class="w"> </span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">((</span><span class="n">V_OD_erg</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">SQL_SUCCESS</span><span class="p">)</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="p">(</span><span class="n">V_OD_erg</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">SQL_SUCCESS_WITH_INFO</span><span class="p">))</span><span class="w"> </span>
<span class="w"> </span><span class="p">{</span><span class="w"> </span>
<span class="w"> </span><span class="n">SQLFreeHandle</span><span class="p">(</span><span class="n">SQL_HANDLE_ENV</span><span class="p">,</span><span class="w"> </span><span class="n">V_OD_Env</span><span class="p">);</span><span class="w"> </span>
<span class="w"> </span><span class="n">exit</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span><span class="w"> </span>
<span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="w"> </span><span class="c1">// 4. Set connection attributes.</span><span class="w"></span>
<span class="w"> </span><span class="n">SQLSetConnectAttr</span><span class="p">(</span><span class="n">V_OD_hdbc</span><span class="p">,</span><span class="w"> </span><span class="n">SQL_ATTR_AUTOCOMMIT</span><span class="p">,</span><span class="w"> </span><span class="n">SQL_AUTOCOMMIT_ON</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span><span class="w"> </span>
<span class="w"> </span><span class="c1">// 5. Connect to a data source. You do not need to enter the username and password if you have configured them in the odbc.ini file. If you have not configured them, specify the name and password of the user who wants to connect to the database in the SQLConnect function.</span><span class="w"></span>
<span class="w"> </span><span class="n">V_OD_erg</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SQLConnect</span><span class="p">(</span><span class="n">V_OD_hdbc</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="n">SQLCHAR</span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="s">&quot;gaussdb&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">SQL_NTS</span><span class="p">,</span><span class="w"> </span>
<span class="w"> </span><span class="p">(</span><span class="n">SQLCHAR</span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="s">&quot;&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">SQL_NTS</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="n">SQLCHAR</span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="s">&quot;&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">SQL_NTS</span><span class="p">);</span><span class="w"> </span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">((</span><span class="n">V_OD_erg</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">SQL_SUCCESS</span><span class="p">)</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="p">(</span><span class="n">V_OD_erg</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">SQL_SUCCESS_WITH_INFO</span><span class="p">))</span><span class="w"> </span>
<span class="w"> </span><span class="p">{</span><span class="w"> </span>
<span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">&quot;Error SQLConnect %d\n&quot;</span><span class="p">,</span><span class="n">V_OD_erg</span><span class="p">);</span><span class="w"> </span>
<span class="w"> </span><span class="n">SQLFreeHandle</span><span class="p">(</span><span class="n">SQL_HANDLE_ENV</span><span class="p">,</span><span class="w"> </span><span class="n">V_OD_Env</span><span class="p">);</span><span class="w"> </span>
<span class="w"> </span><span class="n">exit</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span><span class="w"> </span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span>
<span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">&quot;Connected !\n&quot;</span><span class="p">);</span><span class="w"> </span>
<span class="w"> </span><span class="c1">// 6. Set statement attributes.</span><span class="w"></span>
<span class="w"> </span><span class="n">SQLSetStmtAttr</span><span class="p">(</span><span class="n">V_OD_hstmt</span><span class="p">,</span><span class="n">SQL_ATTR_QUERY_TIMEOUT</span><span class="p">,(</span><span class="n">SQLPOINTER</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="mi">3</span><span class="p">,</span><span class="mi">0</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="c1">// 7. Apply for a statement handle.</span><span class="w"></span>
<span class="w"> </span><span class="n">SQLAllocHandle</span><span class="p">(</span><span class="n">SQL_HANDLE_STMT</span><span class="p">,</span><span class="w"> </span><span class="n">V_OD_hdbc</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">V_OD_hstmt</span><span class="p">);</span><span class="w"> </span>
<span class="w"> </span><span class="c1">// 8. Executes an SQL statement directly.</span><span class="w"></span>
<span class="w"> </span><span class="n">SQLExecDirect</span><span class="p">(</span><span class="n">V_OD_hstmt</span><span class="p">,</span><span class="s">&quot;drop table IF EXISTS testtable&quot;</span><span class="p">,</span><span class="n">SQL_NTS</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="n">SQLExecDirect</span><span class="p">(</span><span class="n">V_OD_hstmt</span><span class="p">,</span><span class="s">&quot;create table testtable(id int)&quot;</span><span class="p">,</span><span class="n">SQL_NTS</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="n">SQLExecDirect</span><span class="p">(</span><span class="n">V_OD_hstmt</span><span class="p">,</span><span class="s">&quot;insert into testtable values(25)&quot;</span><span class="p">,</span><span class="n">SQL_NTS</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="c1">// 9. Prepare for execution.</span><span class="w"></span>
<span class="w"> </span><span class="n">SQLPrepare</span><span class="p">(</span><span class="n">V_OD_hstmt</span><span class="p">,</span><span class="s">&quot;insert into testtable values(?)&quot;</span><span class="p">,</span><span class="n">SQL_NTS</span><span class="p">);</span><span class="w"> </span>
<span class="w"> </span><span class="c1">// 10. Bind parameters.</span><span class="w"></span>
<span class="w"> </span><span class="n">SQLBindParameter</span><span class="p">(</span><span class="n">V_OD_hstmt</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">SQL_PARAM_INPUT</span><span class="p">,</span><span class="n">SQL_C_SLONG</span><span class="p">,</span><span class="n">SQL_INTEGER</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="o">&amp;</span><span class="n">value</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="n">NULL</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="c1">// 11. Execute the ready statement.</span><span class="w"></span>
<span class="w"> </span><span class="n">SQLExecute</span><span class="p">(</span><span class="n">V_OD_hstmt</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="n">SQLExecDirect</span><span class="p">(</span><span class="n">V_OD_hstmt</span><span class="p">,</span><span class="s">&quot;select id from testtable&quot;</span><span class="p">,</span><span class="n">SQL_NTS</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="c1">// 12. Obtain the attributes of a certain column in the result set.</span><span class="w"></span>
<span class="w"> </span><span class="n">SQLColAttribute</span><span class="p">(</span><span class="n">V_OD_hstmt</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">SQL_DESC_TYPE</span><span class="p">,</span><span class="n">typename</span><span class="p">,</span><span class="mi">100</span><span class="p">,</span><span class="n">NULL</span><span class="p">,</span><span class="n">NULL</span><span class="p">);</span><span class="w"> </span>
<span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">&quot;SQLColAtrribute %s\n&quot;</span><span class="p">,</span><span class="n">typename</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="c1">// 13. Bind the result set.</span><span class="w"></span>
<span class="w"> </span><span class="n">SQLBindCol</span><span class="p">(</span><span class="n">V_OD_hstmt</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">SQL_C_SLONG</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="n">SQLPOINTER</span><span class="p">)</span><span class="o">&amp;</span><span class="n">V_OD_buffer</span><span class="p">,</span><span class="mi">150</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="p">(</span><span class="n">SQLLEN</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="o">&amp;</span><span class="n">V_OD_err</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="c1">// 14. Collect data using SQLFetch.</span><span class="w"></span>
<span class="w"> </span><span class="n">V_OD_erg</span><span class="o">=</span><span class="n">SQLFetch</span><span class="p">(</span><span class="n">V_OD_hstmt</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="c1">// 15. Obtain and return data using SQLGetData.</span><span class="w"></span>
<span class="w"> </span><span class="k">while</span><span class="p">(</span><span class="n">V_OD_erg</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">SQL_NO_DATA</span><span class="p">)</span><span class="w"></span>
<span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="n">SQLGetData</span><span class="p">(</span><span class="n">V_OD_hstmt</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">SQL_C_SLONG</span><span class="p">,(</span><span class="n">SQLPOINTER</span><span class="p">)</span><span class="o">&amp;</span><span class="n">V_OD_id</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="n">NULL</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">&quot;SQLGetData ----ID = %d\n&quot;</span><span class="p">,</span><span class="n">V_OD_id</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="n">V_OD_erg</span><span class="o">=</span><span class="n">SQLFetch</span><span class="p">(</span><span class="n">V_OD_hstmt</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="p">};</span><span class="w"></span>
<span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">&quot;Done !\n&quot;</span><span class="p">);</span><span class="n">pgadmin</span><span class="w"></span>
<span class="w"> </span><span class="c1">// 16. Disconnect from the data source and release handles.</span><span class="w"></span>
<span class="w"> </span><span class="n">SQLFreeHandle</span><span class="p">(</span><span class="n">SQL_HANDLE_STMT</span><span class="p">,</span><span class="n">V_OD_hstmt</span><span class="p">);</span><span class="w"> </span>
<span class="w"> </span><span class="n">SQLDisconnect</span><span class="p">(</span><span class="n">V_OD_hdbc</span><span class="p">);</span><span class="w"> </span>
<span class="w"> </span><span class="n">SQLFreeHandle</span><span class="p">(</span><span class="n">SQL_HANDLE_DBC</span><span class="p">,</span><span class="n">V_OD_hdbc</span><span class="p">);</span><span class="w"> </span>
<span class="w"> </span><span class="n">SQLFreeHandle</span><span class="p">(</span><span class="n">SQL_HANDLE_ENV</span><span class="p">,</span><span class="w"> </span><span class="n">V_OD_Env</span><span class="p">);</span><span class="w"> </span>
<span class="w"> </span><span class="k">return</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="p">}</span><span class="w"></span>
</pre></div></td></tr></table></div>
</div>
</p></li></ol>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_01_0081.html">Using the JDBC and ODBC Drivers to Connect to a Cluster</a></div>
</div>
</div>