📄 prov_providingintro.html
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<meta name="Author" content="TF">
<meta name="generator" content="HTML Tidy, see www.w3.org">
<title>数据库应用程序开发者指南: 从一个数据源中获得数据</title>
<link type="text/css" href="jbdocs.css" rel="stylesheet">
</head>
<body>
<a name="_top_"></a>
<h1>从数据源中获得数据</h1>
<hr>
译者名字:cage_yang(JD012)<br>
邮件地址:<a href="mailto:cage_yang@163.com">cage_yang@163.com</a>
<!--BNDX="accessing data:;data sources:accessing;JDBC data sources:accessing;data:;data:providing;retrieving data;data:retrieving;data providers:;extracting data;data:extracting from a data source;providers:of data;data:providers;"-->
<!--BNDX="JDBC data sources:;StorageDataSet component:usage overview;DataExpress:components"-->
<!--BNDX="DataExpress:components:accessing data with;retrieving data:;data:retrieving;"-->
<blockquote class="bsku">数据库应用程序开发是JBuilder专业版本与企业版本的一个特征. 分布式应用程序开发是JBuilder企业版本的一个特征.</blockquote>
<p>这章节重点在用JBuilder的DataExpress体系结构从数据源获得数据, 并将数据提供给应用程序. DataExpress包中的组件包装了应用程序与数据源之间的连接.</p>
<p>为了创建一个数据库应用程序, 需要从数据源中获得数据, 并且创建一份用于应用程序能够在本地管理的拷贝. 从数据提供者获得的数据高速缓冲在<code>DataSet</code>数据集中. 所有的改变高速缓冲在<code>DataSet</code>并可跟踪,因此知道什么需要插入,更新,或者删除并更新数据源. 在JBuilder中, 一个数据子集从数据源中取得数据放JBuilder <code>StorageDataSet</code> 子集中. 用<code>StorageDataSet</code>的哪个子集取决于你通过哪种方式获得数据信息.</p>
<p>用一个provider/resolver方法, 你仅需要数据库应用程序与数据源之间的交互作用: 获得数据的初始连接, 以及将数据变化返回数据源的最最终连接. 客户端的<code>DataSet</code> 组件与数据源的连接在数据已经被提供后可以断开, 并且仅在处理事务期间需要重连.</p>
<p>DataExpress组件也支持直接绑定dbSwing组件. 你可以简单地在检视器通过设置属性将数据绑定到可视的组件.</p>
<p>这章节的一些指南用JDataStore驱动器来访问数据.另外的使用JDBC驱动器来访问InterBase表的数据.这两种选择各有其优点. 到底选择哪一个取决于你的应用程序的需要. 通过这两个先项,</p>
<ul>
<li>你可以直接连接(wire)可视化组件.</li>
<li>你可以获得访问包括主-从,分类,过滤,约束特性.</li>
<li>你可以跟踪获得的数据,因些你能够正确提交数据至数据源.</li>
</ul>
<br><br>
<a name="when"></a>
<h2>什么时候用JDataStore与JDBC驱动器</h2>
<!--BNDX="JDataStore:when to use;JDBC drivers:when to use"-->
<p>你也许希望用JDataStore到:</p>
<ul>
<li>离线操作 - 你能够在JDataStore文件系统中保存与编辑数据,并在重新连接到数据源时提交编辑的数据</li>
<li>存储对象</li>
<li>操作比较大的数据集</li>
</ul>
<p>你也许希望用JDBC驱动器到:</p>
<ul>
<li>使用基于标准的JDBC API</li>
<li>实时操作SQL数据 - 你能够使用一个QueryProvider组件来查询一个SQL数据库并根据需要实时操作并保存数据</li>
<li>用RemoteJDBC来进行远程访问</li>
</ul>
<br><br>
<a name="in"></a>
<h2>DataExpress组件</h2>
<!--BNDX="components:DataExpress;DataExpress:overview;DataExpress:tutorials;tutorials:DataExpress components"-->
<p>该章节讨论了用如下的DataExpress组件来获得数据. 有些指南说明用于创建数据库应用程序的必须的步骤. 这些例子的位置在<code>JBuilder/samples/DataExpress/</code>. 如果你运行这些例子程序遇到问题,见<a href="ins_installing.html">"JBuilder例子文件"</a> </p>
<ul>
<li>
<p><a name="TDF"></a> <!--BNDX="TextDataFile component:;TextDataFile component:using;text files:importing;text files:exporting;delimiters;field separators"-->
<code><a href="../ref/dx/com.borland.dx.dataset.TextDataFile.html">TextDataFile</a></code></p>
<p><code>TextDataFile</code>组件详细说明了影响导入与导出文本文件的属性, 比如分隔符, 字段分隔, 等等. 以下情况用到该组件:</p>
<ul>
<li>将一个文本格式的数据导入到<code>TableDataSet</code>组件</li>
<li>将所有存储在<code>StorageDataSet</code>的数据导出至一个文本文件</li>
</ul>
<p><a href="prov_textedittutorial.html">"一个使用文本文件的介绍性的数据库指南"</a> 逐步告诉你怎样创建一个数据库应用程序与用户界面, 即使你没有连接到任何SQL数据库或者桌面数据库. 本指南使用JBuilder自带的文本文件数据.</p>
<p>使用你自己的文本文件来逐步创建数据库应用程序的指南,见<a href="prov_importingdata.html">"从文本文件中导入与导出数据".</a></p>
</li>
<li>
<p><a name="QDS"></a> <!--BNDX="QueryDataSet component:using;query statements:;query statements:running;SQL tables:;SQL tables:querying;queries:;queries:parameterized;"-->
<code><a href="../ref/dx/com.borland.dx.sql.dataset.QueryDataSet.html">QueryDataSet</a></code></p>
<p><code>QueryDataSet</code>组件提供在一个SQL数据库中使用查询语句(带参数或者不带参数)来查询一个表的功能.</p>
<p><a href="prov_query.html">"查询数据库"</a> 逐步介绍创建一个通过执行一个查询来创建一份本地数据并将结果存储在<code>QueryDataSet</code> 组件中.</p>
<p><a href="prov_paramquery.html">"使用参数化查询从数据库中获得数据"</a> 略述了增加参数到你的查询语句时必须的步骤.</p>
</li>
<li><a name="PDS"></a> <!--BNDX="ProcedureDataSet component:;ProcedureDataSet component:using;stored procedures;stored procedures:running;procedures:;procedure calls;"-->
<code><a href="../ref/dx/com.borland.dx.sql.dataset.ProcedureDataSet.html">ProcedureDataSet</a></code>
<p><code>ProcedureDataSet</code>组件针对SQL数据库数据存储提供了运行存储过程,在过程需要时传递参数的功能性. 存储过程调用期望返回一个指针或者输出,以期产生一个<code>DataSet</code>.</p>
<p><a href="prov_procedure.html">"用存储过程获得数据"</a> 逐步介绍通过一个存储过程创建一个本地数据副本并且将结果集存储在一个<code>ProcedureDataSet</code> 组件中.</p>
</li>
<li>
<p><a name="TDS"></a> <!--BNDX="importing data:;importing data:file-based data;JDataStore:database files:accessing;"-->
<code><a href="../ref/dx/com.borland.dx.dataset.TableDataSet.html">TableDataSet</a></code></p>
<p><code>TableDataSet</code>组件可能有或者可能没有一个正式的数据提供者或者提交者. 它的属性允许它导入一个基于文件的数据. 使用该组件从源而不是SQL数据库创建一个<code>StorageDataSet</code>, 例如, 从一个文本文件导入数据, 或者简单地操作离线数据库数据. 为了直接访问存储在一个<code>DataStore</code>的表,你也可以使用该组件, 或者其它的从<code>StorageDataSet</code>扩展过来的组件.</p>
<p><a href="prov_importingdata.html">"从一个文本文件中导入与导出数据"</a> 描述怎样将一个文本文件数据导入至一个<code>TableDataSet</code>组件中. 本主题讨论怎样程式化地增加<code>Column</code> 组件并且读取如时间和时间戳的数据.</p>
</li>
<li><a name="DS"></a> <!--BNDX="DataSet component:using;providers;providers:custom;providing data;providing data:using custom provider"-->
Any <code><a href="../ref/dx/com.borland.dx.dataset.DataSet.html">DataSet</a></code>
<p><code>DataSet</code>类是一个抽象类,提供基本的用于访问二维护数据的编辑,显示,指针功能.</p>
<p><a href="prov_custom.html">"写入一个自定义的数据提供者"</a>讨论自定义数据提供者,以及它们怎么能够用于作为一个<code>TableDataSet</code>以及任何一个从<code>TableDataSet</code>继承下来的<code>DataSet</code>的提供者.</p>
</li>
<li>
<p><a name="col"></a> <!--BNDX="Column component:;Column component:using;column properties:;columns:;columns:properties;columns:metadata;columns:persistent columns;"-->
<code><a href="../ref/dx/com.borland.dx.dataset.Column.html">Column</a></code></p>
<p><code>Column</code>组件存储了如数据类型,精度等的重要的属性,也存储了如字体以及对齐方式的可视化属性. 就<code>QueryDataSet</code> 以及<code>ProcedureDataSet</code> 组件而言, <code>Column</code> 组件是当每次<code>StorageDataSet</code>实例化时动态地创建的,映射那时的数据源实际的数据例.</p>
<p><a href="col_columns.html">"操作列"</a> 讨论例(column)属性, 固定(persistent)例, 以及元数据.</p>
</li>
</ul>
<p>对于<code>QueryDataSet</code>与<code>ProcedureDataSet</code> 组件, 数据源一般是SQL服务数据库. 在这种情况下, 你也需要一个<code>Database</code> 组件来处理服务器的连接. 见 <a href="con_connecting.html">"连接一个数据库"</a> 以获得更多的关于连接服务器的信息. 当使用 <code>TableDataSet</code> 与 <code>TextDataFile</code> 组件时, 你通常正从一个文本文件读取数据. 因为你不正访问SQL服务器数据, 你不需要一个 <code>Database</code> 组件.</p>
<p><span class="bscan">另见: </span>
<br>
<a href="dh_concepts.html">理解JBuilder的DataExpress体系结构</a>
<br>
<a href="../ref/dx/Package-com.borland.dx.dataset.html">DataExpress组件库参考</a>
<br>
<a href="task_jdbcx.html">使用数据库导航浏览数据库表与元数据</a>
<br>
<a href="dm_datamodules.html">使用数据模块简化数据的访问</a></p>
<table width="100%">
<tr>
<td width="50%" height="3"><a href="con_connecting.html"><img src="images/PreviousArrow.gif" width="26" height="26" border="0">   连接到一个数据库</a></td>
<td width="50%" height="3"><a href="prov_textedittutorial.html">一个使用文本文件的介绍性的数据库指南   <img src="images/NextArrow.gif" width="26" height="26" border="0"></a></td>
</tr>
</table>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -