独醒剑侠 發表於 2023-7-2 00:00:00

通过Qt连接OpenGauss数据库的详细教程

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li>
        1 安装软件</li><li>
         2 准备连接环境<ul class="second_class_ul"><li>
        2.1 修改数据库的pg_hba.conf文件</li><li>
        2.2 使用omm用户登陆数据库,给dbuser用户授权,并退出数据库</li><li>
        2.3 修改数据库监听地址</li></ul></li><li>
        3 windows下配置odbc数据源<ul class="second_class_ul"><li>
        3.1下载客户端gaussdb(for opengauss)驱动程序并进行安装</li><li>
        3.2 打开驱动管理器</li><li>
        3.3 配置数据源</li><li>
        3.4 验证并保存设置</li></ul></li><li>
        3 qt安装<ul class="second_class_ul"></ul></li><li>
        4 创建一个qt工程<ul class="second_class_ul"></ul></li><li>
        总结<ul class="second_class_ul"></ul></li></ul></div><div id="navcategory">
        <h5 class="catalogue">
                目录</h5>
        <ul class="first_class_ul">
<li>
                        1 安装软件
</li>
                <li>
                         2 准备连接环境
                        <ul class="second_class_ul">
<li>
                                        2.1 修改数据库的pg_hba.conf文件
</li>
                                <li>
                                        2.2 使用omm用户登陆数据库,给dbuser用户授权,并退出数据库
</li>
                                <li>
                                        2.3 修改数据库监听地址
</li>
                        </ul>
</li>
                <li>
                        3 windows下配置odbc数据源
                        <ul class="second_class_ul">
<li>
                                        3.1下载客户端gaussdb(for opengauss)驱动程序并进行安装
</li>
                                <li>
                                        3.2 打开驱动管理器
</li>
                                <li>
                                        3.3 配置数据源
</li>
                                <li>
                                        3.4 验证并保存设置
</li>
                        </ul>
</li>
                <li>
                        3 qt安装
                        <ul class="second_class_ul"></ul>
</li>
                <li>
                        4 创建一个qt工程
                        <ul class="second_class_ul"></ul>
</li>
                <li>
                        总结
                        <ul class="second_class_ul"></ul>
</li>
        </ul>
</div>
<p class="maodian">
        </p>
<p class="maodian"></p><h2>
        1 安装软件</h2>
<ul>
<li>
                qt-opensource-windows-x86-5.14.2.exe(之前的版本可能不行,安装过程中必须包含mingw64)</li>
        <li>
                opengauss</li>
        <li>
                odbc</li>
</ul>
<p class="maodian">
        </p>
<p class="maodian"></p><h2>
         2 准备连接环境</h2>
<p>
        在opengauss所在的root环境下执行下列步骤</p>
<p class="maodian">
        </p>
<p class="maodian"></p><h3>
        2.1 修改数据库的pg_hba.conf文件</h3>
<p>
        在gs_home中查找pg_hba.conf文件,本实验中数据库gs_home设置的为/gaussdb/data/db1,实际操作中gs_home地址可以查看安装时的配置文件:&lt; param name=“datanode1” value="/gaussdb/data/db1" /&gt;。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlightersql" id="highlighter_512602">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="sql plain">cd /gaussdb/data/db1</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="sql plain">vi pg_hba.conf</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        输入“:90”找到对应位置,然后输入“i”切换到insert模式,将“host all all 192.168.0.132/32 trust”修改为“host all all 192.168.0.132/32 sha256”。</p>
<p>
        将以下内容添加进pg_hba.conf文件,完成后按下“esc”键,退出insert模式,输入“:wq”后回车保存。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlightersql" id="highlighter_45993">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="sql plain"># ipv4 </code><code class="sql keyword">local</code> <code class="sql plain">connections:</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="sql plain">host    </code><code class="sql color1">all</code>             <code class="sql color1">all</code>             <code class="sql plain">127.0.0.1/32            trust</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="sql plain">host    </code><code class="sql color1">all</code>    <code class="sql color1">all</code>    <code class="sql plain">192.168.0.19/32    sha256</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="sql plain">host </code><code class="sql color1">all</code> <code class="sql color1">all</code> <code class="sql plain">0.0.0.0/0 sha256</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="sql plain"># ipv6 </code><code class="sql keyword">local</code> <code class="sql plain">connections:</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="sql plain">host    </code><code class="sql color1">all</code>             <code class="sql color1">all</code>             <code class="sql plain">::1/128                 trust</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        使用omm用户登陆,使用gs_ctl将策略生效。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlightersql" id="highlighter_645646">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="sql plain">su - omm</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="sql plain">gs_ctl reload -d /gaussdb/data/db1/</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        返回结果为:</p>
