⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sql.html

📁 这是qt3的帮助文档的中文版
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- /home/reggie/tmp/qt-3.0-reggie-5401/qt-x11-commercial-3.0.5/doc/sql.doc:69 -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="Translator" content="Cavendish">
<meta name="Qt zh_CN Documents Website" content="http://www.qiliang.net/qt">
<title>SQL模块</title>
<style type="text/css"><!--
h3.fn,span.fn { margin-left: 1cm; text-indent: -1cm; }
a:link { color: #004faf; text-decoration: none }
a:visited { color: #672967; text-decoration: none }
body { background: #ffffff; color: black; font-family: "Times New Roman" }
--></style>
</head>
<body>

<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr bgcolor="#E5E5E5">
<td valign=center>
 <a href="index.html">
<font color="#004faf">主页</font></a>
 | <a href="classes.html">
<font color="#004faf">所有的类</font></a>
 | <a href="mainclasses.html">
<font color="#004faf">主要的类</font></a>
 | <a href="annotated.html">
<font color="#004faf">注释的类</font></a>
 | <a href="groups.html">
<font color="#004faf">分组的类</font></a>
 | <a href="functions.html">
<font color="#004faf">函数</font></a>
</td>
<td align="right" valign="center"><img src="logo32.png" align="right" width="64" height="32" border="0"></td></tr></table>
<h1 align=center>SQL模块</h1>

 
<p> 这个模块是<a href="editions.html">Qt企业版</a>的一部分。
<p> <!-- toc -->
<ul>
<li><a href="#1"> 介绍
</a>
<li><a href="#2"> SQL模块架构
</a>
<li><a href="#3"> SQL驱动程序插件
</a>
<li><a href="#4"> 连接数据库
</a>
<li><a href="#5"> 连接单一数据库
</a>
<ul>
<li><a href="#5-1"> 连接多个数据库
</a>
</ul>
<li><a href="#6"> 使用QSqlQuery执行SQL命令
</a>
<ul>
<li><a href="#6-1"> 事务处理
</a>
<li><a href="#6-2"> 基本浏览
</a>
<li><a href="#6-3"> 基本数据处理
</a>
<li><a href="#6-4"> 定位数据集
</a>
</ul>
<li><a href="#7"> 使用QSqlCursor
</a>
<ul>
<li><a href="#7-1"> 检索记录
</a>
<ul>
<li><a href="#7-1-1"> 排序和过滤记录
</a>
<li><a href="#7-1-2"> 提取数据
</a>
</ul>
<li><a href="#7-2"> 处理记录
</a>
<ul>
<li><a href="#7-2-1"> 插入记录
</a>
<li><a href="#7-2-2"> 更新记录
</a>
<li><a href="#7-2-3"> 删除记录
</a>
</ul>
</ul>
<li><a href="#8"> 基于数据的窗口部件
</a>
<ul>
<li><a href="#8-1"> 基于数据的表
</a>
<li><a href="#8-2"> 创建基于数据的窗体
</a>
<ul>
<li><a href="#8-2-1"> 显示记录
</a>
<li><a href="#8-2-2"> 在数据窗体中显示记录
</a>
<li><a href="#8-2-3"> 编辑记录
</a>
</ul>
<li><a href="#8-3"> 自定义编辑器窗口部件
</a>
<ul>
<li><a href="#8-3-1"> 为表格自定义编辑器窗口部件
</a>
</ul>
</ul>
<li><a href="#9"> 继承QSqlCursor
</a>
<li><a href="#10"> 实例表
</a>
</ul>
<!-- endtoc -->

<p> <a name="Introduction"></a>
<h2> 介绍
</h2>
<a name="1"></a><p> Qt的SQL类帮助你给你的Qt应用程序提供无缝的数据库集成。
<p> <blockquote>
这个概述假设你已经至少有一些SQL的基础知识。你需要能够理解简单的<tt>SELECT</tt>、<tt>INSERT</tt>、<tt>UPDATE</tt>和<tt>DELETE</tt>命令。尽管<a href="qsqlcursor.html">QSqlCursor</a>类提供了数据库浏览和编辑的界面不<em>需要</em>SQL的知识,但是对于SQL的基本理解还是被高度推荐的。一本SQL数据库的标准文本是C. J. Date所作的<em>《数据库系统的介绍》(第七版)</em>,ISBN 0201385902。
</blockquote>
<p> 本文所描述的实例是从完全人工编写代码的角度出发的,你还可以参考<em>Qt设计器</em>的用户手册中“创建数据库应用程序”这一节,它提供了更高层次的实现方法来演示窗口部件、执行挖掘和处理外键查找等相关的操作。
<p> 这份文档被分为六个部分:
<p> <a href="#Architecture">SQL模块架构</a>。描述了这些类是如何结合在一起的。
<p> <a href="#Connecting_to_Databases">连接数据库</a>。这部分解释了如何使用<a href="qsqldatabase.html">QSqlDatabase</a>类建立数据库连接。
<p> <a href="#Executing_SQL_commands">执行SQL命令</a>。描述如何执行标准的数据操作命令,比如<tt>SELECT</tt>、<tt>INSERT</tt>、<tt>UPDATE</tt>和<tt>DELETE</tt>。(当然任何有效的SQL指令均可被送往数据库)。焦点在于用<a href="qsqlquery.html">QSqlQuery</a>进行交互处理。
<p> <a href="#Using_QSqlCursor">使用游标</a>。描述如何使用<a href="qsqlcursor.html">QSqlCursor</a>类来实现更为强大的应用编程接口函数而不象在<a href="qsqlquery.html">QSqlQuery</a>中执行SQL语句。
<p> <a href="#Data-Aware_Widgets">基于数据的窗口部件</a>。描述如何把数据库与用户接口链接起来。在这一节中我们介绍<a href="qdatatable.html">QDataTable</a>、<a href="qsqlform.html">QSqlForm</a>、<a href="qsqlpropertymap.html">QSqlPropertyMap</a>和<a href="qsqleditorfactory.html">QSqlEditorFactory</a>类,演示如何使用自定义的基于数据的窗口部件。<em>Qt设计器</em>提供了一个方便的可视化途径来实现同样的事情。请参考<em>Qt设计器</em>的手册,更多的详细情况请见<a href="qdatabrowser.html">QDataBrowser</a>和<a href="qdataview.html">QDataView</a>。
<p> <a href="#Subclassing_QSqlCursor">继承QSqlCursor</a>。本节给出了继承QSqlCursor的实例。继承类可为字段提供默认值与计算字段等功能(比如以一个自动数值为主键的索引列),以及显示计算字段等等的内容。比如显示一个名称而不是一个外键的标识符。
<p> 这个文档中所使用的表的定义的所有实例都在<a href="#Example_Tables">实例表</a>部分。
<p> <a name="Architecture"></a>
<h2> SQL模块架构
</h2>
<a name="2"></a><p> SQL类分成以下三层:
<p> <em>用户接口层。</em>这些类提供了基于数据的窗口部件,这些窗口部件不仅连接数据库还可为用户所浏览。(以<a href="qsqlcursor.html">QSqlCursor</a>作为数据源)。终端用户通过这些组件来浏览与编辑数据。<em>Qt设计器</em>集成了这些类并可用来创建基于数据的窗体。这些窗口部件也可在程序中与你的C++代码直接交互。支持这一层的类包括<a href="qsqleditorfactory.html">QSqlEditorFactory</a>、<a href="qsqlform.html">QSqlForm</a>、<a href="qsqlpropertymap.html">QSqlPropertyMap</a>、<a href="qdatatable.html">QDataTable</a>、<a href="qdatabrowser.html">QDataBrowser</a>和<a href="qdataview.html">QDataView</a>。
<p> <em>SQL应用编程接口层。</em>这些类存取数据库。<a href="qsqldatabase.html">QSqlDatabase</a>类用来连接数据库。数据交互的实现要么通过<a href="qsqlquery.html">QSqlQuery</a>类以SQL语句来实现,要么用<a href="qsqlcursor.html">QSqlCursor</a>类,它封装了SQL命令集。除了<a href="qsqldatabase.html">QSqlDatabase</a>、<a href="qsqlcursor.html">QSqlCursor</a>和<a href="qsqlquery.html">QSqlQuery</a>这些类外,<a href="qsqlerror.html">QSqlError</a>、<a href="qsqlfield.html">QSqlField</a>、<a href="qsqlindex.html">QSqlIndex</a>和<a href="qsqlrecord.html">QSqlRecord</a>也支持该层。
<p> <em>驱动程序层。</em>本层由三个类组成:<a href="qsqlresult.html">QSqlResult</a>、<a href="qsqldriver.html">QSqlDriver</a>和QSqlDriverFactoryInterface。这个层在数据库和SQL类之间提供了底层的桥梁。这个层的<a href="sql-driver.html">文档是另外的</a>,因为它只和驱动程序编写者有关,并且在标准数据库应用程序编程中很少用到。对于实现Qt的SQL驱动程序插件的详细情况请参考<a href="sql-driver.html">这里</a>。
<p> <a name="Plugins"></a>
<h2> SQL驱动程序插件
</h2>
<a name="3"></a><p> Qt的SQL模块可以在运行期动态地装载新的驱动程序,这是通过<a href="plugins-howto.html">插件</a>实现的。
<p> <a href="sql-driver.html">SQL驱动程序文档</a>描述了如何为一个特定的数据库建立相应的插件。
<p> 一旦该插件被建立,Qt可以自动地装载它,之后就可为<a href="qsqldatabase.html">QSqlDatabase</a>所用(详细信息请参考<a href="qsqldatabase.html#drivers">QSqlDatabase::drivers</a>())。 
<p> <a name="Connecting_to_Databases"></a>
<h2> 连接数据库
</h2>
<a name="4"></a><p> 如果要使用<a href="qsqlquery.html">QSqlQuery</a>或<a href="qsqlcursor.html">QSqlCursor</a>类,则少要连接并打开一个数据库连接。
<p> 如果应用程序只需要一个数据库连接,<a href="qsqldatabase.html">QSqlDatabase</a>类可以创建一个为所有SQL操作所利用的默认连接,如果需要多个数据库连接,每个连接也可以容易地建立。
<p> <a href="qsqldatabase.html">QSqlDatabase</a>需要<a href="qsqldatabase-h.html">qsqldatabase.h</a>这个头文件。
<p> <a name="Connecting_to_a_Single_Database"></a>
<h2> 连接单一数据库
</h2>
<a name="5"></a><p> 创建一个数据库连接需要三个操作:激活驱动程序、设置连接信息、打开连接。
<p> 
<pre>    #include &lt;<a href="qapplication-h.html">qapplication.h</a>&gt;
    #include &lt;<a href="qsqldatabase-h.html">qsqldatabase.h</a>&gt;
    #include "../login.h"

    int main( int argc, char *argv[] )
    {
        <a href="qapplication.html">QApplication</a> app( argc, argv );

    <a name="x2141"></a>    <a href="qsqldatabase.html">QSqlDatabase</a> *defaultDB = QSqlDatabase::<a href="qsqldatabase.html#addDatabase">addDatabase</a>( DB_SALES_DRIVER );
        if ( defaultDB ) {
    <a name="x2143"></a>        defaultDB-&gt;<a href="qsqldatabase.html#setDatabaseName">setDatabaseName</a>( DB_SALES_DBNAME );
    <a name="x2146"></a>        defaultDB-&gt;<a href="qsqldatabase.html#setUserName">setUserName</a>( DB_SALES_USER );
    <a name="x2145"></a>        defaultDB-&gt;<a href="qsqldatabase.html#setPassword">setPassword</a>( DB_SALES_PASSWD );
    <a name="x2144"></a>        defaultDB-&gt;<a href="qsqldatabase.html#setHostName">setHostName</a>( DB_SALES_HOST );

    <a name="x2142"></a>        if ( defaultDB-&gt;<a href="qsqldatabase.html#open">open</a>() ) {
                // 数据库被成功打开,我们现在可以运行SQL命令。
            }
        }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -