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

📄 jb4-1-8-4.htm

📁 jbuilder教程~!快来下载吧~! 这个很好快来啊~
💻 HTM
字号:
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft FrontPage 4.0">
<TITLE></TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</HEAD>
<body bgcolor="#fefef2" style="FONT-SIZE: 9pt">
<P><STRONG><FONT 
color=#0080FF size=3 >Using dataSets with RMI
</FONT>
 </STRONG> 
<hr>
译者名字:				stavid(JD019) <br>                 
邮件地址:<a href="mailto:stavid@163.com">stavid@163.com</a>

<p><font size="2"><br>     
&nbsp;&nbsp;&nbsp; Streamable dateset 允许你建立一个包含所有DataSet数据的Java对象。同样,DataSetData对象可用来为Data Set提供有关列信息和数据。</font></p>        
 
		 
	

<p><font size="2">&nbsp;&nbsp;&nbsp; DataSetData对象实现java.io.Serializable接口,随后利用java.io.ObjectOutputStream中的writeObject来串行化,并且利用java.io.ObjectOutputStream中的readObject进行读取。这种方法可以将数据转换成字节数组,并且通过套件或其他传输手段对其进行传送。另一方面,对象可以通过直接进行串行化工作的Java RMI来进行传输。</font></p>        
 
		 
	

<p><font size="2">&nbsp;&nbsp;&nbsp; 除了在Dataset中保存一组完整的数据集以外,你还可以只保存数据集的修改。该功能可以实现一个中间层服务器,它与DBMS及能编辑Dataset的外型客户通信。&nbsp;<br>       
<br>
<font color="#000080"><b>
	example using streamable data sets</b></font><br>         
<br>
&nbsp;&nbsp;&nbsp; 使用流式数据集什么时候使用流式DataSet的例子是在一个3层系统中,该系统有一个Java服务器应用程序,它响应某数据源的数据发出的客户请求。服务器可以利用JBuilder 的QueryDataSets或ProdedureDataSets向服务器提供数据。这些数据可以利用DataSetData.extractDataSet进行提取,并通过连线输送到客户端。在客户端,数据可以载入到TableDataSet,并可利用JBuilder的DataSet控件或通过对DataSet Java API的调用进行编辑。服务器程序可以删除它的DataSet中的所有数据,以便它准备好随时为其他客户端应用程序提供服务。</font></p>        
 
		 
	

<p><font size="2">&nbsp;&nbsp;&nbsp; 当位于客户端应用程序上的用户想要保存修改时,数据将被DataSetData.extractDataSetChanges所提取,并送至服务器。在服务器载入这些修改之前,它应使用DataSet的元数据从DBMS中获取物理列类型。下一步,DataSet连同修改一起被载入,JBuilder中常用的解析器被用来解析数据到DBMS。</font></p>       
 
		 
	

<p><font size="2">&nbsp;&nbsp;&nbsp; 当解析在远程服务器进行时,	如果发生了解析错误, UI操作可能检测不到这些错误。通过创建一个错误DataSet,解析器可以处理这些错误。对于发生的错误,每个错误信息会用行的INTERNALROW值标记。DataSetData将这些错误传送到客户端应用程序。如果DataSet还在,那么客户端应用程序能很容易地将这些错误连接到DataSet中,并且在每行中显示出错误内容。<br>        
<br>
<b><font color="#000080">
	 使用流式DataSet方法</font></b><br>
<br>
&nbsp;&nbsp;&nbsp; 静态方法extractDataSet 和extractDataSetChanges将使用非瞬态专有数据成员来填充DataSetData,它指定:</font></p>        
 
		 
	

<p><font size="2">&nbsp;&nbsp;&nbsp; 1) 元数据信息由以下内容构成:</font></p>        
 
		 
	

<p><font size="2">        
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; . columnCount&nbsp;<br>        
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; . rowCount&nbsp;<br>        
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; . columnNames&nbsp;<br>        
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; . dataTy p e s<br>         
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; . rowId,hidden,internalRow(列属性)&nbsp;</font></p>        
 
		 
	

<p><font size="2">&nbsp;&nbsp;&nbsp; 这些属性当前以每种数据类型的3个高位被保存。每种数据类型都是一个字节。columnCount被隐含存储为column Names数组的长度。&nbsp;</font></p>        
 
		 
	

<p><font size="2">&nbsp;&nbsp;&nbsp; 2) 每行的状态位。每行都存储有一个short。&nbsp;</font></p>        
 
		 
	

<p><font size="2">&nbsp;&nbsp;&nbsp; 3) 每一数据元素都有空位。每一数据元素都存储为2位。使用的可能值为:</font></p>        
 
		 
	

<p><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; . 0—Normal data(正常数据)&nbsp;<br>        
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; . 1—Assigned Null(分配的空值)&nbsp;<br>        
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; . 2—Unassigned Null(未分配的空值) .<br>         
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; . 3—Unchanged Null(未改变的空值)</font></p>  
 
<p><font size="2">&nbsp;&nbsp;&nbsp; 最后一个值只用于extractDataSetChanges。在UPDATED版本中未被改变的数值以空(null)来保存,为大型二进制节省空间,等等。</font></p> 
 
<p><font size="2">&nbsp;&nbsp;&nbsp; 4)数据本身,组织在一个列数据数组里。如果数据列是Variant.INTEGER类型,此列的数值将使用一个int数组。</font></p> 
 
<p><font size="2">&nbsp;&nbsp;&nbsp; 5)对于extractDataSetChanges,一个特殊的列,INTERNALROW,将添加到数据部分中。这个数据列包含长值,它指明数据从中提取的DataSet的interalRow在修改不能应用到目标DBMS时,数据列可以用来作错误报告。LoadDat aSet方法将数据载入到DataSet。任何在DataSet中不存在的列都会被添加。请注意物理类型和类似于sqlType,pre cision和scale这样的属性,并未包含在DataSetData对象中。这些属性必须直接从DBMS上找到。然而这些属性对于编辑目标来说并不是必要的。特殊列INTERNALROW与其它列一样出现在数据集中。</font></p>  
 
		 
	

</BODY>
</HTML>

⌨️ 快捷键说明

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