<blockquote>
        <p>
                []: gs_ctl reload ,datadir is -d "/gaussdb/data/db1"<br>
                server signaled</p>
</blockquote>
<p>
        注:如果之前没有启动过数据库,返回结果如下,继续操作即可:</p>
<blockquote>
        <p>
                []: gs_ctl reload ,datadir is /gaussdb/data/db1<br>
                []:  pid file "/gaussdb/data/db1/postmaster.pid" does not exist<br>
                []: is server running?</p>
</blockquote>
<p class="maodian">
        </p>
<p class="maodian"></p><h3>
        2.2 使用omm用户登陆数据库,给dbuser用户授权,并退出数据库</h3>
<div class="jb51code">
        <div>
                <div class="syntaxhighlightersql" id="highlighter_859228">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="sql plain">gsql -d postgres -p 26000 -r</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                         </div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="sql plain">postgres=# </code><code class="sql keyword">alter</code> <code class="sql plain">role dbuser sysadmin;</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="sql keyword">alter</code> <code class="sql plain">role</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                         </div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="sql plain">postgres=# \q</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p class="maodian">
        </p>
<p class="maodian"></p><h3>
        2.3 修改数据库监听地址</h3>
<p>
        在gs_home中,本实验中数据库gs_home设置的为/gaussdb/data/db1。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlightersql" id="highlighter_823633">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="sql plain">cd /gaussdb/data/db1</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="sql plain">vi postgresql.conf</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        输入“:60”找到对应位置,然后输入“i”切换到insert模式,将listen_addresses的值修改成为*,修改后按下“esc”键,退出insert模式,输入“:wq”后回车保存。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlightersql" id="highlighter_490051">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="sql plain">#listen_addresses = </code><code class="sql string">'192.168.0.19'</code>              <code class="sql plain"># what ip address(es) </code><code class="sql keyword">to</code> <code class="sql plain">listen </code><code class="sql keyword">on</code><code class="sql plain">;</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="sql plain">listen_addresses = </code><code class="sql string">'*'</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        修改完成后重启数据库生效(-d后面的数据库默认路径,需要根据实际情况进行修改)。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlightersql" id="highlighter_47599">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="sql plain">gs_ctl restart -d /gaussdb/data/db1/</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p class="maodian">
        </p>
<p class="maodian"></p><h2>
        3 windows下配置odbc数据源</h2>
<p>
        windows操作系统自带odbc数据源管理器,无需用户手动安装管理器便可直接进行配置。</p>
<p class="maodian">
        </p>
<p class="maodian"></p><h3>
        3.1下载客户端gaussdb(for opengauss)驱动程序并进行安装</h3>
<p>
        下载地址:gaussdb驱动程序<br>
        在本地(例如d:/download)下载zip文件后进行解压缩,解压缩后文件如下。<br><img title="通过Qt连接OpenGauss数据库的详细教程" alt="通过Qt连接OpenGauss数据库的详细教程" src="https://zhuji.jb51.net/uploads/img/202305/d8318fd93970464c3220082b3c457a5e.jpg"></p>
<p>
        由于本实验opengauss安装在ecs(openeuler arm)上,所以进入euler2.8_arm_64文件夹,显示如下:<br><img title="通过Qt连接OpenGauss数据库的详细教程" alt="通过Qt连接OpenGauss数据库的详细教程" src="https://zhuji.jb51.net/uploads/img/202305/407acc588ff0b0fdc2909fc2796d675b.jpg"></p>
<p>
        解压缩gaussdb-kernel-v500r001c10-windows-odbc.tar.gz文件,显示如下:</p>
<p>
        <img title="通过Qt连接OpenGauss数据库的详细教程" alt="通过Qt连接OpenGauss数据库的详细教程" src="https://zhuji.jb51.net/uploads/img/202305/c3ebfc42b1223cea08a33748e14d8c1f.jpg"></p>
<p>
        点击psqlodbc_x86.msi进行安装:</p>
<p>
        <img title="通过Qt连接OpenGauss数据库的详细教程" alt="通过Qt连接OpenGauss数据库的详细教程" src="https://zhuji.jb51.net/uploads/img/202305/00c23d76c6be0e029b813f42e0de8327.jpg"></p>
<p>
        默认设置,直到安装完毕。</p>
<p class="maodian">
        </p>
