forked from docs/doc-exports
Reviewed-by: Pruthi, Vineet <vineet.pruthi@t-systems.com> Co-authored-by: luhuayi <luhuayi@huawei.com> Co-committed-by: luhuayi <luhuayi@huawei.com>
543 lines
81 KiB
HTML
543 lines
81 KiB
HTML
<a name="EN-US_TOPIC_0000002168065512"></a><a name="EN-US_TOPIC_0000002168065512"></a>
|
|
|
|
<h1 class="topictitle1">Using JDBC to Connect to a Cluster</h1>
|
|
<div id="body1492073089639"><p id="EN-US_TOPIC_0000002168065512__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_0000002168065512__text4401130115811">cloud</span> platform or over the Internet.</p>
|
|
<p id="EN-US_TOPIC_0000002168065512__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) 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_0000002168065512__note94497271018"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><p id="EN-US_TOPIC_0000002168065512__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_0000002168065512__p6347244311438">For details about how to use the JDBC API, see the official documentation.</p>
|
|
<div class="section" id="EN-US_TOPIC_0000002168065512__section1584133941514"><h4 class="sectiontitle">Prerequisites</h4><ul id="EN-US_TOPIC_0000002168065512__ul1633611521201"><li id="EN-US_TOPIC_0000002168065512__li83364521107">You have installed JDK 1.6 or later and configured environment variables.</li><li id="EN-US_TOPIC_0000002168065512__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_0000002168065512__p18628341151241">GaussDB(DWS) also supports open-source JDBC driver: PostgreSQL JDBC 9.3-1103 or later.</p>
|
|
</li><li id="EN-US_TOPIC_0000002168065512__li6710155017321">You have downloaded the SSL certificate file. For details, see <a href="dws_01_0038.html#EN-US_TOPIC_0000002167905932__li13478842115911">Downloading an SSL Certificate</a>.</li></ul>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000002168065512__section2993721114437"><h4 class="sectiontitle">Using a JDBC Driver to Connect to a Database</h4><p id="EN-US_TOPIC_0000002168065512__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_0000002168065512__ol195807631459"><li id="EN-US_TOPIC_0000002168065512__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_0000002168065512__ul22572261122934"><li id="EN-US_TOPIC_0000002168065512__li65793432122934">If yes, enable SSL connection (enabled by default) by referring to <a href="dws_01_0038.html#EN-US_TOPIC_0000002167905932__section131774823014">Configuring SSL Connection</a> and go to <a href="#EN-US_TOPIC_0000002168065512__li55435426144245">2</a>.</li><li id="EN-US_TOPIC_0000002168065512__li33835963201131">If no, disable SSL connection by referring to <a href="dws_01_0038.html#EN-US_TOPIC_0000002167905932__section131774823014">Configuring SSL Connection</a> and go to <a href="#EN-US_TOPIC_0000002168065512__li19193115114292">4</a>.</li></ul>
|
|
</p></li><li id="EN-US_TOPIC_0000002168065512__li55435426144245"><a name="EN-US_TOPIC_0000002168065512__li55435426144245"></a><a name="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_0000002168065512__li52456717144453"><span>Configure the certificate to enable SSL connection.</span><p><ol type="a" id="EN-US_TOPIC_0000002168065512__ol22252865144519"><li id="EN-US_TOPIC_0000002168065512__li17933203911019">Download the OpenSSL tool for Windows at <a href="https://slproweb.com/products/Win32OpenSSL.html" target="_blank" rel="noopener noreferrer">https://slproweb.com/products/Win32OpenSSL.html</a>. The latest stable version is 3.4. All earlier versions (including 1.1.1, 1.1.0, 1.0.2, 1.0.0, and 0.9.8) are not supported and should not be used. Download <strong id="EN-US_TOPIC_0000002168065512__b3862114672218">Win64 OpenSSL v3.4.0 Light</strong>.</li><li id="EN-US_TOPIC_0000002168065512__li19793203818129">Double-click the installation package <strong id="EN-US_TOPIC_0000002168065512__b1829152162211">Win64OpenSSL_Light-3.4.0.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 complete.<p id="EN-US_TOPIC_0000002168065512__p1765314621511"><span><img id="EN-US_TOPIC_0000002168065512__image1926551294811" src="figure/en-us_image_0000002167906108.png" width="342.81681000000003" height="261.81981" title="Click to enlarge" class="imgResize"></span></p>
|
|
</li><li id="EN-US_TOPIC_0000002168065512__li5429344201519">Install an environment variable. Click <strong id="EN-US_TOPIC_0000002168065512__b165522116239">Start</strong> in the lower left corner of the local PC, right-click <strong id="EN-US_TOPIC_0000002168065512__b836619285241">This PC</strong>, choose <strong id="EN-US_TOPIC_0000002168065512__b12579143118247">More</strong> > <strong id="EN-US_TOPIC_0000002168065512__b17995134210249">Properties</strong> > <strong id="EN-US_TOPIC_0000002168065512__b251610239268">View advanced system settings</strong>. Switch to the <strong id="EN-US_TOPIC_0000002168065512__b1860915232720">Advanced</strong> tab and click <strong id="EN-US_TOPIC_0000002168065512__b122515106275">Environment Variables</strong>.<p id="EN-US_TOPIC_0000002168065512__p641918506200"><span><img id="EN-US_TOPIC_0000002168065512__image1123835117201" src="figure/en-us_image_0000002203426793.png" width="315.21000000000004" height="386.97108099999997" title="Click to enlarge" class="imgResize"></span></p>
|
|
</li><li id="EN-US_TOPIC_0000002168065512__li2754348162014">In the <strong id="EN-US_TOPIC_0000002168065512__b197937214018">System variables</strong> area, double-click <strong id="EN-US_TOPIC_0000002168065512__b107261787403">Path</strong> and click <strong id="EN-US_TOPIC_0000002168065512__b116181844016">New</strong> in the window displayed. Add the OpenSSL <strong id="EN-US_TOPIC_0000002168065512__b1768844694018">bin</strong> path to the last line, for example, <strong id="EN-US_TOPIC_0000002168065512__b1021195064013">C:\Program Files\OpenSSL-Win64\bin</strong>, and click <strong id="EN-US_TOPIC_0000002168065512__b132901352144014">OK</strong>. Click <strong id="EN-US_TOPIC_0000002168065512__b563410591402">OK</strong> again and the variable is configured successfully.<p id="EN-US_TOPIC_0000002168065512__p15723144011227"><span><img id="EN-US_TOPIC_0000002168065512__image118861758131011" src="figure/en-us_image_0000002168065812.png" width="278.3025" height="215.99865000000003" title="Click to enlarge" class="imgResize"></span></p>
|
|
</li><li id="EN-US_TOPIC_0000002168065512__li8379608144519">Decompress the package to obtain the certificate file. Decompression path <strong id="EN-US_TOPIC_0000002168065512__b842352706182052">C:\</strong> is used as an example.<p id="EN-US_TOPIC_0000002168065512__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_0000002168065512__li34839599144529">Open <span class="parmname" id="EN-US_TOPIC_0000002168065512__parmname769647905182113"><b>Command Prompt</b></span> and switch to the <strong id="EN-US_TOPIC_0000002168065512__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_0000002168065512__screen95697417401"><strong id="EN-US_TOPIC_0000002168065512__b16125141013408">openssl</strong> <strong id="EN-US_TOPIC_0000002168065512__b11125111013408">x509</strong> <strong id="EN-US_TOPIC_0000002168065512__b20125710134018">-in</strong> <em id="EN-US_TOPIC_0000002168065512__i1612561014017">cacert.pem</em> <strong id="EN-US_TOPIC_0000002168065512__b5125510164014">-out</strong> <em id="EN-US_TOPIC_0000002168065512__i131259102408">cacert.crt.der</em> <strong id="EN-US_TOPIC_0000002168065512__b312515107402">-outform</strong> <em id="EN-US_TOPIC_0000002168065512__i9125121012409">der</em>
|
|
<strong id="EN-US_TOPIC_0000002168065512__b13125151024015">keytool</strong> <strong id="EN-US_TOPIC_0000002168065512__b212581013404">-keystore</strong> <em id="EN-US_TOPIC_0000002168065512__i1612531016403">mytruststore</em> <strong id="EN-US_TOPIC_0000002168065512__b16125191015406">-alias</strong> <em id="EN-US_TOPIC_0000002168065512__i201251310124010">cacert</em> <strong id="EN-US_TOPIC_0000002168065512__b212551024015">-import</strong> <strong id="EN-US_TOPIC_0000002168065512__b112521016404">-file</strong> <em id="EN-US_TOPIC_0000002168065512__i7125710104013">cacert.crt.der</em></pre>
|
|
<ul id="EN-US_TOPIC_0000002168065512__ul64135710144647"><li id="EN-US_TOPIC_0000002168065512__li30490779144647"><em id="EN-US_TOPIC_0000002168065512__i2614181085310">cacert.pem</em> indicates the root certificate obtained after decompression.</li><li id="EN-US_TOPIC_0000002168065512__li65590822144647"><em id="EN-US_TOPIC_0000002168065512__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_0000002168065512__li18609885144647"><em id="EN-US_TOPIC_0000002168065512__i125572235318">mytruststore</em> indicates the generated truststore name and <em id="EN-US_TOPIC_0000002168065512__i3257162295311">cacert</em> indicates the alias name. Both parameters can be modified.</li></ul>
|
|
<p id="EN-US_TOPIC_0000002168065512__p62569723103444">Enter the truststore password as prompted and answer <strong id="EN-US_TOPIC_0000002168065512__b299820132588">y</strong>.</p>
|
|
<p id="EN-US_TOPIC_0000002168065512__p5302164510543"></p>
|
|
</li><li id="EN-US_TOPIC_0000002168065512__li55155333144654">Convert the format of the client private key.<pre class="screen" id="EN-US_TOPIC_0000002168065512__screen144282314401"><strong id="EN-US_TOPIC_0000002168065512__b22021528144016">openssl</strong> <strong id="EN-US_TOPIC_0000002168065512__b3202428184017">pkcs12</strong> <strong id="EN-US_TOPIC_0000002168065512__b10202628174011">-export</strong> <strong id="EN-US_TOPIC_0000002168065512__b220232812409">-out</strong> <em id="EN-US_TOPIC_0000002168065512__i62028288400">client.pkcs12</em> <strong id="EN-US_TOPIC_0000002168065512__b14202728114016">-in</strong> <em id="EN-US_TOPIC_0000002168065512__i182025288408">client.crt</em> <strong id="EN-US_TOPIC_0000002168065512__b192021628184011">-inkey</strong> <em id="EN-US_TOPIC_0000002168065512__i132021728184016">client.key</em></pre>
|
|
<p id="EN-US_TOPIC_0000002168065512__p47819711142618">Enter the client private key password<span class="parmvalue" id="EN-US_TOPIC_0000002168065512__parmvalue125901923105711"><b> Gauss@MppDB</b></span>. Then enter and confirm the self-defined private key password. </p>
|
|
</li><li id="EN-US_TOPIC_0000002168065512__li20044828142823">Import the private key to the keystore.<pre class="screen" id="EN-US_TOPIC_0000002168065512__screen719516404408"><strong id="EN-US_TOPIC_0000002168065512__b463575017359">keytool</strong> <strong id="EN-US_TOPIC_0000002168065512__b5636195018351">-importkeystore</strong> <strong id="EN-US_TOPIC_0000002168065512__b0636550113512">-deststorepass</strong> <em id="EN-US_TOPIC_0000002168065512__i66361150163517">Gauss@MppDB</em><em id="EN-US_TOPIC_0000002168065512__i763615011354"></em> <strong id="EN-US_TOPIC_0000002168065512__b206369507358">-destkeystore</strong> <em id="EN-US_TOPIC_0000002168065512__i96361050173513">client.jks</em> <strong id="EN-US_TOPIC_0000002168065512__b36361050173510">-srckeystore</strong> <em id="EN-US_TOPIC_0000002168065512__i763755073518">client.pkcs12</em> <strong id="EN-US_TOPIC_0000002168065512__b4637195018358">-srcstorepass</strong> <em id="EN-US_TOPIC_0000002168065512__i12637165018357">Password</em> <strong id="EN-US_TOPIC_0000002168065512__b1363755093515">-srcstoretype</strong> <em id="EN-US_TOPIC_0000002168065512__i1063775093514">PKCS12</em> <strong id="EN-US_TOPIC_0000002168065512__b14637105043512">-alias</strong> <em id="EN-US_TOPIC_0000002168065512__i263715015358">1</em></pre>
|
|
<div class="note" id="EN-US_TOPIC_0000002168065512__note2026854941417"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><ul id="EN-US_TOPIC_0000002168065512__ul11952186477"><li id="EN-US_TOPIC_0000002168065512__li1595326578">In the preceding command, <em id="EN-US_TOPIC_0000002168065512__i1183183211314">Password</em> is an example. Replace it with the actual password.</li><li id="EN-US_TOPIC_0000002168065512__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_0000002168065512__b1533813261519">client.jks</strong> will be generated in <strong id="EN-US_TOPIC_0000002168065512__b271113341550">C:\dws_ssl_cert\sslcert</strong>.<p id="EN-US_TOPIC_0000002168065512__p88700141571"><span><img id="EN-US_TOPIC_0000002168065512__image108966211142" src="figure/en-us_image_0000002203426789.png" width="429.9225" height="18.210493" title="Click to enlarge" class="imgResize"></span></p>
|
|
<p id="EN-US_TOPIC_0000002168065512__p182682049202718"></p>
|
|
<p id="EN-US_TOPIC_0000002168065512__p142421818713"><span><img id="EN-US_TOPIC_0000002168065512__image012926153213" src="figure/en-us_image_0000002203426785.png"></span></p>
|
|
</li></ul>
|
|
</div></div>
|
|
</li></ol>
|
|
</p></li><li id="EN-US_TOPIC_0000002168065512__li19193115114292"><a name="EN-US_TOPIC_0000002168065512__li19193115114292"></a><a name="li19193115114292"></a><span>Download the driver package <strong id="EN-US_TOPIC_0000002168065512__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_0000002168065512__b665924017211">gsjdbc4.jar</strong> and <strong id="EN-US_TOPIC_0000002168065512__b1253124410217">gsjdbc200.jar</strong>. Use either of them as required.</span></li><li id="EN-US_TOPIC_0000002168065512__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_0000002168065512__p19218649143013">Take the Eclipse project as an example. Store the JAR file to the project directory, for example, the <strong id="EN-US_TOPIC_0000002168065512__b84235270694758">lib</strong> directory in the project directory. In the Eclipse project, right-click the JAR file in the <strong id="EN-US_TOPIC_0000002168065512__b84235270694834">lib</strong> directory and choose <strong id="EN-US_TOPIC_0000002168065512__b84235270694854">Build Path</strong> to reference the JAR file.</p>
|
|
<div class="fignone" id="EN-US_TOPIC_0000002168065512__fig18599113514410"><span class="figcap"><b>Figure 1 </b>Referencing a JAR file</span><br><span><img id="EN-US_TOPIC_0000002168065512__image16355726201812" src="figure/en-us_image_0000002168065816.png" width="465.5" height="469.48720700000007" title="Click to enlarge" class="imgResize"></span></div>
|
|
</p></li><li id="EN-US_TOPIC_0000002168065512__li51389053141123"><span>Load the driver.</span><p><p id="EN-US_TOPIC_0000002168065512__p6696698141143">The following methods are available:</p>
|
|
<ul id="EN-US_TOPIC_0000002168065512__ul38409173141159"><li id="EN-US_TOPIC_0000002168065512__li1918654141159">Using a code: <strong id="EN-US_TOPIC_0000002168065512__b842352706145014">Class.forName("org.postgresql.Driver");</strong></li><li id="EN-US_TOPIC_0000002168065512__li2181879814120">Using a parameter during the JVM startup: <strong id="EN-US_TOPIC_0000002168065512__b842352706145022">java -Djdbc.drivers=org.postgresql.Driver jdbctest</strong><div class="note" id="EN-US_TOPIC_0000002168065512__note141631220154715"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><p id="EN-US_TOPIC_0000002168065512__p816422004718">The JDBC driver package downloaded on GaussDB(DWS)<span id="EN-US_TOPIC_0000002168065512__ph336319250127">contains <strong id="EN-US_TOPIC_0000002168065512__b836319253123">gsjdbc.jar</strong></span>.</p>
|
|
<ul id="EN-US_TOPIC_0000002168065512__ul71640202478"><li id="EN-US_TOPIC_0000002168065512__li91651120184715"><strong id="EN-US_TOPIC_0000002168065512__b4975445174110">gsjdbc4.jar</strong>: The <strong id="EN-US_TOPIC_0000002168065512__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_0000002168065512__li23079860141231"><span>Call the <strong id="EN-US_TOPIC_0000002168065512__b10986429103715">DriverManager.getConnection()</strong> method of JDBC to connect to GaussDB(DWS) databases.</span><p><p id="EN-US_TOPIC_0000002168065512__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_0000002168065512__p52804988141856"><strong id="EN-US_TOPIC_0000002168065512__b472081619487">DriverManager.getConnection()</strong> methods:</p>
|
|
<ul id="EN-US_TOPIC_0000002168065512__ul63894597141935"><li id="EN-US_TOPIC_0000002168065512__li13909555141935">DriverManager.getConnection(String url);</li><li id="EN-US_TOPIC_0000002168065512__li59644909141935">DriverManager.getConnection(String url, Properties info);</li><li id="EN-US_TOPIC_0000002168065512__li31964983141935">DriverManager.getConnection(String url, String user, String password);</li></ul>
|
|
|
|
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" id="EN-US_TOPIC_0000002168065512__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_0000002168065512__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_0000002168065512__en-us_topic_0004406724_p2535073"><strong id="EN-US_TOPIC_0000002168065512__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_0000002168065512__en-us_topic_0004406724_p33599649"><strong id="EN-US_TOPIC_0000002168065512__b6851456142047">Description</strong></p>
|
|
</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody><tr id="EN-US_TOPIC_0000002168065512__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_0000002168065512__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_0000002168065512__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 Connection Address of a GaussDB(DWS) Cluster</a>.</p>
|
|
<p id="EN-US_TOPIC_0000002168065512__p524947173710">The URL format is as follows:</p>
|
|
<ul id="EN-US_TOPIC_0000002168065512__ude90174d20344cc1aa2bffac0ce922db"><li id="EN-US_TOPIC_0000002168065512__l9de386d881f2401da4ee43320fb31dc7">jdbc:postgresql:database</li><li id="EN-US_TOPIC_0000002168065512__l73b378cf34d34098a3c3f7f7a428a0f0">jdbc:postgresql://host/database</li><li id="EN-US_TOPIC_0000002168065512__l2d519f1cef1a4e90b2c85191716f6980">jdbc:postgresql://host:port/database</li><li id="EN-US_TOPIC_0000002168065512__li139771853413">jdbc:postgresql://host:port[,host:port][...]/database</li></ul>
|
|
<div class="note" id="EN-US_TOPIC_0000002168065512__note11251117103713"><span class="notetitle"> NOTE: </span><div class="notebody"><ul id="EN-US_TOPIC_0000002168065512__ul14251376376"><li id="EN-US_TOPIC_0000002168065512__li549985923318">If <strong id="EN-US_TOPIC_0000002168065512__b958416167579">gsjdbc200.jar</strong> is used, change <strong id="EN-US_TOPIC_0000002168065512__b15848164571">jdbc:postgresql</strong> to <strong id="EN-US_TOPIC_0000002168065512__b185855161577">jdbc:gaussdb</strong>.<ul id="EN-US_TOPIC_0000002168065512__ue24edf2cc0a9448495fbf4a286ba0e10"><li id="EN-US_TOPIC_0000002168065512__l817d6a9711c24629bb836d2812711c69"><strong id="EN-US_TOPIC_0000002168065512__b52756311812">database</strong> indicates the name of the database to be connected.</li><li id="EN-US_TOPIC_0000002168065512__lcdc7dc18e83e43d08a39fac766e1f87c"><strong id="EN-US_TOPIC_0000002168065512__b125312356436">host</strong> indicates the name or IP address of the database server. <span id="EN-US_TOPIC_0000002168065512__ph42541352434">If an ELB is bound to the cluster, set <strong id="EN-US_TOPIC_0000002168065512__b2254535144310">host</strong> to the IP address of the ELB.</span></li><li id="EN-US_TOPIC_0000002168065512__lb7a87e31c5f84c8b98d83b732a43f16e"><strong id="EN-US_TOPIC_0000002168065512__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_0000002168065512__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_0000002168065512__p168955922812"><a name="EN-US_TOPIC_0000002168065512__li14173145682818"></a><a name="li14173145682818"></a>Separate multiple pairs of IP addresses and ports by commas (,). Example: <strong id="EN-US_TOPIC_0000002168065512__b111316254505">jdbc:postgresql://10.10.0.13:8000,10.10.0.14:8000/database</strong></p>
|
|
</li></ul>
|
|
</li><li id="EN-US_TOPIC_0000002168065512__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_0000002168065512__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_0000002168065512__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_0000002168065512__a3fac73fcef9f445e90ab567819781679">Specifies database connection properties. Common properties include the following:</p>
|
|
<ul id="EN-US_TOPIC_0000002168065512__ue7508e5a1b3a4615a5eff8dc9eac753a"><li id="EN-US_TOPIC_0000002168065512__l95f308a3ce844132917dd5e8cb23952a"><strong id="EN-US_TOPIC_0000002168065512__b7603637143715">user</strong>: indicates the database user who creates the connection task. The value is of the string data type.</li><li id="EN-US_TOPIC_0000002168065512__lda3b1ec2df6a4266883da278e93624d6"><strong id="EN-US_TOPIC_0000002168065512__b12203239193711">password</strong>: indicates the password of the database user. The value is of the string data type.</li><li id="EN-US_TOPIC_0000002168065512__lc5eb481b22754604b1c4d476f1c2a7bd"><strong id="EN-US_TOPIC_0000002168065512__b5672144016377">ssl</strong>: indicates whether to use the SSL connection. The value is of the Boolean data type.</li><li id="EN-US_TOPIC_0000002168065512__li87792117464"><strong id="EN-US_TOPIC_0000002168065512__b187694310417">loggerLevel</strong>: indicates the log amount recorded in DriverManager for LogStream or LogWriter. The value is of the string data type. Currently, <strong id="EN-US_TOPIC_0000002168065512__b1725373861715">OFF</strong>, <strong id="EN-US_TOPIC_0000002168065512__b1525923811179">DEBUG</strong>, and <strong id="EN-US_TOPIC_0000002168065512__b12259238161719">TRACE</strong> are supported. <strong id="EN-US_TOPIC_0000002168065512__b13524448133617">DEBUG</strong> indicates that only logs of <strong id="EN-US_TOPIC_0000002168065512__b352516483366">DEBUG</strong> or a higher level are printed, generating little log information. <strong id="EN-US_TOPIC_0000002168065512__b115017256377">TRACE</strong> indicates that logs of the <strong id="EN-US_TOPIC_0000002168065512__b1515152512371">DEBUG</strong> and <strong id="EN-US_TOPIC_0000002168065512__b18152825103719">TRACE</strong> levels are displayed, generating detailed log information. The default value is <strong id="EN-US_TOPIC_0000002168065512__b530195863719">OFF</strong>, indicating that no logs will be displayed.</li><li id="EN-US_TOPIC_0000002168065512__lc810077008fa4d9798ae733ee402cccf">prepareThreshold: It is used to determine the execution times of PreparedStatement before the information is converted into prepared statements on the server. The value is of the integer data type. The default value is <strong id="EN-US_TOPIC_0000002168065512__b9534145719386">5</strong>.</li><li id="EN-US_TOPIC_0000002168065512__li62157221239"><strong id="EN-US_TOPIC_0000002168065512__b134851219420">batchMode</strong>: indicates whether to connect the database in batch mode. The value is of the Boolean data type.</li><li id="EN-US_TOPIC_0000002168065512__li198011645489"><strong id="EN-US_TOPIC_0000002168065512__b2803142193915">fetchsize</strong>: integer type. It indicates the default fetch size for statements in the created connection.</li><li id="EN-US_TOPIC_0000002168065512__li1580508012022"><strong id="EN-US_TOPIC_0000002168065512__b2177132610427">ApplicationName</strong>: indicates the application name. The value is of the string data type. The parameter is set to <strong id="EN-US_TOPIC_0000002168065512__b194561445423">PostgreSQL JDBC Driver</strong> by default.</li><li id="EN-US_TOPIC_0000002168065512__li20991068101733"><strong id="EN-US_TOPIC_0000002168065512__b1769414517437">allowReadOnly</strong>: indicates whether the read-only mode can be set for a connection. The value is of the Boolean data type. The default value is <strong id="EN-US_TOPIC_0000002168065512__b38625413455">false</strong>. If this parameter is not set to <strong id="EN-US_TOPIC_0000002168065512__b1455916588441">true</strong>, the <strong id="EN-US_TOPIC_0000002168065512__b142273233456">connection.setReadOnly</strong> statement will not take effect.</li><li id="EN-US_TOPIC_0000002168065512__li58920766163137"><strong id="EN-US_TOPIC_0000002168065512__b13612349104513">blobMode</strong>: indicates the data types to which a value is assigned using the setBinaryStream method. The value is of the string data type. If this parameter is set to <strong id="EN-US_TOPIC_0000002168065512__b1470611180914">on</strong>, a value is assigned to the BLOB data type. If this parameter is set to <strong id="EN-US_TOPIC_0000002168065512__b1681645016919">off,</strong> a value is assigned to the bytea data type. The default value is <strong id="EN-US_TOPIC_0000002168065512__b18200162181219">on</strong>.</li><li id="EN-US_TOPIC_0000002168065512__li852818415162"><strong id="EN-US_TOPIC_0000002168065512__b1596318894211">currentSchema</strong>: string type. It specifies the schema used for connecting to the database.</li><li id="EN-US_TOPIC_0000002168065512__li1432104511188"><strong id="EN-US_TOPIC_0000002168065512__b3049849978424">defaultQueryMetaData</strong>: Boolean. It specifies whether to query SQL metadata by default. The default value is <strong id="EN-US_TOPIC_0000002168065512__b1990296718424">false</strong>. After this function is enabled, raw data operations are supported. However, it is incompatible with the <strong id="EN-US_TOPIC_0000002168065512__b55009314123">create table as</strong> and <strong id="EN-US_TOPIC_0000002168065512__b15500173131215">select into</strong> operations in <strong id="EN-US_TOPIC_0000002168065512__b165018319121">PrepareStatement</strong>.</li><li id="EN-US_TOPIC_0000002168065512__li14943122819372">connectionExtraInfo: indicates whether the driver reports the driver deployment path and process owner to the database. The value is of the Boolean data type.<div class="note" id="EN-US_TOPIC_0000002168065512__note1565485013410"><span class="notetitle"> NOTE: </span><div class="notebody"><p id="EN-US_TOPIC_0000002168065512__p1165425053411">The value can be <strong id="EN-US_TOPIC_0000002168065512__b107621522194415">true</strong> or <strong id="EN-US_TOPIC_0000002168065512__b1476882294413">false</strong>. The default value is <strong id="EN-US_TOPIC_0000002168065512__b18768522204419">true</strong>. If <strong id="EN-US_TOPIC_0000002168065512__b81254181113123">connectionExtraInfo</strong> is set to <strong id="EN-US_TOPIC_0000002168065512__b992381508113123">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_0000002168065512__b314098062113123">connection_info</strong> parameter. In this case, you can query the information from <strong id="EN-US_TOPIC_0000002168065512__b1388375722113123">PG_STAT_ACTIVITY</strong> or <strong id="EN-US_TOPIC_0000002168065512__b1754555688113123">PGXC_STAT_ACTIVITY</strong>.</p>
|
|
</div></div>
|
|
</li><li id="EN-US_TOPIC_0000002168065512__li1550974375712"><strong id="EN-US_TOPIC_0000002168065512__b289815318529">TCP_KEEPIDLE=30</strong>: The detection starts after the connection is idle for 30s. This parameter is valid only when <strong id="EN-US_TOPIC_0000002168065512__b527375975219">tcpKeepAlive</strong> is set to <strong id="EN-US_TOPIC_0000002168065512__b93371514533">true</strong>.</li><li id="EN-US_TOPIC_0000002168065512__li0878125710575"><strong id="EN-US_TOPIC_0000002168065512__b121119307265237">TCP_KEEPCOUNT=9</strong>: A total of nine detections are performed. This parameter is valid only when <strong id="EN-US_TOPIC_0000002168065512__b12118167105315">tcpKeepAlive</strong> is set to <strong id="EN-US_TOPIC_0000002168065512__b1311916716530">true</strong>.</li></ul>
|
|
<ul id="EN-US_TOPIC_0000002168065512__ul135141659175716"><li id="EN-US_TOPIC_0000002168065512__li135147591575"><strong id="EN-US_TOPIC_0000002168065512__b13781128165311">TCP_KEEPINTERVAL=30</strong>: The detection interval is 30s. This parameter is valid only when <strong id="EN-US_TOPIC_0000002168065512__b8488121025312">tcpKeepAlive</strong> is set to <strong id="EN-US_TOPIC_0000002168065512__b1848971035314">true</strong>.</li><li id="EN-US_TOPIC_0000002168065512__li871818293582"><strong id="EN-US_TOPIC_0000002168065512__b13192118138">cnListRefreshSwitch</strong>: indicates whether JDBC automatically detects the live CN list. The value is of the string data type. If this parameter is set to <strong id="EN-US_TOPIC_0000002168065512__b88101510201418">on</strong>, the function of automatically detecting the live CN list is enabled. If this parameter is set to <strong id="EN-US_TOPIC_0000002168065512__b350151317149">off</strong>, the function is disabled. The default value is <strong id="EN-US_TOPIC_0000002168065512__b12649111512148">off</strong>.</li><li id="EN-US_TOPIC_0000002168065512__li177984811115"><strong id="EN-US_TOPIC_0000002168065512__b103903515993538">cnListRefreshDelay</strong>: specifies the start time for scanning the live CN list. This parameter is valid only when <strong id="EN-US_TOPIC_0000002168065512__b124845177593538">cnListRefreshSwitch</strong> is set to <strong id="EN-US_TOPIC_0000002168065512__b27383907893538">on</strong>. The value is of the integer data type. The default value is <strong id="EN-US_TOPIC_0000002168065512__b43770010174">1800000</strong>, in milliseconds. </li><li id="EN-US_TOPIC_0000002168065512__li1735182112419"><strong id="EN-US_TOPIC_0000002168065512__b152885761493538">cnListRefreshPeriod</strong>: specifies the interval for scanning the live CN list. This parameter is valid only when <strong id="EN-US_TOPIC_0000002168065512__b11324025593538">cnListRefreshSwitch</strong> is set to <strong id="EN-US_TOPIC_0000002168065512__b169574846293538">on</strong>. The value is of the integer data type. The default value is <strong id="EN-US_TOPIC_0000002168065512__b98151637172">1800000</strong>, in milliseconds. </li><li id="EN-US_TOPIC_0000002168065512__li5372159756"><strong id="EN-US_TOPIC_0000002168065512__b1114571016173">autoReconnect</strong>: indicates whether to enable automatic reconnection of database connections. The value is of the Boolean data type. If this parameter is set to <strong id="EN-US_TOPIC_0000002168065512__b11440182911910">true</strong>, the automatic reconnection is enabled. If this parameter is set to <strong id="EN-US_TOPIC_0000002168065512__b186651448161912">false</strong>, the automatic reconnection is disabled. The default value is <strong id="EN-US_TOPIC_0000002168065512__b78241356101914">false</strong>.</li><li id="EN-US_TOPIC_0000002168065512__li4862184216717"><strong id="EN-US_TOPIC_0000002168065512__b1069771314205">reConnectCount</strong>: specifies the number of automatic database reconnections. The value is of the integer data type. This parameter is valid only when <strong id="EN-US_TOPIC_0000002168065512__b54197325206">autoReconnect</strong> is set to <strong id="EN-US_TOPIC_0000002168065512__b12916123452019">true</strong>. The default value is <strong id="EN-US_TOPIC_0000002168065512__b136001837182118">10</strong>. If the number of reconnection attempts exceeds the configured value, the reconnection fails.</li><li id="EN-US_TOPIC_0000002168065512__li19606141820108"><strong id="EN-US_TOPIC_0000002168065512__b14672114211218">sslCrl</strong>: a string type that sets the path for the revoked certificate used by JDBC. The default value is <strong id="EN-US_TOPIC_0000002168065512__b16672114212217">null</strong>.</li></ul>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000002168065512__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_0000002168065512__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_0000002168065512__en-us_topic_0004406724_p4700076">Specifies the database user.</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="EN-US_TOPIC_0000002168065512__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_0000002168065512__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_0000002168065512__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_0000002168065512__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_0000002168065512__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">"org.postgresql.Driver"</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">"javax.net.ssl.trustStore"</span><span class="p">,</span><span class="w"> </span><span class="ss">"mytruststore"</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">"javax.net.ssl.keyStore"</span><span class="p">,</span><span class="w"> </span><span class="ss">"client.jks"</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">"javax.net.ssl.trustStorePassword"</span><span class="p">,</span><span class="w"> </span><span class="ss">"password"</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">"javax.net.ssl.keyStorePassword"</span><span class="p">,</span><span class="w"> </span><span class="ss">"password"</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">"user"</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">"password"</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">"ssl"</span><span class="p">,</span><span class="w"> </span><span class="ss">"true"</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">"jdbc:postgresql://"</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="ss">"10.10.0.13"</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">"8000"</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">"gaussdb"</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">"Connection succeed!"</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_0000002168065512__li57737405142236"><span>Run SQL statements.</span><p><ol type="a" id="EN-US_TOPIC_0000002168065512__ol4106272914244"><li id="EN-US_TOPIC_0000002168065512__li3008150414244">Run the following command to create a statement object:<div class="codecoloring" codetype="Java" id="EN-US_TOPIC_0000002168065512__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_0000002168065512__li30042520142412">Run the following command to execute the statement object:<div class="codecoloring" codetype="Java" id="EN-US_TOPIC_0000002168065512__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">"CREATE TABLE tab1(id INTEGER, name VARCHAR(32));"</span><span class="p">);</span>
|
|
</pre></div></td></tr></table></div>
|
|
</div>
|
|
</li><li id="EN-US_TOPIC_0000002168065512__li52424185142422">Run the following command to release the statement object:<div class="codecoloring" codetype="Java" id="EN-US_TOPIC_0000002168065512__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_0000002168065512__li642819315415"><span>Call <strong id="EN-US_TOPIC_0000002168065512__b842352706153452">close()</strong> to close the connection.</span></li></ol>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000002168065512__section12107104719399"><h4 class="sectiontitle">Sample Code</h4><p id="EN-US_TOPIC_0000002168065512__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_0000002168065512__note183201195518"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><p id="EN-US_TOPIC_0000002168065512__p6320181125511">Before completing the following example, you need to create a stored procedure. For details, see "Tutorial: Development Using JDBC or ODBC" in the <em id="EN-US_TOPIC_0000002168065512__i181008445361">Data Warehouse Service (DWS) Developer Guide</em>.</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000002168065512__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_0000002168065512__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></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">"org.postgresql.Driver"</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">"jdbc:postgresql://10.10.0.13:8000/database"</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">"Connection succeed!"</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">"CREATE TABLE customer_t1(c_customer_sk INTEGER, c_customer_name VARCHAR(32));"</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">"INSERT INTO customer_t1 VALUES (?,?)"</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"><</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">"data "</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">"UPDATE customer_t1 SET c_customer_name = ? WHERE c_customer_sk = 1"</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">"new Data"</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">"{? = CALL TESTPROC(?,?,?)}"</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">"The CallableStatment TESTPROC returns:"</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">"User"</span><span class="p">,</span><span class="w"> </span><span class="s">"Password"</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 GaussDB(DWS) Cluster</a></div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<script language="JavaScript">
|
|
<!--
|
|
image_size('.imgResize');
|
|
var msg_imageMax = "view original image";
|
|
var msg_imageClose = "close";
|
|
//--></script> |