doc-exports/docs/dws/umn/dws_01_0077.html
Lu, Huayi 95132e24fc DWS UMN 830.201_new version
Reviewed-by: Pruthi, Vineet <vineet.pruthi@t-systems.com>
Reviewed-by: Rechenburg, Matthias <matthias.rechenburg@t-systems.com>
Co-authored-by: Lu, Huayi <luhuayi@huawei.com>
Co-committed-by: Lu, Huayi <luhuayi@huawei.com>
2024-05-27 11:54:34 +00:00

550 lines
81 KiB
HTML

<a name="EN-US_TOPIC_0000001658895174"></a><a name="EN-US_TOPIC_0000001658895174"></a>
<h1 class="topictitle1">Using JDBC to Connect to a Cluster</h1>
<div id="body8662426"><p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_p8060118">In GaussDB(DWS), you can use a JDBC driver to connect to a database on Linux or Windows. The driver can connect to the database through an ECS on the <span id="EN-US_TOPIC_0000001658895174__text4401130115811">cloud</span> platform or over the Internet.</p>
<p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_p133847202030">When using the JDBC driver to connect to the data warehouse cluster, determine whether to enable SSL authentication. SSL authentication is used to encrypt communication data between the client and the server. It safeguards sensitive data transmitted over the Internet. You can download a self-signed certificate file on the GaussDB(DWS) management console. To make the certificate take effect, you must configure the client program using the OpenSSL tool and the Java keytool.</p>
<div class="note" id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_note94497271018"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_p444916277012">The SSL mode delivers higher security than the common mode. You are advised to enable SSL connection when using JDBC to connect to a GaussDB(DWS) cluster.</p>
</div></div>
<p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_p6347244311438">For details about how to use the JDBC API, see the official documentation.</p>
<div class="section" id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_section1584133941514"><h4 class="sectiontitle">Prerequisites</h4><ul id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_ul1633611521201"><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li83364521107">You have installed JDK 1.6 or later and configured environment variables.</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li2033616521704">You have downloaded the JDBC driver. For details, see <a href="dws_01_0032.html">Downloading the JDBC or ODBC Driver</a>.<p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_p18628341151241">GaussDB(DWS) also supports open-source JDBC driver: PostgreSQL JDBC 9.3-1103 or later.</p>
</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li6710155017321">You have downloaded the SSL certificate file. For details, see <a href="dws_01_0038.html#EN-US_TOPIC_0000001659054490__en-us_topic_0000001372520154_li13478842115911">Downloading an SSL Certificate</a>.</li></ul>
</div>
<div class="section" id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_section2993721114437"><h4 class="sectiontitle">Using a JDBC Driver to Connect to a Database</h4><p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_p79821246193913">The procedure for connecting to the database using a JDBC driver in a Linux environment is similar to that in a Windows environment. The following describes the connection procedure in a Windows environment.</p>
<ol id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_ol195807631459"><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li11791050122517"><span>Determine whether you want to use the SSL mode to connect to the GaussDB(DWS) cluster.</span><p><ul id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_ul22572261122934"><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li65793432122934">If yes, enable SSL connection by referring to <a href="dws_01_0038.html#EN-US_TOPIC_0000001659054490__en-us_topic_0000001372520154_section131774823014">Configuring SSL Connection</a>. SSL connection is enabled by default. Then go to <a href="#EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li55435426144245">2</a>.</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li33835963201131">If no, disable SSL connection by referring to <a href="dws_01_0038.html#EN-US_TOPIC_0000001659054490__en-us_topic_0000001372520154_section131774823014">Configuring SSL Connection</a> and go to <a href="#EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li19193115114292">4</a>.</li></ul>
</p></li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li55435426144245"><a name="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li55435426144245"></a><a name="en-us_topic_0000001372679694_li55435426144245"></a><span>(Optional) On Linux, use WinSCP to upload the downloaded SSL certificate file to the Linux environment.</span></li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li52456717144453"><span>Configure the certificate to enable SSL connection.</span><p><ol type="a" id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_ol22252865144519"><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li17933203911019">Download the OpenSSL tool for Windows. Download address: <a href="https://slproweb.com/products/Win32OpenSSL.html" target="_blank" rel="noopener noreferrer">https://slproweb.com/products/Win32OpenSSL.html</a>. Currently, OpenSSL 3.0.0 is not supported. Download <strong id="EN-US_TOPIC_0000001658895174__b182981052163013">Win64 OpenSSL v1.1.1w Light</strong>.</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li19793203818129">Double-click the installation package <strong id="EN-US_TOPIC_0000001658895174__b103271256193012">Win64OpenSSL_Light-1_1_1w.exe</strong> and install it to the default path on drive C. Copy the DLLs to the OpenSSL directory, as shown in the following figure. Retain the default settings in the remaining steps until the installation is successful.<p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_p1765314621511"><span><img id="EN-US_TOPIC_0000001658895174__image72728253311" src="figure/en-us_image_0000001735984732.png" title="Click to enlarge" class="imgResize"></span></p>
</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li5429344201519">Install an environment variable. Click <strong id="EN-US_TOPIC_0000001658895174__b165522116239">Start</strong> in the lower left corner of the local PC, right-click <strong id="EN-US_TOPIC_0000001658895174__b836619285241">This PC</strong>, choose <strong id="EN-US_TOPIC_0000001658895174__b12579143118247">More</strong> &gt; <strong id="EN-US_TOPIC_0000001658895174__b17995134210249">Properties</strong> &gt; <strong id="EN-US_TOPIC_0000001658895174__b251610239268">View advanced system settings</strong>. Switch to the <strong id="EN-US_TOPIC_0000001658895174__b1860915232720">Advanced</strong> tab and click <strong id="EN-US_TOPIC_0000001658895174__b122515106275">Environment Variables</strong>.<p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_p641918506200"><span><img id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_image1123835117201" src="figure/en-us_image_0000001759351881.png" title="Click to enlarge" class="imgResize"></span></p>
</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li2754348162014">In the <strong id="EN-US_TOPIC_0000001658895174__b197937214018">System variables</strong> area, double-click <strong id="EN-US_TOPIC_0000001658895174__b107261787403">Path</strong> and click <strong id="EN-US_TOPIC_0000001658895174__b116181844016">New</strong> in the window displayed. Add the OpenSSL <strong id="EN-US_TOPIC_0000001658895174__b1768844694018">bin</strong> path to the last line, for example, <strong id="EN-US_TOPIC_0000001658895174__b1021195064013">C:\Program Files\OpenSSL-Win64\bin</strong>, and click <strong id="EN-US_TOPIC_0000001658895174__b132901352144014">OK</strong>. Click <strong id="EN-US_TOPIC_0000001658895174__b563410591402">OK</strong> again and the variable is configured successfully.<p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_p15723144011227"><span><img id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_image202612428225" src="figure/en-us_image_0000001711592328.png" title="Click to enlarge" class="imgResize"></span></p>
</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li8379608144519">Decompress the package to obtain the certificate file. Decompression path <strong id="EN-US_TOPIC_0000001658895174__b842352706182052">C:\</strong> is used as an example.<p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_p48280457154633">You are advised to store the certificate file in a path of the English version and can specify the actual path when configuring the certificate. If the path is incorrect, a message stating that the file does not exist will be prompted.</p>
</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li34839599144529">Open <span class="parmname" id="EN-US_TOPIC_0000001658895174__parmname769647905182113"><b>Command Prompt</b></span> and switch to the <strong id="EN-US_TOPIC_0000001658895174__b1953293212467">C:\dws_ssl_cert\sslcert</strong> path. Run the following commands to import the root license to the truststore:<pre class="screen" id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_screen95697417401"><strong id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_b16125141013408">openssl</strong> <strong id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_b11125111013408">x509</strong> <strong id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_b20125710134018">-in</strong> <em id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_i1612561014017">cacert.pem</em> <strong id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_b5125510164014">-out</strong> <em id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_i131259102408">cacert.crt.der</em> <strong id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_b312515107402">-outform</strong> <em id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_i9125121012409">der</em>
<strong id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_b13125151024015">keytool</strong> <strong id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_b212581013404">-keystore</strong> <em id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_i1612531016403">mytruststore</em> <strong id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_b16125191015406">-alias</strong> <em id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_i201251310124010">cacert</em> <strong id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_b212551024015">-import</strong> <strong id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_b112521016404">-file</strong> <em id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_i7125710104013">cacert.crt.der</em></pre>
<ul id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_ul64135710144647"><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li30490779144647"><em id="EN-US_TOPIC_0000001658895174__i2614181085310">cacert.pem</em> indicates the root certificate obtained after decompression.</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li65590822144647"><em id="EN-US_TOPIC_0000001658895174__i136211655317">cacert.crt.der</em> indicates the generated intermediate file. You can store the file to another path and change the file name to your desired one.</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li18609885144647"><em id="EN-US_TOPIC_0000001658895174__i125572235318">mytruststore</em> indicates the generated truststore name and <em id="EN-US_TOPIC_0000001658895174__i3257162295311">cacert</em> indicates the alias name. Both parameters can be modified.</li></ul>
<p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_p62569723103444">Enter the truststore password as prompted and answer <strong id="EN-US_TOPIC_0000001658895174__b299820132588">y</strong>.</p>
<p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_p5302164510543"></p>
</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li55155333144654">Convert the format of the client private key.<pre class="screen" id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_screen144282314401"><strong id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_b22021528144016">openssl</strong> <strong id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_b3202428184017">pkcs12</strong> <strong id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_b10202628174011">-export</strong> <strong id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_b220232812409">-out</strong> <em id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_i62028288400">client.pkcs12</em> <strong id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_b14202728114016">-in</strong> <em id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_i182025288408">client.crt</em> <strong id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_b192021628184011">-inkey</strong> <em id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_i132021728184016">client.key</em></pre>
<p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_p47819711142618">Enter the client private key password<span class="parmvalue" id="EN-US_TOPIC_0000001658895174__parmvalue125901923105711"><b> Gauss@MppDB</b></span>. Then enter and confirm the self-defined private key password. </p>
</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li20044828142823">Import the private key to the keystore.<pre class="screen" id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_screen719516404408"><strong id="EN-US_TOPIC_0000001658895174__b463575017359">keytool</strong> <strong id="EN-US_TOPIC_0000001658895174__b5636195018351">-importkeystore</strong> <strong id="EN-US_TOPIC_0000001658895174__b0636550113512">-deststorepass</strong> <em id="EN-US_TOPIC_0000001658895174__i66361150163517">Gauss@MppDB</em><em id="EN-US_TOPIC_0000001658895174__i763615011354"></em> <strong id="EN-US_TOPIC_0000001658895174__b206369507358">-destkeystore</strong> <em id="EN-US_TOPIC_0000001658895174__i96361050173513">client.jks</em> <strong id="EN-US_TOPIC_0000001658895174__b36361050173510">-srckeystore</strong> <em id="EN-US_TOPIC_0000001658895174__i763755073518">client.pkcs12</em> <strong id="EN-US_TOPIC_0000001658895174__b4637195018358">-srcstorepass</strong> <em id="EN-US_TOPIC_0000001658895174__i12637165018357">Password</em> <strong id="EN-US_TOPIC_0000001658895174__b1363755093515">-srcstoretype</strong> <em id="EN-US_TOPIC_0000001658895174__i1063775093514">PKCS12</em> <strong id="EN-US_TOPIC_0000001658895174__b14637105043512">-alias</strong> <em id="EN-US_TOPIC_0000001658895174__i263715015358">1</em></pre>
<div class="note" id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_note2026854941417"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><ul id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_ul11952186477"><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li1595326578">In the preceding command, <em id="EN-US_TOPIC_0000001658895174__i1183183211314">Password</em> is an example. Replace it with the actual password.</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li19953166977">If information similar to the following is displayed and no error is reported, the import is successful. The target key file <strong id="EN-US_TOPIC_0000001658895174__b1533813261519">client.jks</strong> will be generated in <strong id="EN-US_TOPIC_0000001658895174__b271113341550">C:\dws_ssl_cert\sslcert</strong>.<p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_p88700141571"><span><img id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_image108966211142" src="figure/en-us_image_0000001711432840.png" title="Click to enlarge" class="imgResize"></span></p>
<p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_p182682049202718"></p>
<p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_p142421818713"><span><img id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_image012926153213" src="figure/en-us_image_0000001711592340.png"></span></p>
</li></ul>
</div></div>
</li></ol>
</p></li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li19193115114292"><a name="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li19193115114292"></a><a name="en-us_topic_0000001372679694_li19193115114292"></a><span>Download the driver package <strong id="EN-US_TOPIC_0000001658895174__b1217110121217">dws_8.1.x_jdbc_driver.zip</strong> and decompress it. There will be two JDBC drive JAR packages, <strong id="EN-US_TOPIC_0000001658895174__b665924017211">gsjdbc4.jar</strong> and <strong id="EN-US_TOPIC_0000001658895174__b1253124410217">gsjdbc200.jar</strong>. Use either of them as required.</span></li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li6445271046"><span>Add the JAR file to the application project so that applications can reference the JAR file.</span><p><p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_p19218649143013">Take the Eclipse project as an example. Store the JAR file to the project directory, for example, the <strong id="EN-US_TOPIC_0000001658895174__b84235270694758">lib</strong> directory in the project directory. In the Eclipse project, right-click the JAR file in the <strong id="EN-US_TOPIC_0000001658895174__b84235270694834">lib</strong> directory and choose <strong id="EN-US_TOPIC_0000001658895174__b84235270694854">Build Path</strong> to reference the JAR file.</p>
<div class="fignone" id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_fig18599113514410"><span class="figcap"><b>Figure 1 </b>Referencing a JAR file</span><br><span><img id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_image16355726201812" src="figure/en-us_image_0000001759511761.png" title="Click to enlarge" class="imgResize"></span></div>
</p></li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li51389053141123"><span>Load the driver.</span><p><p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_p6696698141143">The following methods are available:</p>
<ul id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_ul38409173141159"><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li1918654141159">Using a code: <strong id="EN-US_TOPIC_0000001658895174__b842352706145014">Class.forName("org.postgresql.Driver");</strong></li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li2181879814120">Using a parameter during the JVM startup: <strong id="EN-US_TOPIC_0000001658895174__b842352706145022">java -Djdbc.drivers=org.postgresql.Driver jdbctest</strong><div class="note" id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_note141631220154715"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_p816422004718">The JDBC driver package downloaded on GaussDB(DWS)<span id="EN-US_TOPIC_0000001658895174__ph1463975661011">contains <strong id="EN-US_TOPIC_0000001658895174__b1563975661017">gsjdbc.jar</strong></span>.</p>
<ul id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_ul71640202478"><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li91651120184715"><strong id="EN-US_TOPIC_0000001658895174__b4975445174110">gsjdbc4.jar</strong>: The <strong id="EN-US_TOPIC_0000001658895174__b19761456417">gsjdbc4.jar</strong> driver package is compatible with PostgreSQL. Its class names and class structures are the same as those of the PostgreSQL driver. Applications that run in PostgreSQL can be directly migrated to the current system.</li></ul>
</div></div>
</li></ul>
</p></li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li23079860141231"><span>Call the <strong id="EN-US_TOPIC_0000001658895174__b171713313115">DriverManager.getConnection()</strong> method of JDBC to connect to GaussDB(DWS) databases.</span><p><p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_p679822611551">The JDBC API does not provide the connection retry capability. You need to implement the retry processing in the service code.</p>
<p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_p52804988141856"><strong id="EN-US_TOPIC_0000001658895174__b472081619487">DriverManager.getConnection()</strong> methods:</p>
<ul id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_ul63894597141935"><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li13909555141935">DriverManager.getConnection(String url);</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li59644909141935">DriverManager.getConnection(String url, Properties info);</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li31964983141935">DriverManager.getConnection(String url, String user, String password);</li></ul>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_en-us_topic_0004406724_table51197761" frame="border" border="1" rules="all"><caption><b>Table 1 </b>Database connection parameters</caption><thead align="left"><tr id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_en-us_topic_0004406724_row61561215"><th align="left" class="cellrowborder" valign="top" width="13.44%" id="mcps1.3.6.3.7.2.4.2.3.1.1"><p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_en-us_topic_0004406724_p2535073"><strong id="EN-US_TOPIC_0000001658895174__b50623360142047">Parameter</strong></p>
</th>
<th align="left" class="cellrowborder" valign="top" width="86.56%" id="mcps1.3.6.3.7.2.4.2.3.1.2"><p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_en-us_topic_0004406724_p33599649"><strong id="EN-US_TOPIC_0000001658895174__b6851456142047">Description</strong></p>
</th>
</tr>
</thead>
<tbody><tr id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_en-us_topic_0004406724_row42455976"><td class="cellrowborder" valign="top" width="13.44%" headers="mcps1.3.6.3.7.2.4.2.3.1.1 "><p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_en-us_topic_0004406724_p57939919">url</p>
</td>
<td class="cellrowborder" valign="top" width="86.56%" headers="mcps1.3.6.3.7.2.4.2.3.1.2 "><p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_p20249474372">Specifies the database connection descriptor, which can be viewed on the management console. For details, see <a href="dws_01_0033.html">Obtaining the Cluster Connection Address</a>.</p>
<p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_p524947173710">The URL format is as follows:</p>
<ul id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_ude90174d20344cc1aa2bffac0ce922db"><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_l9de386d881f2401da4ee43320fb31dc7">jdbc:postgresql:database</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_l73b378cf34d34098a3c3f7f7a428a0f0">jdbc:postgresql://host/database</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_l2d519f1cef1a4e90b2c85191716f6980">jdbc:postgresql://host:port/database</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li139771853413">jdbc:postgresql://host:port[,host:port][...]/database</li></ul>
<div class="note" id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_note11251117103713"><span class="notetitle"> NOTE: </span><div class="notebody"><ul id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_ul14251376376"><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li549985923318">If <strong id="EN-US_TOPIC_0000001658895174__b9499145617717">gsjdbc200.jar</strong> is used, change <strong id="EN-US_TOPIC_0000001658895174__b149911561078">jdbc:postgresql</strong> to <strong id="EN-US_TOPIC_0000001658895174__b1349915619715">jdbc:gaussdb</strong>.<ul id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_ue24edf2cc0a9448495fbf4a286ba0e10"><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_l817d6a9711c24629bb836d2812711c69"><strong id="EN-US_TOPIC_0000001658895174__b52756311812">database</strong> indicates the name of the database to be connected.</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_lcdc7dc18e83e43d08a39fac766e1f87c"><strong id="EN-US_TOPIC_0000001658895174__b26551833204615">host</strong> indicates the name or IP address of the database server. <span id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_ph4224383429">If an ELB is bound to the cluster, set <strong id="EN-US_TOPIC_0000001658895174__b1065514337465">host</strong> to the IP address of the ELB.</span></li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_lb7a87e31c5f84c8b98d83b732a43f16e"><strong id="EN-US_TOPIC_0000001658895174__b61441551681">port</strong> indicates the port number of the database server. By default, the database running on port 8000 of the local host is connected.</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li14173145682818">Multiple IP addresses and ports can be configured. JDBC balances load by random access and failover, and will automatically ignore unreachable IP addresses.<p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_p168955922812"><a name="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li14173145682818"></a><a name="en-us_topic_0000001372679694_li14173145682818"></a>Separate multiple pairs of IP addresses and ports by commas (,). Example: <strong id="EN-US_TOPIC_0000001658895174__b111316254505">jdbc:postgresql://10.10.0.13:8000,10.10.0.14:8000/database</strong></p>
</li></ul>
</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li19012407317">If JDBC is used to connect to a cluster, only JDBC connection parameters can be configured in a cluster address. Variables cannot be added.</li></ul>
</div></div>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_en-us_topic_0004406724_row16695882"><td class="cellrowborder" valign="top" width="13.44%" headers="mcps1.3.6.3.7.2.4.2.3.1.1 "><p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_en-us_topic_0004406724_p14273515">info</p>
</td>
<td class="cellrowborder" valign="top" width="86.56%" headers="mcps1.3.6.3.7.2.4.2.3.1.2 "><p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_a3fac73fcef9f445e90ab567819781679">Specifies database connection properties. Common properties include the following:</p>
<ul id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_ue7508e5a1b3a4615a5eff8dc9eac753a"><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_l95f308a3ce844132917dd5e8cb23952a"><strong id="EN-US_TOPIC_0000001658895174__b84235270610304">user</strong>: a string type. It indicates the database user who creates the connection task.</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_lda3b1ec2df6a4266883da278e93624d6"><strong id="EN-US_TOPIC_0000001658895174__b842352706103312">password</strong>: a string type. It indicates the password of the database user.</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_lc5eb481b22754604b1c4d476f1c2a7bd"><strong id="EN-US_TOPIC_0000001658895174__b842352706103355">ssl</strong>: a boolean type. It indicates whether to use the SSL connection.</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li87792117464"><strong id="EN-US_TOPIC_0000001658895174__b940842917153">loggerLevel</strong>: string type. It indicates the volume of log data sent to the LogStream or LogWriter specified in the DriverManager. Currently, <strong id="EN-US_TOPIC_0000001658895174__b1725373861715">OFF</strong>, <strong id="EN-US_TOPIC_0000001658895174__b1525923811179">DEBUG</strong>, and <strong id="EN-US_TOPIC_0000001658895174__b12259238161719">TRACE</strong> are supported. <strong id="EN-US_TOPIC_0000001658895174__b13524448133617">DEBUG</strong> indicates that only logs of <strong id="EN-US_TOPIC_0000001658895174__b352516483366">DEBUG</strong> or a higher level are printed, generating little log information. <strong id="EN-US_TOPIC_0000001658895174__b115017256377">TRACE</strong> indicates that logs of the <strong id="EN-US_TOPIC_0000001658895174__b1515152512371">DEBUG</strong> and <strong id="EN-US_TOPIC_0000001658895174__b18152825103719">TRACE</strong> levels are displayed, generating detailed log information. The default value is <strong id="EN-US_TOPIC_0000001658895174__b530195863719">OFF</strong>, indicating that no logs will be displayed.</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_lc810077008fa4d9798ae733ee402cccf"><strong id="EN-US_TOPIC_0000001658895174__b15380111212385">prepareThreshold</strong>: integer type. It indicates the number of <strong id="EN-US_TOPIC_0000001658895174__b14336192814383">PreparedStatement</strong> executions required before requests are converted to prepared statements in servers. The default value is <strong id="EN-US_TOPIC_0000001658895174__b9534145719386">5</strong>.</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li62157221239"><strong id="EN-US_TOPIC_0000001658895174__b4975181363913">batchMode</strong>: boolean type. It indicates whether to connect the database in batch mode.</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li198011645489"><strong id="EN-US_TOPIC_0000001658895174__b2803142193915">fetchsize</strong>: integer type. It indicates the default fetch size for statements in the created connection.</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li1580508012022"><strong id="EN-US_TOPIC_0000001658895174__b17511758113914">ApplicationName</strong>: string type. It indicates an application name. The default value is <strong id="EN-US_TOPIC_0000001658895174__b1573719264015">PostgreSQL JDBC Driver</strong>.</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li20991068101733"><strong id="EN-US_TOPIC_0000001658895174__b91931830134019">allowReadOnly</strong>: boolean type. It indicates whether to enable the read-only mode for connection. The default value is <strong id="EN-US_TOPIC_0000001658895174__b8199113018402">false</strong>. If the value is not changed to <strong id="EN-US_TOPIC_0000001658895174__b520011309404">true</strong>, the execution of <strong id="EN-US_TOPIC_0000001658895174__b1220018308403">connection.setReadOnly</strong> does not take effect.</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li58920766163137"><strong id="EN-US_TOPIC_0000001658895174__b21661117114118">blobMode</strong>: string type. It is used to set the <strong id="EN-US_TOPIC_0000001658895174__b0477163417412">setBinaryStream</strong> method to assign values to different data types. The value <strong id="EN-US_TOPIC_0000001658895174__b717111175419">on</strong> indicates that values are assigned to the BLOB data type and <strong id="EN-US_TOPIC_0000001658895174__b717215178413">off</strong> indicates that values are assigned to the BYTEA data type. The default value is <strong id="EN-US_TOPIC_0000001658895174__b6172101715415">on</strong>.</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li852818415162"><strong id="EN-US_TOPIC_0000001658895174__b1596318894211">currentSchema</strong>: string type. It specifies the schema used for connecting to the database.</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li1432104511188"><strong id="EN-US_TOPIC_0000001658895174__b3049849978424">defaultQueryMetaData</strong>: Boolean. It specifies whether to query SQL metadata by default. The default value is <strong id="EN-US_TOPIC_0000001658895174__b1990296718424">false</strong>. After this function is enabled, raw data operations are supported. However, it is incompatible with the <strong id="EN-US_TOPIC_0000001658895174__b19597978888424">create table as</strong> and <strong id="EN-US_TOPIC_0000001658895174__b10735484628424">select into</strong> operations in <strong id="EN-US_TOPIC_0000001658895174__b8528495768424">PrepareStatement</strong>.</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li14943122819372"><strong id="EN-US_TOPIC_0000001658895174__b1865810170424">connectionExtraInfo</strong>: boolean type. This parameter indicates whether the JDBC driver reports the driver deployment path and process owner to the database.<div class="note" id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_note177665024418"><span class="notetitle"> NOTE: </span><div class="notebody"><p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_p197674018449">The value can be <strong id="EN-US_TOPIC_0000001658895174__b107621522194415">true</strong> or <strong id="EN-US_TOPIC_0000001658895174__b1476882294413">false</strong>. The default value is <strong id="EN-US_TOPIC_0000001658895174__b18768522204419">true</strong>. If <strong id="EN-US_TOPIC_0000001658895174__b105171238164417">connectionExtraInfo</strong> is set to <strong id="EN-US_TOPIC_0000001658895174__b951712384441">true</strong>, the JDBC driver reports the driver deployment path and process owner to the database and displays the information in the <strong id="EN-US_TOPIC_0000001658895174__b125182038194413">connection_info</strong> parameter. In this case, you can query the information from <strong id="EN-US_TOPIC_0000001658895174__b05187386441">PG_STAT_ACTIVITY</strong> or <strong id="EN-US_TOPIC_0000001658895174__b12518338104419">PGXC_STAT_ACTIVITY</strong>.</p>
</div></div>
</li></ul>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_en-us_topic_0004406724_row63199906"><td class="cellrowborder" valign="top" width="13.44%" headers="mcps1.3.6.3.7.2.4.2.3.1.1 "><p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_en-us_topic_0004406724_p5711640">user</p>
</td>
<td class="cellrowborder" valign="top" width="86.56%" headers="mcps1.3.6.3.7.2.4.2.3.1.2 "><p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_en-us_topic_0004406724_p4700076">Specifies the database user.</p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_en-us_topic_0004406724_row58485413"><td class="cellrowborder" valign="top" width="13.44%" headers="mcps1.3.6.3.7.2.4.2.3.1.1 "><p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_en-us_topic_0004406724_p66603434">password</p>
</td>
<td class="cellrowborder" valign="top" width="86.56%" headers="mcps1.3.6.3.7.2.4.2.3.1.2 "><p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_en-us_topic_0004406724_p22788321">Specifies the password of the database user.</p>
</td>
</tr>
</tbody>
</table>
</div>
<div class="p" id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_p61920487142254">The following describes the sample code used to encrypt the connection using the SSL certificate:<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_screen14403155610468"><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></pre></div></td><td class="code"><div><pre><span></span><span class="o">//</span><span class="w"> </span><span class="n">The</span><span class="w"> </span><span class="n">following</span><span class="w"> </span><span class="n">code</span><span class="w"> </span><span class="n">obtains</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="k">database</span><span class="w"> </span><span class="n">SSL</span><span class="w"> </span><span class="k">connection</span><span class="w"> </span><span class="k">operation</span><span class="w"> </span><span class="k">and</span><span class="w"> </span><span class="n">encapsulates</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="k">operation</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">an</span><span class="w"> </span><span class="n">API</span><span class="p">.</span>
<span class="k">public</span><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">Connection</span><span class="w"> </span><span class="n">GetConnection</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">username</span><span class="p">,</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">passwd</span><span class="p">)</span><span class="w"> </span><span class="err">{</span>
<span class="w"> </span><span class="o">//</span><span class="w"> </span><span class="n">Define</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">driver</span><span class="w"> </span><span class="k">class</span><span class="p">.</span>
<span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">driver</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ss">&quot;org.postgresql.Driver&quot;</span><span class="p">;</span>
<span class="w"> </span><span class="o">//</span><span class="k">Set</span><span class="w"> </span><span class="n">keyStore</span><span class="p">.</span>
<span class="w"> </span><span class="k">System</span><span class="p">.</span><span class="n">setProperty</span><span class="p">(</span><span class="ss">&quot;javax.net.ssl.trustStore&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">&quot;mytruststore&quot;</span><span class="p">);</span>
<span class="w"> </span><span class="k">System</span><span class="p">.</span><span class="n">setProperty</span><span class="p">(</span><span class="ss">&quot;javax.net.ssl.keyStore&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">&quot;client.jks&quot;</span><span class="p">);</span>
<span class="w"> </span><span class="k">System</span><span class="p">.</span><span class="n">setProperty</span><span class="p">(</span><span class="ss">&quot;javax.net.ssl.trustStorePassword&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">&quot;password&quot;</span><span class="p">);</span>
<span class="w"> </span><span class="k">System</span><span class="p">.</span><span class="n">setProperty</span><span class="p">(</span><span class="ss">&quot;javax.net.ssl.keyStorePassword&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">&quot;password&quot;</span><span class="p">);</span>
<span class="w"> </span><span class="n">Properties</span><span class="w"> </span><span class="n">props</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Properties</span><span class="p">();</span>
<span class="w"> </span><span class="n">props</span><span class="p">.</span><span class="n">setProperty</span><span class="p">(</span><span class="ss">&quot;user&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">username</span><span class="p">);</span>
<span class="w"> </span><span class="n">props</span><span class="p">.</span><span class="n">setProperty</span><span class="p">(</span><span class="ss">&quot;password&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">passwd</span><span class="p">);</span>
<span class="w"> </span><span class="n">props</span><span class="p">.</span><span class="n">setProperty</span><span class="p">(</span><span class="ss">&quot;ssl&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">&quot;true&quot;</span><span class="p">);</span>
<span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">url</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ss">&quot;jdbc:postgresql://&quot;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="ss">&quot;10.10.0.13&quot;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">':'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="ss">&quot;8000&quot;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'/'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="ss">&quot;postgresgaussdb&quot;</span><span class="p">;</span>
<span class="w"> </span><span class="k">Connection</span><span class="w"> </span><span class="n">conn</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">null</span><span class="p">;</span>
<span class="w"> </span><span class="n">try</span><span class="w"> </span><span class="err">{</span>
<span class="w"> </span><span class="o">//</span><span class="w"> </span><span class="k">Load</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">driver</span><span class="p">.</span>
<span class="w"> </span><span class="k">Class</span><span class="p">.</span><span class="n">forName</span><span class="p">(</span><span class="n">driver</span><span class="p">);</span>
<span class="w"> </span><span class="err">}</span><span class="w"> </span><span class="n">catch</span><span class="w"> </span><span class="p">(</span><span class="k">Exception</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="err">{</span>
<span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="n">printStackTrace</span><span class="p">();</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">null</span><span class="p">;</span>
<span class="w"> </span><span class="err">}</span>
<span class="w"> </span><span class="n">try</span><span class="w"> </span><span class="err">{</span>
<span class="w"> </span><span class="o">//</span><span class="w"> </span><span class="k">Create</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="k">connection</span><span class="p">.</span>
<span class="w"> </span><span class="n">conn</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">DriverManager</span><span class="p">.</span><span class="n">getConnection</span><span class="p">(</span><span class="n">url</span><span class="p">,</span><span class="w"> </span><span class="n">props</span><span class="p">);</span>
<span class="w"> </span><span class="k">System</span><span class="p">.</span><span class="k">out</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="ss">&quot;Connection succeed!&quot;</span><span class="p">);</span>
<span class="w"> </span><span class="err">}</span><span class="w"> </span><span class="n">catch</span><span class="w"> </span><span class="p">(</span><span class="k">SQLException</span><span class="w"> </span><span class="n">throwables</span><span class="p">)</span><span class="w"> </span><span class="err">{</span>
<span class="w"> </span><span class="n">throwables</span><span class="p">.</span><span class="n">printStackTrace</span><span class="p">();</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">null</span><span class="p">;</span>
<span class="w"> </span><span class="err">}</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">conn</span><span class="p">;</span>
<span class="err">}</span>
</pre></div></td></tr></table></div>
</div>
</div>
</p></li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li57737405142236"><span>Run SQL statements.</span><p><ol type="a" id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_ol4106272914244"><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li3008150414244">Run the following command to create a statement object:<div class="codecoloring" codetype="Java" id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_screen31528705142436"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="n">Statement</span><span class="w"> </span><span class="n">stmt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">con</span><span class="p">.</span><span class="na">createStatement</span><span class="p">();</span>
</pre></div></td></tr></table></div>
</div>
</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li30042520142412">Run the following command to execute the statement object:<div class="codecoloring" codetype="Java" id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_screen24378355142452"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="kt">int</span><span class="w"> </span><span class="n">rc</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">stmt</span><span class="p">.</span><span class="na">executeUpdate</span><span class="p">(</span><span class="s">&quot;CREATE TABLE tab1(id INTEGER, name VARCHAR(32));&quot;</span><span class="p">);</span>
</pre></div></td></tr></table></div>
</div>
</li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li52424185142422">Run the following command to release the statement object:<div class="codecoloring" codetype="Java" id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_screen3966348014252"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="n">stmt</span><span class="p">.</span><span class="na">close</span><span class="p">();</span>
</pre></div></td></tr></table></div>
</div>
</li></ol>
</p></li><li id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_li642819315415"><span>Call <strong id="EN-US_TOPIC_0000001658895174__b842352706153452">close()</strong> to close the connection.</span></li></ol>
</div>
<div class="section" id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_section12107104719399"><h4 class="sectiontitle">Sample Code</h4><p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_a531804ad67df4007b0b2308fd92611db">This code sample illustrates how to develop applications based on the JDBC API provided by GaussDB(DWS).</p>
<div class="note" id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_note183201195518"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><p id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_p6320181125511">Before completing the following example, you need to create a stored procedure. For details, see "Guide: JDBC- or ODBC-Based Development" in the <em id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_i181751858163510">Data Warehouse Service Developer Guide</em>.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_s9dfd0fc5586d464ebdf741ac5a35b8fc"><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></pre></div></td><td class="code"><div><pre><span></span><span class="k">create</span><span class="w"> </span><span class="k">or</span><span class="w"> </span><span class="k">replace</span><span class="w"> </span><span class="k">procedure</span><span class="w"> </span><span class="n">testproc</span><span class="w"> </span>
<span class="p">(</span>
<span class="w"> </span><span class="n">psv_in1</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="nb">integer</span><span class="p">,</span>
<span class="w"> </span><span class="n">psv_in2</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="nb">integer</span><span class="p">,</span>
<span class="w"> </span><span class="n">psv_inout</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="k">out</span><span class="w"> </span><span class="nb">integer</span>
<span class="p">)</span>
<span class="k">as</span>
<span class="k">begin</span>
<span class="w"> </span><span class="n">psv_inout</span><span class="w"> </span><span class="p">:</span><span class="o">=</span><span class="w"> </span><span class="n">psv_in1</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">psv_in2</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">psv_inout</span><span class="p">;</span>
<span class="k">end</span><span class="p">;</span>
<span class="o">/</span>
</pre></div></td></tr></table></div>
</div>
</div></div>
<div class="codecoloring" codetype="Java" id="EN-US_TOPIC_0000001658895174__en-us_topic_0000001372679694_screen19148144710390"><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>
<span class="normal"> 84</span>
<span class="normal"> 85</span>
<span class="normal"> 86</span>
<span class="normal"> 87</span>
<span class="normal"> 88</span>
<span class="normal"> 89</span>
<span class="normal"> 90</span>
<span class="normal"> 91</span>
<span class="normal"> 92</span>
<span class="normal"> 93</span>
<span class="normal"> 94</span>
<span class="normal"> 95</span>
<span class="normal"> 96</span>
<span class="normal"> 97</span>
<span class="normal"> 98</span>
<span class="normal"> 99</span>
<span class="normal">100</span>
<span class="normal">101</span>
<span class="normal">102</span>
<span class="normal">103</span>
<span class="normal">104</span>
<span class="normal">105</span>
<span class="normal">106</span>
<span class="normal">107</span>
<span class="normal">108</span>
<span class="normal">109</span>
<span class="normal">110</span>
<span class="normal">111</span>
<span class="normal">112</span>
<span class="normal">113</span>
<span class="normal">114</span>
<span class="normal">115</span>
<span class="normal">116</span>
<span class="normal">117</span>
<span class="normal">118</span>
<span class="normal">119</span>
<span class="normal">120</span>
<span class="normal">121</span>
<span class="normal">122</span>
<span class="normal">123</span>
<span class="normal">124</span>
<span class="normal">125</span>
<span class="normal">126</span>
<span class="normal">127</span>
<span class="normal">128</span>
<span class="normal">129</span>
<span class="normal">130</span>
<span class="normal">131</span>
<span class="normal">132</span>
<span class="normal">133</span>
<span class="normal">134</span>
<span class="normal">135</span>
<span class="normal">136</span>
<span class="normal">137</span>
<span class="normal">138</span>
<span class="normal">139</span>
<span class="normal">140</span>
<span class="normal">141</span>
<span class="normal">142</span>
<span class="normal">143</span>
<span class="normal">144</span>
<span class="normal">145</span>
<span class="normal">146</span>
<span class="normal">147</span>
<span class="normal">148</span>
<span class="normal">149</span>
<span class="normal">150</span>
<span class="normal">151</span>
<span class="normal">152</span>
<span class="normal">153</span>
<span class="normal">154</span>
<span class="normal">155</span>
<span class="normal">156</span>
<span class="normal">157</span>
<span class="normal">158</span>
<span class="normal">159</span>
<span class="normal">160</span>
<span class="normal">161</span>
<span class="normal">162</span>
<span class="normal">163</span>
<span class="normal">164</span>
<span class="normal">165</span>
<span class="normal">166</span>
<span class="normal">167</span>
<span class="normal">168</span>
<span class="normal">169</span></pre></div></td><td class="code"><div><pre><span></span><span class="c1">//DBtest.java</span>
<span class="c1">//gsjdbc4.jar is used as an example.</span>
<span class="c1">//Demonstrate the main steps for JDBC development, including creating databases, creating tables, and inserting data.</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.sql.Connection</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.sql.DriverManager</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.sql.PreparedStatement</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.sql.SQLException</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.sql.Statement</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.sql.CallableStatement</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.sql.Types</span><span class="p">;</span>
<span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">DBTest</span><span class="w"> </span><span class="p">{</span>
<span class="c1">//Create a database connection. Replace the following IP address and database with the actual database connection address and database name.</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="n">Connection</span><span class="w"> </span><span class="nf">GetConnection</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">username</span><span class="p">,</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">passwd</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">driver</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;org.postgresql.Driver&quot;</span><span class="p">;</span>
<span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">sourceURL</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;jdbc:postgresql://10.10.0.13:8000/database&quot;</span><span class="p">;</span>
<span class="w"> </span><span class="n">Connection</span><span class="w"> </span><span class="n">conn</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">null</span><span class="p">;</span>
<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="c1">// Load the database driver.</span>
<span class="w"> </span><span class="n">Class</span><span class="p">.</span><span class="na">forName</span><span class="p">(</span><span class="n">driver</span><span class="p">).</span><span class="na">newInstance</span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="n">Exception</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="na">printStackTrace</span><span class="p">();</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kc">null</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="c1">//Create a database connection.</span>
<span class="w"> </span><span class="n">conn</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">DriverManager</span><span class="p">.</span><span class="na">getConnection</span><span class="p">(</span><span class="n">sourceURL</span><span class="p">,</span><span class="w"> </span><span class="n">username</span><span class="p">,</span><span class="w"> </span><span class="n">passwd</span><span class="p">);</span>
<span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&quot;Connection succeed!&quot;</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="n">Exception</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="na">printStackTrace</span><span class="p">();</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kc">null</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">conn</span><span class="p">;</span>
<span class="w"> </span><span class="p">};</span>
<span class="w"> </span><span class="c1">//Run the common SQL statements to create table customer_t1.</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">CreateTable</span><span class="p">(</span><span class="n">Connection</span><span class="w"> </span><span class="n">conn</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">Statement</span><span class="w"> </span><span class="n">stmt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">null</span><span class="p">;</span>
<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">stmt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">conn</span><span class="p">.</span><span class="na">createStatement</span><span class="p">();</span>
<span class="w"> </span><span class="c1">//Run the common SQL statements.</span>
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">rc</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">stmt</span>
<span class="w"> </span><span class="p">.</span><span class="na">executeUpdate</span><span class="p">(</span><span class="s">&quot;CREATE TABLE customer_t1(c_customer_sk INTEGER, c_customer_name VARCHAR(32));&quot;</span><span class="p">);</span>
<span class="w"> </span><span class="n">stmt</span><span class="p">.</span><span class="na">close</span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="n">SQLException</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">stmt</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="kc">null</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">stmt</span><span class="p">.</span><span class="na">close</span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="n">SQLException</span><span class="w"> </span><span class="n">e1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">e1</span><span class="p">.</span><span class="na">printStackTrace</span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="na">printStackTrace</span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="c1">//Run the prepared statements and insert data in batches.</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">BatchInsertData</span><span class="p">(</span><span class="n">Connection</span><span class="w"> </span><span class="n">conn</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">PreparedStatement</span><span class="w"> </span><span class="n">pst</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">null</span><span class="p">;</span>
<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="c1">//Generate the prepared statements.</span>
<span class="w"> </span><span class="n">pst</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">conn</span><span class="p">.</span><span class="na">prepareStatement</span><span class="p">(</span><span class="s">&quot;INSERT INTO customer_t1 VALUES (?,?)&quot;</span><span class="p">);</span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">3</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="c1">//Add parameters.</span>
<span class="w"> </span><span class="n">pst</span><span class="p">.</span><span class="na">setInt</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">i</span><span class="p">);</span>
<span class="w"> </span><span class="n">pst</span><span class="p">.</span><span class="na">setString</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;data &quot;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">i</span><span class="p">);</span>
<span class="w"> </span><span class="n">pst</span><span class="p">.</span><span class="na">addBatch</span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="c1">//Execute batch processing.</span>
<span class="w"> </span><span class="n">pst</span><span class="p">.</span><span class="na">executeBatch</span><span class="p">();</span>
<span class="w"> </span><span class="n">pst</span><span class="p">.</span><span class="na">close</span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="n">SQLException</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">pst</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="kc">null</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">pst</span><span class="p">.</span><span class="na">close</span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="n">SQLException</span><span class="w"> </span><span class="n">e1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">e1</span><span class="p">.</span><span class="na">printStackTrace</span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="na">printStackTrace</span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="c1">//Run the precompiled statement to update the data.</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">ExecPreparedSQL</span><span class="p">(</span><span class="n">Connection</span><span class="w"> </span><span class="n">conn</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">PreparedStatement</span><span class="w"> </span><span class="n">pstmt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">null</span><span class="p">;</span>
<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">pstmt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">conn</span>
<span class="w"> </span><span class="p">.</span><span class="na">prepareStatement</span><span class="p">(</span><span class="s">&quot;UPDATE customer_t1 SET c_customer_name = ? WHERE c_customer_sk = 1&quot;</span><span class="p">);</span>
<span class="w"> </span><span class="n">pstmt</span><span class="p">.</span><span class="na">setString</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;new Data&quot;</span><span class="p">);</span>
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">rowcount</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">pstmt</span><span class="p">.</span><span class="na">executeUpdate</span><span class="p">();</span>
<span class="w"> </span><span class="n">pstmt</span><span class="p">.</span><span class="na">close</span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="n">SQLException</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">pstmt</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="kc">null</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">pstmt</span><span class="p">.</span><span class="na">close</span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="n">SQLException</span><span class="w"> </span><span class="n">e1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">e1</span><span class="p">.</span><span class="na">printStackTrace</span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="na">printStackTrace</span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">}</span>
<span class="c1">//Execute the storage procedure. </span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">ExecCallableSQL</span><span class="p">(</span><span class="n">Connection</span><span class="w"> </span><span class="n">conn</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">CallableStatement</span><span class="w"> </span><span class="n">cstmt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">null</span><span class="p">;</span>
<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span>
<span class="w"> </span><span class="n">cstmt</span><span class="o">=</span><span class="n">conn</span><span class="p">.</span><span class="na">prepareCall</span><span class="p">(</span><span class="s">&quot;{? = CALL TESTPROC(?,?,?)}&quot;</span><span class="p">);</span>
<span class="w"> </span><span class="n">cstmt</span><span class="p">.</span><span class="na">setInt</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">50</span><span class="p">);</span><span class="w"> </span>
<span class="w"> </span><span class="n">cstmt</span><span class="p">.</span><span class="na">setInt</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">20</span><span class="p">);</span>
<span class="w"> </span><span class="n">cstmt</span><span class="p">.</span><span class="na">setInt</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">90</span><span class="p">);</span>
<span class="w"> </span><span class="n">cstmt</span><span class="p">.</span><span class="na">registerOutParameter</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="n">Types</span><span class="p">.</span><span class="na">INTEGER</span><span class="p">);</span><span class="w"> </span><span class="c1">//Register a parameter of the out type. Its value is an integer.</span>
<span class="w"> </span><span class="n">cstmt</span><span class="p">.</span><span class="na">execute</span><span class="p">();</span>
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">out</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">cstmt</span><span class="p">.</span><span class="na">getInt</span><span class="p">(</span><span class="mi">4</span><span class="p">);</span><span class="w"> </span><span class="c1">//Obtain the out parameter.</span>
<span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&quot;The CallableStatment TESTPROC returns:&quot;</span><span class="o">+</span><span class="n">out</span><span class="p">);</span>
<span class="w"> </span><span class="n">cstmt</span><span class="p">.</span><span class="na">close</span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="n">SQLException</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">cstmt</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="kc">null</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">cstmt</span><span class="p">.</span><span class="na">close</span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="n">SQLException</span><span class="w"> </span><span class="n">e1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">e1</span><span class="p">.</span><span class="na">printStackTrace</span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="na">printStackTrace</span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span>
<span class="w"> </span><span class="cm">/**</span>
<span class="cm"> * Main program, which gradually invokes each static method.</span>
<span class="cm"> * @param args</span>
<span class="cm"> */</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="n">String</span><span class="o">[]</span><span class="w"> </span><span class="n">args</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="c1">//Create a database connection. Replace User and Password with the actual database user name and password.</span>
<span class="w"> </span><span class="n">Connection</span><span class="w"> </span><span class="n">conn</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">GetConnection</span><span class="p">(</span><span class="s">&quot;User&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Password&quot;</span><span class="p">);</span>
<span class="w"> </span><span class="c1">//Create a table.</span>
<span class="w"> </span><span class="n">CreateTable</span><span class="p">(</span><span class="n">conn</span><span class="p">);</span>
<span class="w"> </span><span class="c1">//Insert data in batches.</span>
<span class="w"> </span><span class="n">BatchInsertData</span><span class="p">(</span><span class="n">conn</span><span class="p">);</span>
<span class="w"> </span><span class="c1">//Run the precompiled statement to update the data.</span>
<span class="w"> </span><span class="n">ExecPreparedSQL</span><span class="p">(</span><span class="n">conn</span><span class="p">);</span>
<span class="w"> </span><span class="c1">//Execute the storage procedure. </span>
<span class="w"> </span><span class="n">ExecCallableSQL</span><span class="p">(</span><span class="n">conn</span><span class="p">);</span>
<span class="w"> </span><span class="c1">//Close the database connection.</span>
<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">conn</span><span class="p">.</span><span class="na">close</span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="n">SQLException</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="na">printStackTrace</span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</pre></div></td></tr></table></div>
</div>
</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>
<script language="JavaScript">
<!--
image_size('.imgResize');
var msg_imageMax = "view original image";
var msg_imageClose = "close";
//--></script>