<p class="maodian"></p><h3>
        3.2 打开驱动管理器</h3>
<p>
        在配置数据源时,请使用对应的驱动管理器(假设操作系统安装盘符为c盘,如果是其他盘符,请对路径做相应修改):<br>
        64位操作系统上进行64位程序开发,安装64位驱动程序后,使用64位的驱动管理器:c:\windows\system32\odbcad32.exe 或者直接使用“控制面板 &gt; 管理工具 &gt; odbc 数据源(64 位)。</p>
<p>
        <img title="通过Qt连接OpenGauss数据库的详细教程" alt="通过Qt连接OpenGauss数据库的详细教程" src="https://zhuji.jb51.net/uploads/img/202305/d1095a10d4092dec5923e5cd210d30b2.jpg"></p>
<p class="maodian">
        </p>
<p class="maodian"></p><h3>
        3.3 配置数据源</h3>
<p>
        在打开的驱动管理器上,选择“用户dsn &gt; 添加 &gt; postgresql unicode(x64)”,然后进行配置:</p>
<p>
        <img title="通过Qt连接OpenGauss数据库的详细教程" alt="通过Qt连接OpenGauss数据库的详细教程" src="https://zhuji.jb51.net/uploads/img/202305/1268d5ca39f45257fe58de113c788b97.jpg"><img title="通过Qt连接OpenGauss数据库的详细教程" alt="通过Qt连接OpenGauss数据库的详细教程" src="https://zhuji.jb51.net/uploads/img/202305/4283595d58ca1543be4532171e5cfb1e.jpg"><br><img title="通过Qt连接OpenGauss数据库的详细教程" alt="通过Qt连接OpenGauss数据库的详细教程" src="https://zhuji.jb51.net/uploads/img/202305/8c1939f60741a6f67d1475cbfee0beed.jpg"></p>
<p>
        data source:opengauss (数据源名称,可以自定义)。<br>
        database:postgres (<strong>需要连接的datebase名称</strong>)。<br>
        server:opengauss数据库服务器的公网ip,请根据实际情况填写。<br>
        pot:26000 (端口号)。<br>
        user name:dbuser (连接数据库的用户名,不能使用omm用户,需要在数据库中创建)<br>
        password:dbuser用户的密码,请根据实际情况填写。</p>
<p class="maodian">
        </p>
<p class="maodian"></p><h3>
        3.4 验证并保存设置</h3>
<p>
        点击test,显示 connection successful 表示设置成功:</p>
<p>
        <img title="通过Qt连接OpenGauss数据库的详细教程" alt="通过Qt连接OpenGauss数据库的详细教程" src="https://zhuji.jb51.net/uploads/img/202305/6376943eced18aab2efef74e816dab33.jpg"></p>
<p>
        点击保存:</p>
<p>
        <img title="通过Qt连接OpenGauss数据库的详细教程" alt="通过Qt连接OpenGauss数据库的详细教程" src="https://zhuji.jb51.net/uploads/img/202305/3afbbf1a4694af9f908c6b704a70857f.jpg"><br><img title="通过Qt连接OpenGauss数据库的详细教程" alt="通过Qt连接OpenGauss数据库的详细教程" src="https://zhuji.jb51.net/uploads/img/202305/a2c34444407fddba7713379784047258.jpg"></p>
<p>
        配置成功!</p>
<p class="maodian">
        </p>
<p class="maodian"></p><h2>
        3 qt安装</h2>
<p>
        下载好 qt-opensource-windows-x86-5.14.2.exe后,无脑next就行。但有一点需要注意。打勾的必须选上!打勾的必须选上!打勾的必须选上!</p>
<p>
        <img title="通过Qt连接OpenGauss数据库的详细教程" alt="通过Qt连接OpenGauss数据库的详细教程" src="https://zhuji.jb51.net/uploads/img/202305/f0e1d68c15ae75bc6d5089f1a4255628.jpg"></p>
<p class="maodian">
        </p>
<p class="maodian"></p><h2>
        4 创建一个qt工程</h2>
<p>
        不会创建的童鞋可以参考qt创建工程教程。<br><strong>注意!kit必须选64bit的</strong></p>
<p>
        <img title="通过Qt连接OpenGauss数据库的详细教程" alt="通过Qt连接OpenGauss数据库的详细教程" src="https://zhuji.jb51.net/uploads/img/202305/5a94d33dc6ae6ed5b2f83a5daac8160f.jpg"></p>
<p>
        为了使用sql,还必须在<code>xxx.pro</code>下面添加:</p>
<blockquote>
        <p>
                qt += sql</p>
</blockquote>
<p>
        接下来就可以愉快的测试了!<br>
        修改<code>main.cpp</code>文件,代码如下:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlightersql" id="highlighter_672113">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                        <div class="line number7 index6 alt2">
                                                                7</div>
                                                        <div class="line number8 index7 alt1">
                                                                8</div>
                                                        <div class="line number9 index8 alt2">
                                                                9</div>
                                                        <div class="line number10 index9 alt1">
                                                                10</div>
                                                        <div class="line number11 index10 alt2">
                                                                11</div>
                                                        <div class="line number12 index11 alt1">
                                                                12</div>
                                                        <div class="line number13 index12 alt2">
                                                                13</div>
                                                        <div class="line number14 index13 alt1">
                                                                14</div>
                                                        <div class="line number15 index14 alt2">
                                                                15</div>
                                                        <div class="line number16 index15 alt1">
                                                                16</div>
                                                        <div class="line number17 index16 alt2">
                                                                17</div>
                                                        <div class="line number18 index17 alt1">
                                                                18</div>
                                                        <div class="line number19 index18 alt2">
                                                                19</div>
                                                        <div class="line number20 index19 alt1">
                                                                20</div>
                                                        <div class="line number21 index20 alt2">
                                                                21</div>
                                                        <div class="line number22 index21 alt1">
                                                                22</div>
                                                        <div class="line number23 index22 alt2">
                                                                23</div>
                                                        <div class="line number24 index23 alt1">
                                                                24</div>
                                                        <div class="line number25 index24 alt2">
                                                                25</div>
                                                        <div class="line number26 index25 alt1">
                                                                26</div>
                                                        <div class="line number27 index26 alt2">
                                                                27</div>
                                                        <div class="line number28 index27 alt1">
                                                                28</div>
                                                        <div class="line number29 index28 alt2">
                                                                29</div>
                                                        <div class="line number30 index29 alt1">
                                                                30</div>
                                                        <div class="line number31 index30 alt2">
                                                                31</div>
                                                        <div class="line number32 index31 alt1">
                                                                32</div>
                                                        <div class="line number33 index32 alt2">
                                                                33</div>
                                                        <div class="line number34 index33 alt1">
                                                                34</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="sql plain">#include </code><code class="sql string">"gsql.h"</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="sql plain">#include &lt;qsqldatabase&gt;</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="sql plain">#include &lt;qstringlist&gt;</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="sql plain">#include &lt;qdebug&gt;</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="sql plain">#include &lt;qmessagebox&gt;</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="sql plain">#include &lt;qtsql&gt;</code>
</div>
                                                                <div class="line number7 index6 alt2">
                                                                        <code class="sql plain">#include &lt;qsqlquery&gt;</code>
</div>
                                                                <div class="line number8 index7 alt1">
                                                                        <code class="sql plain">#include &lt;qapplication&gt;</code>
</div>
                                                                <div class="line number9 index8 alt2">
                                                                        <code class="sql plain">#include &lt;iostream&gt;</code>
</div>
                                                                <div class="line number10 index9 alt1">
                                                                        <code class="sql plain">using namespace std;</code>
</div>
                                                                <div class="line number11 index10 alt2">
                                                                         </div>
                                                                <div class="line number12 index11 alt1">
                                                                        <code class="sql keyword">int</code> <code class="sql plain">main(</code><code class="sql keyword">int</code> <code class="sql plain">argc, </code><code class="sql keyword">char</code> <code class="sql plain">*argv[])</code>
</div>
                                                                <div class="line number13 index12 alt2">
                                                                        <code class="sql plain">{</code>
</div>
                                                                <div class="line number14 index13 alt1">
                                                                        <code class="sql spaces">    </code><code class="sql plain">qapplication a(argc, argv);</code>
</div>
                                                                <div class="line number15 index14 alt2">
                                                                        <code class="sql spaces">    </code><code class="sql plain">gsql w;</code>
</div>
                                                                <div class="line number16 index15 alt1">
                                                                        <code class="sql spaces">    </code><code class="sql plain">w.show();</code>
</div>
                                                                <div class="line number17 index16 alt2">
                                                                        <code class="sql spaces">    </code><code class="sql plain">qsqldatabase db = qsqldatabase::adddatabase(</code><code class="sql string">"qodbc"</code><code class="sql plain">);</code>
</div>
                                                                <div class="line number18 index17 alt1">
                                                                        <code class="sql spaces">    </code><code class="sql plain">qstring dsn = qstring::fromlocal8bit(</code><code class="sql string">"xxxx"</code><code class="sql plain">);//你在2.3中配置的data source,例如opengauss</code>
</div>
                                                                <div class="line number19 index18 alt2">
                                                                        <code class="sql spaces">    </code><code class="sql plain">qdebug()&lt;&lt;</code><code class="sql string">"odbc connect?"</code><code class="sql plain">&lt;&lt;db.isvalid();</code>
</div>
                                                                <div class="line number20 index19 alt1">
                                                                        <code class="sql spaces">    </code><code class="sql plain">db.sethostname(</code><code class="sql string">"xxxx.xxxx.xxxx.xxxx"</code><code class="sql plain">);//你的ip地址</code>
</div>
                                                                <div class="line number21 index20 alt2">
                                                                        <code class="sql spaces">    </code><code class="sql plain">db.setdatabasename(dsn);</code>
</div>
                                                                <div class="line number22 index21 alt1">
                                                                        <code class="sql spaces">    </code><code class="sql plain">db.setusername(</code><code class="sql string">"xxx"</code><code class="sql plain">); //用户名</code>
</div>
                                                                <div class="line number23 index22 alt2">
                                                                        <code class="sql spaces">    </code><code class="sql plain">db.setpassword(</code><code class="sql string">"xxxx"</code><code class="sql plain">);//密码</code>
</div>
                                                                <div class="line number24 index23 alt1">
                                                                        <code class="sql spaces">    </code><code class="sql plain">db.setport(26000); //opengauss端口号为26000</code>
</div>
                                                                <div class="line number25 index24 alt2">
                                                                        <code class="sql spaces">    </code><code class="sql plain">if(!db.</code><code class="sql keyword">open</code><code class="sql plain">())</code>
</div>
                                                                <div class="line number26 index25 alt1">
                                                                        <code class="sql spaces">    </code><code class="sql plain">{</code>
</div>
                                                                <div class="line number27 index26 alt2">
                                                                        <code class="sql spaces">        </code><code class="sql plain">qdebug()&lt;&lt;db.lasterror().text();</code>
</div>
                                                                <div class="line number28 index27 alt1">
                                                                        <code class="sql spaces">        </code><code class="sql plain">qmessagebox::critical(0, qobject::tr(</code><code class="sql string">"database error"</code><code class="sql plain">), db.lasterror().text());</code>
</div>
                                                                <div class="line number29 index28 alt2">
                                                                        <code class="sql spaces">        </code><code class="sql keyword">return</code><code class="sql plain">;</code>
</div>
                                                                <div class="line number30 index29 alt1">
                                                                        <code class="sql spaces">    </code><code class="sql plain">}</code>
</div>
                                                                <div class="line number31 index30 alt2">
                                                                        <code class="sql spaces">    </code><code class="sql keyword">else</code>
</div>
                                                                <div class="line number32 index31 alt1">
                                                                        <code class="sql spaces">        </code><code class="sql plain">qdebug()&lt;&lt;</code><code class="sql string">"database open success!"</code><code class="sql plain">;</code>
</div>
                                                                <div class="line number33 index32 alt2">
                                                                        <code class="sql spaces">    </code><code class="sql keyword">return</code> <code class="sql plain">a.</code><code class="sql keyword">exec</code><code class="sql plain">();</code>
</div>
                                                                <div class="line number34 index33 alt1">
                                                                        <code class="sql plain">}</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
</div>
<p>
        显示结果如下,就说明连接成功。否则,会弹出报错提示。</p>
<p>
        <img title="通过Qt连接OpenGauss数据库的详细教程" alt="通过Qt连接OpenGauss数据库的详细教程" src="https://zhuji.jb51.net/uploads/img/202305/f6ade88db676488e2fae7be0953a963c.jpg"></p>
<p class="maodian">
        </p>
<p class="maodian"></p><h2>
        总结</h2>
<p>
        如果不成功,可能的原因:</p>
<ol>
<li>
                qt 的mingw选的不是64位的</li>
        <li>
                odbc没有按照要求配置</li>
</ol>
<p>
        以上就是通过qt连接opengauss数据库的详细教程的详细内容,更多关于qt连接opengauss数据库的资料请关注其它相关文章!</p>
<p>
        原文链接:https://blog.csdn.net/weixin_43894075/article/details/117928718</p>
頁: [1]
查看完整版本: 通过Qt连接OpenGauss数据库的详细教程