﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-沙龙之窝-随笔分类-IT技术文档</title><link>http://www.cnitblog.com/salemsu/category/7415.html</link><description>我的心路历程及工作经验分享,希望诸位能有所感悟和共鸣，能在尘世中找到自己的路。毕竟，路终究还是要自己走。</description><language>zh-cn</language><lastBuildDate>Wed, 28 Sep 2011 17:54:16 GMT</lastBuildDate><pubDate>Wed, 28 Sep 2011 17:54:16 GMT</pubDate><ttl>60</ttl><item><title>“无法从web服务器获取项目文件”解决方案 </title><link>http://www.cnitblog.com/salemsu/archive/2008/11/03/51006.html</link><dc:creator>沙龙</dc:creator><author>沙龙</author><pubDate>Mon, 03 Nov 2008 07:20:00 GMT</pubDate><guid>http://www.cnitblog.com/salemsu/archive/2008/11/03/51006.html</guid><wfw:comment>http://www.cnitblog.com/salemsu/comments/51006.html</wfw:comment><comments>http://www.cnitblog.com/salemsu/archive/2008/11/03/51006.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/salemsu/comments/commentRss/51006.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/salemsu/services/trackbacks/51006.html</trackback:ping><description><![CDATA[<div class=postBody>问题：打开VS.NET项目时遇到&#8220;无法从web服务器获取项目文件&#8221;<br>解决方案：<br>1.确保你的IIS里没有已经存在一个同名的项目；<br>2.找到&#8220;C:\Documents and Settings\你的用户名\VSWebCache\计算机名\&#8221;中, 删除与该项目同名的文件夹。这个文件是我们错误建立WEB目录时产生印象文件，看看是否存在，若存在，则删除；<br>3.去看看你项目里面文件名为 ***.csproj.webinfo的内容里面<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">VisualStudioUNCWeb</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Web&nbsp;URLPath&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">http://localhost/RPM03x0/WorkFlow/WorkFlow.csproj</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">VisualStudioUNCWeb</span><span style="COLOR: #000000">&gt;</span></div>
<br>如果项目虚拟目录名称跟这里设置不一样，一般都会出现你所描述的错误。。改成一样的就是了<br>4.如果你创建一个解决方案，解决方案中创建多个项目，确保***.sln文件中配置正确：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">Project(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">项目名1</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">http://localhost/解决方案/项目名1/项目名1.csproj</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">{2C8FD11D-8EC7-422A-87F0-E98FDE7E070E}</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;ProjectSection(ProjectDependencies)&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;postProject<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;EndProjectSection<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>EndProject<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>Project(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">项目名2</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">http://localhost/解决方案/项目名2/项目名2.csproj</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">{F4E0337F-534D-4E73-A9D0-05D3C957044A}</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;ProjectSection(ProjectDependencies)&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;postProject<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;EndProjectSection<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>EndProject<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>Project(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">项目名3</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">http://localhost/解决方案/项目名3/项目名3.csproj</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">{34D91D78-461E-404D-8116-37D0BB9039C9}</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;ProjectSection(ProjectDependencies)&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;postProject<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;EndProjectSection<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>EndProject</span></div>
5.如果以上都不行，选择C:\inetpub\wwwroot 看<br>6.再不行，重装系统吧，呵呵 </div>
<img src ="http://www.cnitblog.com/salemsu/aggbug/51006.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/salemsu/" target="_blank">沙龙</a> 2008-11-03 15:20 <a href="http://www.cnitblog.com/salemsu/archive/2008/11/03/51006.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL Server和Oracle的常用函数对比</title><link>http://www.cnitblog.com/salemsu/archive/2008/07/30/47302.html</link><dc:creator>沙龙</dc:creator><author>沙龙</author><pubDate>Wed, 30 Jul 2008 07:35:00 GMT</pubDate><guid>http://www.cnitblog.com/salemsu/archive/2008/07/30/47302.html</guid><wfw:comment>http://www.cnitblog.com/salemsu/comments/47302.html</wfw:comment><comments>http://www.cnitblog.com/salemsu/archive/2008/07/30/47302.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/salemsu/comments/commentRss/47302.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/salemsu/services/trackbacks/47302.html</trackback:ping><description><![CDATA[<p>---------数学函数</p>
<p>1.绝对值<br>S:select abs(-1) value<br>O:select abs(-1) value from dual</p>
<p>2.取整(大)<br>S:select ceiling(-1.001) value<br>O:select ceil(-1.001) value from dual</p>
<p>3.取整（小）<br>S:select floor(-1.001) value<br>O:select floor(-1.001) value from dual</p>
<p>4.取整（截取）<br>S:select cast(-1.002 as int) value<br>O:select trunc(-1.002) value from dual</p>
<p>5.四舍五入<br>S:select round(1.23456,4) value 1.23460<br>O:select round(1.23456,4) value from dual 1.2346</p>
<p>6.e为底的幂<br>S:select Exp(1) value 2.7182818284590451<br>O:select Exp(1) value from dual 2.71828182</p>
<p>7.取e为底的对数<br>S:select log(2.7182818284590451) value 1<br>O:select ln(2.7182818284590451) value from dual; 1</p>
<p>8.取10为底对数<br>S:select log10(10) value 1<br>O:select log(10,10) value from dual; 1</p>
<p>9.取平方<br>S:select SQUARE(4) value 16<br>O:select power(4,2) value from dual 16</p>
<p>10.取平方根<br>S:select SQRT(4) value 2<br>O:select SQRT(4) value from dual 2</p>
<p>11.求任意数为底的幂<br>S:select power(3,4) value 81<br>O:select power(3,4) value from dual 81</p>
<p>12.取随机数<br>S:select rand() value<br>O:select sys.dbms_random.value(0,1) value from dual;</p>
<p>13.取符号<br>S:select sign(-8) value -1<br>O:select sign(-8) value from dual -1</p>
<p>----------三角函数相关</p>
<p>14.圆周率<br>S:SELECT PI() value 3.1415926535897931<br>O:不知道</p>
<p>15.sin,cos,tan 参数都以弧度为单位<br>例如：select sin(PI()/2) value 得到1（SQLServer）</p>
<p>16.Asin,Acos,Atan,Atan2 返回弧度</p>
<p>17.弧度角度互换(SQLServer，Oracle不知道)<br>DEGREES：弧度-〉角度<br>RADIANS：角度-〉弧度</p>
<p>---------数值间比较</p>
<p>18. 求集合最大值<br>S:select max(value) value from<br>(select 1 value<br>union<br>select -2 value<br>union<br>select 4 value<br>union<br>select 3 value)a</p>
<p>O:select greatest(1,-2,4,3) value from dual</p>
<p>19. 求集合最小值<br>S:select min(value) value from<br>(select 1 value<br>union<br>select -2 value<br>union<br>select 4 value<br>union<br>select 3 value)a</p>
<p>O:select least(1,-2,4,3) value from dual</p>
<p>20.如何处理null值(F2中的null以10代替)<br>S:select F1,IsNull(F2,10) value from Tbl<br>O:select F1,nvl(F2,10) value from Tbl</p>
<p>--------字符串函数</p>
<p>21.求字符序号<br>S:select ascii('a') value<br>O:select ascii('a') value from dual</p>
<p>22.从序号求字符<br>S:select char(97) value<br>O:select chr(97) value from dual</p>
<p>23.连接<br>S:select '11'+'22'+'33' value<br>O:select CONCAT('11','22')||33 value from dual</p>
<p>23.子串位置 --返回3<br>S:select CHARINDEX('s','sdsq',2) value<br>O:select INSTR('sdsq','s',2) value from dual</p>
<p>23.模糊子串的位置 --返回2,参数去掉中间%则返回7<br>S:select patindex('%d%q%','sdsfasdqe') value<br>O:oracle没发现，但是instr可以通过第四个参数控制出现次数<br>select INSTR('sdsfasdqe','sd',1,2) value from dual 返回6</p>
<p>24.求子串<br>S:select substring('abcd',2,2) value<br>O:select substr('abcd',2,2) value from dual</p>
<p>25.子串代替 返回aijklmnef<br>S:SELECT STUFF('abcdef', 2, 3, 'ijklmn') value<br>O:SELECT Replace('abcdef', 'bcd', 'ijklmn') value from dual</p>
<p>26.子串全部替换<br>S:Replace<br>O:select Translate('fasdbfasegas','fa','我' ) value from dual</p>
<p>27.长度<br>S:len,datalength<br>O:length</p>
<p>28.大小写转换 lower,upper</p>
<p>29.单词首字母大写<br>S:没发现<br>O:select INITCAP('abcd dsaf df') value from dual</p>
<p>30.左补空格（LPAD的第一个参数为空格则同space函数）<br>S:select space(10)+'abcd' value<br>O:select LPAD('abcd',14) value from dual</p>
<p>31.右补空格（RPAD的第一个参数为空格则同space函数）<br>S:select 'abcd'+space(10) value<br>O:select RPAD('abcd',14) value from dual</p>
<p>32.删除空格<br>S:ltrim,rtrim<br>O:ltrim,rtrim,trim</p>
<p>33. 重复字符串<br>S:select REPLICATE('abcd',2) value<br>O:没发现</p>
<p>34.发音相似性比较(这两个单词返回值一样，发音相同)<br>S:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe')<br>O:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') from dual<br>SQLServer中用SELECT DIFFERENCE('Smithers', 'Smythers') 比较soundex的差<br>返回0-4，4为同音，1最高</p>
<p>--------------日期函数</p>
<p>35.系统时间<br>S:select getdate() value<br>O:select sysdate value from dual</p>
<p>36.前后几日<br>直接与整数相加减</p>
<p>37.求日期<br>S:select convert(char(10),getdate(),20) value<br>O:select trunc(sysdate) value from dual<br>select to_char(sysdate,'yyyy-mm-dd') value from dual</p>
<p>38.求时间<br>S:select convert(char(8),getdate(),108) value<br>O:select to_char(sysdate,'hh24:mm:ss') value from dual</p>
<p>39.取日期时间的其他部分<br>S:DATEPART 和 DATENAME 函数 （第一个参数决定）<br>O:to_char函数 第二个参数决定</p>
<p>参数---------------------------------下表需要补充<br>year yy, yyyy<br>quarter qq, q (季度)<br>month mm, m (m O无效)<br>dayofyear dy, y (O表星期)<br>day dd, d (d O无效)<br>week wk, ww (wk O无效)<br>weekday dw (O不清楚)<br>Hour hh,hh12,hh24 (hh12,hh24 S无效)<br>minute mi, n (n O无效)<br>second ss, s (s O无效)<br>millisecond ms (O无效)<br>----------------------------------------------</p>
<p>40.当月最后一天<br>S:不知道<br>O:select LAST_DAY(sysdate) value from dual</p>
<p>41.本星期的某一天（比如星期日）<br>S:不知道<br>O:SELECT Next_day(sysdate,7) vaule FROM DUAL;</p>
<p>42.字符串转时间<br>S:可以直接转或者select cast('2004-09-08'as datetime) value<br>O:SELECT To_date('2004-01-05 22:09:38','yyyy-mm-dd hh24-mi-ss') vaule FROM DUAL;</p>
<p>43.求两日期某一部分的差（比如秒）<br>S:select datediff(ss,getdate(),getdate()+12.3) value<br>O:直接用两个日期相减（比如d1-d2=12.3）<br>SELECT (d1-d2)*24*60*60 vaule FROM DUAL;</p>
<p>44.根据差值求新的日期（比如分钟）<br>S:select dateadd(mi,8,getdate()) value<br>O:SELECT sysdate+8/60/24 vaule FROM DUAL;</p>
<p>45.求不同时区时间<br>S:不知道<br>O:SELECT New_time(sysdate,'ydt','gmt' ) vaule FROM DUAL;</p>
<p>-----时区参数,北京在东8区应该是Ydt-------<br>AST ADT 大西洋标准时间<br>BST BDT 白令海标准时间<br>CST CDT 中部标准时间<br>EST EDT 东部标准时间<br>GMT 格林尼治标准时间<br>HST HDT 阿拉斯加—夏威夷标准时间<br>MST MDT 山区标准时间<br>NST 纽芬兰标准时间<br>PST PDT 太平洋标准时间<br>YST YDT YUKON标准时间</p>
<p>Oracle支持的字符函数和它们的Microsoft SQL Server等价函数:</p>
<p>函数 Oracle Microsoft SQL　Server<br>把字符转换为ASCII ASCII ASCII<br>字串连接 CONCAT (expression + expression)<br>把ASCII转换为字符 CHR CHAR<br>返回字符串中的开始字符（左起） INSTR CHARINDEX<br>把字符转换为小写 LOWER LOWER<br>把字符转换为大写 UPPER UPPER<br>填充字符串的左边 LPAD N/A<br>清除开始的空白 LTRIM LTRIM<br>清除尾部的空白 RTRIM RTRIM<br>字符串中的起始模式（pattern） INSTR PATINDEX<br>多次重复字符串 RPAD REPLICATE<br>字符串的语音表示 SOUNDEX SOUNDEX<br>重复空格的字串 RPAD SPACE<br>从数字数据转换为字符数据 TO_CHAR STR<br>子串 SUBSTR SUBSTRING<br>替换字符 REPLACE STUFF<br>将字串中的每个词首字母大写 INITCAP N/A<br>翻译字符串 TRANSLATE N/A<br>字符串长度 LENGTH DATELENGTH or LEN<br>列表中最大的字符串 GREATEST N/A<br>列表中最小的字符串 LEAST N/A<br>如果为NULL则转换字串 NVL ISNULL</p>
<p>日期函数</p>
<p>函数 Oracle Microsoft SQL　Server<br>日期相加 (date column +/- value) or<br>ADD_MONTHS DATEADD<br>两个日期的差 (date column +/- value) or<br>MONTHS_BETWEEN DATEDIFF<br>当前日期和时间 SYSDATE GETDATE()<br>一个月的最后一天 LAST_DAY N/A<br>时区转换 NEW_TIME N/A<br>日期后的第一个周日 NEXT_DAY N/A<br>代表日期的字符串 TO_CHAR DATENAME<br>代表日期的整数 TO_NUMBER<br>(TO_CHAR)) DATEPART<br>日期舍入 ROUND CONVERT<br>日期截断 TRUNC CONVERT<br>字符串转换为日期 TO_DATE CONVERT<br>如果为NULL则转换日期 NVL ISNULL</p>
<p>转换函数</p>
<p>函数 Oracle Microsoft SQL　Server<br>数字转换为字符 TO_CHAR CONVERT<br>字符转换为数字 TO_NUMBER CONVERT<br>日期转换为字符 TO_CHAR CONVERT<br>字符转换为日期 TO_DATE CONVERT<br>16进制转换为2进制 HEX_TO_RAW CONVERT<br>2进制转换为16进制 RAW_TO_HEX CONVERT</p>
<p>其它行级别的函数</p>
<p>函数 Oracle Microsoft SQL　Server<br>返回第一个非空表达式 DECODE COALESCE<br>当前序列值 CURRVAL N/A<br>下一个序列值 NEXTVAL N/A<br>如果exp1 = exp2, 返回null DECODE NULLIF<br>用户登录账号ID数字 UID SUSER_ID<br>用户登录名 USER SUSER_NAME<br>用户数据库ID数字 UID USER_ID<br>用户数据库名 USER USER_NAME<br>当前用户 CURRENT_USER CURRENT_USER<br>用户环境(audit trail) USERENV N/A<br>在CONNECT BY子句中的级别 LEVEL N/A</p>
<p>合计函数</p>
<p>函数 Oracle Microsoft SQL　Server<br>Average AVG AVG<br>Count COUNT COUNT<br>Maximum MAX MAX<br>Minimum MIN MIN<br>Standard deviation STDDEV STDEV or STDEVP<br>Summation SUM SUM<br>Variance VARIANCE VAR or VARP</p>
<p>Oracle还有一个有用的函数EXTRACT,提取并且返回日期时间或时间间隔表达式中特定的时间域:<br>EXTRACT(YEAR FROM 日期)</p>
<img src ="http://www.cnitblog.com/salemsu/aggbug/47302.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/salemsu/" target="_blank">沙龙</a> 2008-07-30 15:35 <a href="http://www.cnitblog.com/salemsu/archive/2008/07/30/47302.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个朋友帮忙写的基于Oracle 实现进销存的触发器</title><link>http://www.cnitblog.com/salemsu/archive/2008/07/18/46878.html</link><dc:creator>沙龙</dc:creator><author>沙龙</author><pubDate>Fri, 18 Jul 2008 05:40:00 GMT</pubDate><guid>http://www.cnitblog.com/salemsu/archive/2008/07/18/46878.html</guid><wfw:comment>http://www.cnitblog.com/salemsu/comments/46878.html</wfw:comment><comments>http://www.cnitblog.com/salemsu/archive/2008/07/18/46878.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/salemsu/comments/commentRss/46878.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/salemsu/services/trackbacks/46878.html</trackback:ping><description><![CDATA[<p>CREATE OR REPLACE TRIGGER TRG_cux_wms_transaction_line<br>&nbsp; before insert or update or delete on cux_wms_transaction_line<br>&nbsp; REFERENCING NEW AS NEW OLD AS OLD<br>&nbsp; for each row<br>declare<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ai_in_count number;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ai_out_count number;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ai_abs number;<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; --源仓区游标&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; Cursor temp_in_cursor is<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select count(*)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; from cux_wms_stock<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where :new.organization_id = cux_wms_stock.organization_id and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :new.org_id = cux_wms_stock.org_id and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :new.INVENTORY_CODE = cux_wms_stock.INVENTORY_CODE and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :new.splint_barcode = cux_wms_stock.splint_barcode and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :new.item_barcode = cux_wms_stock.item_barcode and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :new.batchno= cux_wms_stock.batch_number and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :new.source_loc_code = cux_wms_stock.location_code;<br>&nbsp;&nbsp;&nbsp; --目标仓区游标&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; Cursor temp_out_cursor is<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select count(*)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; from cux_wms_stock<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where :new.organization_id = cux_wms_stock.organization_id and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :new.org_id = cux_wms_stock.org_id and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :new.INVENTORY_CODE = cux_wms_stock.INVENTORY_CODE and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :new.splint_barcode = cux_wms_stock.splint_barcode and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :new.item_barcode = cux_wms_stock.item_barcode and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :new.batchno= cux_wms_stock.batch_number and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :new.intent_loc_code = cux_wms_stock.location_code;<br>begin<br>&nbsp; <br>&nbsp; --设定计算方向<br>&nbsp; --case :new.operation_Mark;<br>&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp; when 'I' then ai_abs := 1;<br>&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp; when 'O' then ai_abs := -1;<br>&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp; when 'M' then ai_abs := 1;<br>&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp; else ai_abs := 0;<br>&nbsp; --end case;<br>&nbsp; ai_abs := 1;<br>&nbsp; if :new.operation_Mark = 'I' then--设定计算方向<br>&nbsp;&nbsp;&nbsp;&nbsp; ai_abs := 1;<br>&nbsp; end if;<br>&nbsp; if :new.operation_Mark = 'O' then--设定计算方向<br>&nbsp;&nbsp;&nbsp;&nbsp; ai_abs := -1;<br>&nbsp; end if; <br>&nbsp; if :new.operation_Mark = 'M' then--设定计算方向<br>&nbsp;&nbsp;&nbsp;&nbsp; ai_abs := -1;<br>&nbsp; end if;<br>&nbsp; if :new.operation_Mark = 'C' then--设定计算方向<br>&nbsp;&nbsp;&nbsp;&nbsp; ai_abs := 0;<br>&nbsp; end if;<br>&nbsp; --打开源仓区的游标<br>&nbsp; open temp_in_cursor;<br>&nbsp; fetch temp_in_cursor into ai_in_count;<br>&nbsp; <br>&nbsp; if ai_in_count &gt; 0 then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; update cux_wms_stock<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set cux_wms_stock.quantity = cux_wms_stock.quantity + :new.CASE_NUMBER * ai_abs,LAST_UPDATE_DATE=(select sysdate from dual),LAST_UPDATED_BY=:new.LAST_UPDATED_BY<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where :new.organization_id = cux_wms_stock.organization_id and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :new.org_id = cux_wms_stock.org_id and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :new.INVENTORY_CODE = cux_wms_stock.INVENTORY_CODE and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :new.splint_barcode = cux_wms_stock.splint_barcode and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :new.item_barcode = cux_wms_stock.item_barcode and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :new.batchno = cux_wms_stock.batch_number and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :new.source_loc_code= cux_wms_stock.location_code;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; if :new.operation_Mark = 'M' then--转移模式<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --打开目标仓区的游标<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; open temp_out_cursor;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fetch temp_out_cursor into ai_out_count;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ai_out_count &gt; 0 then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; update cux_wms_stock<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set cux_wms_stock.quantity = cux_wms_stock.quantity + :new.CASE_NUMBER * ai_abs,LAST_UPDATE_DATE=(select sysdate from dual),LAST_UPDATED_BY=:new.LAST_UPDATED_BY<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where :new.organization_id = cux_wms_stock.organization_id and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :new.org_id = cux_wms_stock.org_id and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :new.INVENTORY_CODE=cux_wms_stock.INVENTORY_CODE and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :new.splint_barcode = cux_wms_stock.splint_barcode and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :new.item_barcode = cux_wms_stock.item_barcode and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :new.batchno = cux_wms_stock.batch_number and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :new.intent_loc_code= cux_wms_stock.location_code;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; Insert into CUX_WMS_STOCK(STOCK_ID,ITEM_BARCODE,SPLINT_BARCODE,ORGANIZATION_ID,ORG_ID,INVENTORY_CODE,<br>LOCATION_CODE,BATCH_NUMBER,QUANTITY,CREATION_DATE,CREATED_BY,LAST_UPDATE_DATE,<br>LAST_UPDATED_BY,INVENTORY_ITEM_ID) values(CUX_WMS_STOCK_ID_S.nextval,:new.item_barcode,:new.splint_barcode,:new.organization_id,:new.org_id,<br>:new.INVENTORY_CODE,:new.intent_loc_code,:new.batchno,:new.CASE_NUMBER * (-ai_abs),:new.CREATION_DATE,:new.CREATED_BY,:new.LAST_UPDATE_DATE,:new.LAST_UPDATED_BY,0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; close temp_out_cursor;<br>&nbsp;&nbsp;&nbsp;&nbsp; end if;<br>&nbsp; else<br>&nbsp;&nbsp;&nbsp; if :old.org_id is null then --增加模式时<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Insert into CUX_WMS_STOCK(STOCK_ID,ITEM_BARCODE,SPLINT_BARCODE,ORGANIZATION_ID,ORG_ID,INVENTORY_CODE,<br>LOCATION_CODE,BATCH_NUMBER,QUANTITY,CREATION_DATE,CREATED_BY,LAST_UPDATE_DATE,<br>LAST_UPDATED_BY,INVENTORY_ITEM_ID) values(CUX_WMS_STOCK_ID_S.nextval,:new.item_barcode,:new.splint_barcode,:new.organization_id,:new.org_id,<br>:new.INVENTORY_CODE,:new.intent_loc_code,:new.batchno,:new.CASE_NUMBER * ai_abs,:new.CREATION_DATE,:new.CREATED_BY,:new.LAST_UPDATE_DATE,:new.LAST_UPDATED_BY,0);<br>&nbsp;&nbsp;&nbsp; end if;<br>&nbsp; end if;<br>&nbsp; <br>&nbsp;if :old.org_id is not null then --修改或者删除模式，需要回滚原记录的数据</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; update cux_wms_stock<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set cux_wms_stock.quantity = cux_wms_stock.quantity + :old.CASE_NUMBER * ai_abs,LAST_UPDATE_DATE=(select sysdate from dual),LAST_UPDATED_BY=:old.LAST_UPDATED_BY<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where :old.organization_id = cux_wms_stock.organization_id and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :old.org_id = cux_wms_stock.org_id and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :old.INVENTORY_CODE=cux_wms_stock.INVENTORY_CODE and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :old.splint_barcode = cux_wms_stock.splint_barcode and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :old.item_barcode = cux_wms_stock.item_barcode and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :old.batchno = cux_wms_stock.batch_number and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :old.source_loc_code= cux_wms_stock.location_code;<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; if :old.operation_Mark = 'M' then--转移模式</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; update cux_wms_stock<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set cux_wms_stock.quantity = cux_wms_stock.quantity + :old.CASE_NUMBER * (-ai_abs),LAST_UPDATE_DATE=(select sysdate from dual),LAST_UPDATED_BY=:old.LAST_UPDATED_BY<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where :old.organization_id = cux_wms_stock.organization_id and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :old.org_id = cux_wms_stock.org_id and<br>&nbsp;&nbsp;&nbsp;&nbsp; :old.INVENTORY_CODE=cux_wms_stock.INVENTORY_CODE and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :old.splint_barcode = cux_wms_stock.splint_barcode and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :old.item_barcode = cux_wms_stock.item_barcode and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :old.batchno = cux_wms_stock.batch_number and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :old.intent_loc_code= cux_wms_stock.location_code;</p>
<p>&nbsp;&nbsp;&nbsp; end if;<br>&nbsp;end if; </p>
<p>&nbsp;close temp_in_cursor;<br>&nbsp;delete from cux_wms_stock where quantity=0;<br>end TRG_CUX;<br>/<br></p>
<img src ="http://www.cnitblog.com/salemsu/aggbug/46878.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/salemsu/" target="_blank">沙龙</a> 2008-07-18 13:40 <a href="http://www.cnitblog.com/salemsu/archive/2008/07/18/46878.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>.NET调用oracle的存储过程返回记录集 </title><link>http://www.cnitblog.com/salemsu/archive/2008/07/18/46877.html</link><dc:creator>沙龙</dc:creator><author>沙龙</author><pubDate>Fri, 18 Jul 2008 05:36:00 GMT</pubDate><guid>http://www.cnitblog.com/salemsu/archive/2008/07/18/46877.html</guid><wfw:comment>http://www.cnitblog.com/salemsu/comments/46877.html</wfw:comment><comments>http://www.cnitblog.com/salemsu/archive/2008/07/18/46877.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/salemsu/comments/commentRss/46877.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/salemsu/services/trackbacks/46877.html</trackback:ping><description><![CDATA[<p>长期以来，我一直用的是 MS SQL Server / Access 数据库，通过 .NET 访问 MS 自家的东西几乎没碰到过什么麻烦。最近项目中要用 Oracle 作为数据库，学习研究了一些 .NET 访问 Oracle 的东西，发现问题倒真的不少。<br><br></p>
<p>1。System.Data.OracleClient 和 System.Data.OleDb 命名空间</p>
<p>虽然通过这两个命名空间的类都可以访问 Oracle 数据库，但和 SQL Server 类似的（System.Data.SqlClient 命名空间的类效率要比 System.Data.OleDb 命名空间中的类高一些），System.Data.OracleClient 命名空间中的类要比 System.Data.OleDb 命名空间的类效率高一些（这一点我没有亲自验证，但大多数地方都会这么说，而且既然专门为 Oracle 作的东西理论上也应该专门作过针对性的优化）。</p>
<p>当然还有另一点就是从针对性上说，System.Data.OracleClient 要更好一些：</p>
<p>比如数据类型，System.Data.OleDb.OleDbType 枚举中所列的就没有 System.Data.OracleClient.OracleType 枚举中的那些有针对性；另外，Oracle 的 Number 类型如果数字巨大，超出&nbsp;.NET 数据类型范围的情况中，就必须使用 System.Data.OracleClient 中的专门类 --&nbsp;OracleNumber 类型。</p>
<p>好了，不再赘述这两个的比较，下面主要讨论 System.Data.OracleClient 命名空间中的类型，即 ADO.NET for Oracle Data Provider (数据提供程序)。</p>
<br>注:如果要使用Oracle的cursor(游标)返回多记录集,请使用System.Data.OracleClient,因为System.Data.OleDb 没有这种数据类型.(当时这个问题折腾我几天了)<br><br>
<p>2。数据库连接：</p>
<p>无论是 System.Data.OleDb 还是 System.Data.OracleClient 访问 Oracle 都需要在 .NET 运行的机器（ASP.NET 中就是 Web 服务器）安装 Oracle 客户端组件。（这一点是和 MS 的两种数据库不同的，MS 的东西安装 MDAC: Microsoft Data Access Component 2.6 以上版本后，就无须再安装 SQL Server 客户端或者 Office 软件，就能访问。）</p>
<p>System Requirements：</p>
<p>(1)如用 System.Data.OracleClient 访问 Oracle，客户端组件版本应在 Oracle 8i Client Release 3 (8.1.7)以上版本。MS 只确保访问 Oracle 8.1.6、Oracle 8.1.7、Oracle 9i 服务器时的情况。MDAC 2.6 以上。</p>
<p>(2)如用 System.Data.OleDb 访问 Oracle，客户端组件版本 7.3.3.4.0 以上或 8.1.7.4.1 以上。MDAC 2.6 以上。</p>
<p>如服务器为 Oracle8i 以上，客户端组件版本应为 8.0.4.1.1c。</p>
<p>在 .NET 运行的机器中，安装 Oracle&nbsp;客户端，然后打开 Net Manager (Oracle 9i) / Easy Config (Oracle 8i) 按你以前的经验设置本地服务的映射（这里的服务名将用于数据库连接串）。</p>
<p>System.Data.OracleClient 中访问 Oracle 数据库的连接串是：</p>
<p>User ID=用户名; Password=密码; Data Source=服务名</p>
<p>(上述为一般的连接串，详细的连接串项目可以在 System.Data.OracleClient.OracleConnection.ConnectionString 属性的文档中找到。)</p>
<p>System.Data.OleDb 中的访问 Oracle 数据库的连接串是：</p>
<p>Provider=MSDAORA.1; User ID=用户名; Password=密码; Data Source=服务名<br><br><br></p>
<p>3。Oracle 中的数据类型：</p>
<p>Oracle 的数据类型和 SQL Server 相比，要&#8220;奇怪&#8221;一些：SQL Server 的大多数据类型很容易找到 .NET 中比较接近的类型，Oracle 中的类型就离 .NET 类型远了许多，毕竟 Oracle 是和 Java 亲近的数据库。</p>
<ul>
    <li>number: 数字类型，一般是 Number(M,N)，M是有效数字，N是小数点后的位数（默认0），这个是按十进制说的。
    <li>nvarchar2: 可变长字符型（Unicode），这个比较像 SQL Server 的 nvarchar（但不知 Oracle 为什么加了个&#8220;2&#8221;）。（去掉&#8220;n&#8221;为非 Unicode 的，下同。）
    <li>nchar: 定长字符型(Unicode)。
    <li>nclob: &#8220;写作文&#8221;的字段，存储大量字符（Unicode）时用。
    <li>date: 日期类型，比较接近 SQL Server 的 datetime。</li>
</ul>
<p>Oracle 中字段不能是 bit 或者 bool 之类的类型，一般是 number(1) 代替的。</p>
<p>和 SQL Server 一样在 SQL 命令中，字符类型需要用单引号（'）隔开，两个单引号（''）是单引号的字符转义（比如： I'm fat. 写入一个 SQL 命令是： UPDATE ... SET ...='I''m fat.' ...）。</p>
<p>比较特殊的是日期类型：比如要写入 2004-7-20 15:20:07 这个时刻需要如下写：</p>
<p>UPDATE ... SET ... = TIMESTAMP '2004-7-20 15:20:07' ...</p>
<p>注意这里使用了 TIMESTAMP 关键字，并使用单引号隔开；另外请注意日期格式，上面的格式是可识别的，Oracle 识别的格式没有 SQL Server 那般多。这是和 SQL Server 不同的地方。</p>
<p>顺便提一句：Access 中的日期类型是用井号(#)隔开的，UPDATE ... SET ... = #2004-7-20 15:20:07# ...<br><br><br></p>
<p>4。访问 Oracle 过程/函数（1）</p>
<p>SQL Server 作程序时经常使用存储过程，Oracle 里也可以使用过程，还可以使用函数。Oracle 的过程似乎是不能有返回值的，有返回值的就是函数了（这点有些像 BASIC，函数/过程区分的很细致。SQL Server 存储过程是可以有返回值的）。</p>
<p>.NET 访问 Oracle 过程/函数的方法很类似于 SQL Server，例如：</p>
<p>OracleParameter[] parameters = {<br>&nbsp;&nbsp;&nbsp; new OracleParameter("ReturnValue", OracleType.Int32, 0, ParameterDirection.ReturnValue,&nbsp;true, 0, 0, "",<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataRowVersion.Default, Convert.DBNull )<br>&nbsp;&nbsp;&nbsp; new OracleParameter("参数1",&nbsp;OracleType.NVarChar, 10),<br>&nbsp;&nbsp;&nbsp; new OracleParameter("参数2",&nbsp;&nbsp;OracleType.DateTime),<br>&nbsp;&nbsp;&nbsp; new OracleParameter("参数3",&nbsp;&nbsp;OracleType.Number, 1)<br>&nbsp;};<br><br>parameters[1].Value = "test";<br>parameters[2].Value = DateTime.Now;<br>parameters[3].Value = 1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 也可以是 new OracleNumber(1);</p>
<p>OracleConnection connection = new OracleConnection( ConnectionString );<br>OracleCommand command = new OracleCommand("函数/程名", connection);<br>command.CommandType = CommandType.StoredProcedure;<br><br>foreach(OracleParameter parameter in parameters)<br>&nbsp;&nbsp;&nbsp;&nbsp; command.Parameters.Add( parameter );<br><br>connection.Open();<br>command.ExecuteNonQuery();<br>int returnValue = parameters[0].Value; //接收函数返回值<br>connection.Close();</p>
<p>Parameter 的 DbType 设定请参见 System.Data.OracleClient.OracleType 枚举的文档，比如：Oracle 数据库中 Number 类型的参数的值可以用 .NET decimal 或 System.Data.OracleClient.OracleNumber 类型指定； Integer 类型的参数的值可以用 .NET int 或 OracleNumber 类型指定。等等。</p>
<p>上面例子中已经看到函数返回值是用名为&#8220;ReturnValue&#8221;的参数指定的，该参数为 ParameterDirection.ReturnValue 的参数。</p>
<p>5。访问 Oracle 过程/函数 (2)</p>
<p>不返回记录集（没有 SELECT 输出）的过程/函数，调用起来和 SQL Server 较为类似。但如果想通过过程/函数返回记录集，在 Oracle 中就比较麻烦一些了。</p>
<p>在 SQL Server 中，如下的存储过程：</p>
<p>CREATE PROCEDURE GetCategoryBooks<br>(<br>&nbsp;&nbsp;&nbsp; @CategoryID int<br>)<br>AS<br>SELECT * FROM Books<br>WHERE CategoryID = @CategoryID<br>GO</p>
<p>在 Oracle 中，请按以下步骤操作：</p>
<p>(1)创建一个包，含有一个游标类型：（一个数据库中只需作一次）</p>
<p>CREATE OR REPLACE PACKAGE Test<br>&nbsp; AS<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE Test_CURSOR IS REF CURSOR;<br>END Test;</p>
<p>(2)过程：</p>
<p>CREATE OR REPLACE PROCEDURE GetCategoryBooks<br>(<br>&nbsp;&nbsp;&nbsp;&nbsp; p_CURSOR&nbsp;out Test.Test_CURSOR,&nbsp;&nbsp;&nbsp; --&nbsp;这里是上面包中的类型，输出参数<br>&nbsp;&nbsp;&nbsp;&nbsp; p_CatogoryID INTEGER<br>)<br>AS<br>BEGIN<br>&nbsp;&nbsp;&nbsp;&nbsp; OPEN p_CURSOR FOR<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT * FROM Books<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE CategoryID=p_CatogoryID;<br>END GetCategoryBooks;</p>
<p>(3).NET 程序中：</p>
<p>OracleParameters parameters = {<br>&nbsp;&nbsp;&nbsp;&nbsp; new OracleParameter("p_CURSOR", OracleType.CURSOR, 2000, ParameterDirection.Output, true, 0, 0, "",<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataRowVersion.Default, Convert.DBNull),<br>&nbsp;&nbsp;&nbsp;&nbsp; new OracleParameter("p_CatogoryID", OracleType.Int32)<br>};<br><br>parameters[1].Value = 22;<br><br>OracleConnection connection = new OracleConnection( ConnectionString );<br>OracleCommand command = new OracleCommand("GetCategoryBooks", connection);<br>command.CommandType = CommandType.StoredProcedure;<br><br>foreach(OracleParameter parameter in parameters)<br>&nbsp;&nbsp;&nbsp;&nbsp; command.Parameters.Add( parameter );<br><br>connection.Open();<br>OracleDataReader dr = command.ExecuteReader();<br><br>while(dr.Read())<br>{<br>&nbsp;&nbsp;&nbsp; // 你的具体操作。这个就不需要我教吧？<br>}<br>connection.Close();</p>
<p>另外有一点需要指出的是，如果使用 DataReader 取得了一个记录集，那么在 DataReader 关闭之前，程序无法访问输出参数和返回值的数据。</p>
<p>&nbsp;</p>
<p>好了，先这些，总之 .NET 访问 Oracle 还是有很多地方和 SQL Server 不同的，慢慢学习了。</p>
<img src ="http://www.cnitblog.com/salemsu/aggbug/46877.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/salemsu/" target="_blank">沙龙</a> 2008-07-18 13:36 <a href="http://www.cnitblog.com/salemsu/archive/2008/07/18/46877.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>嵌入式操作系统WinCE特性及优点</title><link>http://www.cnitblog.com/salemsu/archive/2008/07/16/46777.html</link><dc:creator>沙龙</dc:creator><author>沙龙</author><pubDate>Wed, 16 Jul 2008 03:22:00 GMT</pubDate><guid>http://www.cnitblog.com/salemsu/archive/2008/07/16/46777.html</guid><wfw:comment>http://www.cnitblog.com/salemsu/comments/46777.html</wfw:comment><comments>http://www.cnitblog.com/salemsu/archive/2008/07/16/46777.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/salemsu/comments/commentRss/46777.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/salemsu/services/trackbacks/46777.html</trackback:ping><description><![CDATA[&nbsp;
<p align=center><span><strong><span>嵌入式操作系统<span>WinCE</span>特性及优点</span></strong></span></p>
<p><span>　　<strong><span>1 </span>嵌入式操作系统<span>Windows CE .NET</span>介绍</strong> </span><span><br></span><span>　　<span>Windows CE .NET</span>是<span>Windows CE 3.0</span>的后继产品。<span>Windows CE .NET</span>为嵌入式市场重新设计，为快速建立下一代智能移动和小内存占用的设备提供了一个健壮的实时操作系统。<span>Windows CE .NET</span>具备完整的操作系统特性集包和端对端开发环境，它包括了创建一个基于<span>Windows CE</span>的定制设备的强大联网能力、强劲的实时性和小内存体积占用以及丰富的多媒体和<span>Web</span>浏览功能。 </span><span><br></span><span>　　<strong><span>2 WinCE.NET</span>新增特性</strong> </span><span><br></span><span>　　嵌入系统的开发人员会在<span>Windows CE .NET </span>中发现大量的新增特性和改进特性，其中包括：无线技术，例如蓝牙（<span>Bluetooth</span>）；设备仿真，该特性使您可以对完整的设备环境进行仿真而无需任何额外的硬件投资；平台向导，使您可以从众多的预置设备设计中进行选择，以便跳跃式地开始您的开发流程；此外，还有丰富的多媒体和<span>Web</span>浏览功能。</span><span><br></span><span>　　<strong><span>3 WinCE.NET</span>移动特性</strong> </span><span><br></span><span>　　<strong><span>3.1 </span>无线设备</strong> </span><span><br></span><span>　　以下是<span>Windows CE .NET</span>中对各种无线设备的增强支持： </span><span><br></span><span>　　<span>&#167; </span>蓝牙（<span>Bluetooth</span>）：蓝牙是一种新兴的无线通讯技术，它允许设备在大约<st1:chmetcnv w:st="on" UnitName="米" SourceValue="10" HasSpace="False" Negative="False" NumberType="1" TCSC="0"><span>10</span>米</st1:chmetcnv>的范围之内，互相之间进行通信。</span><span><br></span><span>　　<span>&#167; </span>对象交换（<span>Object Exchange</span>，<span>OBEX</span>）协议：对象交换（<span>OBEX</span>）是一种高效、简洁的二进制协议，它使各种设备以一种简单、高效的方式自然交换数据。 </span><span><br></span><span>　　<span>&#167; MediaSense</span>：<span>MediaSense</span>特性通过向应用程序通知网络状态，从而改善了移动设备用户的漫游体验。</span><span><br></span><span>　　<span>&#167; 802.1x/ Zero Configuration</span>（零配置）：<span>Windows CE .NET</span>引入了<span>802.11 Zero Configuration</span>（零配置）、<span>802.1x</span>以及 可扩展身份验证协议（<span>Extensible Authentication Protocol</span>，<span>EAP</span>）。<span>802.11 Zero Configuration</span>简化了<span>802.11</span>网络的安装，并且使得从一个<span>802.11</span>网络到另一个<span>801.1x</span>网络的无缝漫游成为可能。而<span>EAP</span>则通过在用户登录到网络上时启用用户名<span>/</span>口令、证书或者针对特定原始设备生产商（<span>OEM</span>）的身份验证显著增强了<span>802.11</span>的安全性。 </span><span><br></span><span>　　<strong><span>3.2 </span>开放的通信平台</strong> </span><span><br></span><span>　　支持领先的网络技术： </span><span><br></span><span>　　<span>&#167; </span>轻量级目录访问协议（<span>Lightweight Directory Access Protocol</span>，<span>LDAP</span>）。 </span><span><br></span><span>　　<span>&#167; </span>远程访问服务（<span>Remote Access Service</span>，<span>RAS</span>）服务器。 </span><span><br></span><span>　　<span>&#167; </span>网络驱动程序接口规范（<span>Network Driver Interface Specification</span>，<span>NDIS</span>）<span>5.1</span>：<span>Windows CE .NET</span>引入了对<span>NDIS</span>的支持，<span>NDIS</span>通过将硬件层和协议层抽象化，简化了驱动程序的开发。<span>NDIS </span>支持以太网（<span>802.3</span>）、<span>IrDA</span>、<span>WAN</span>以及令牌环网（<span>802.5</span>）微端口。<span>Windows CE .NET</span>全面支持中间驱动程序、电池状态、直接内存存取（<span>DMA</span>）以及发送取消。 </span><span><br></span><span>　　<span>&#167; TCP/IP</span>：<span>Windows CE .NET</span>包括一个基于标准的<span>TCP/IP</span>栈，允许使用<span>Windows CE</span>的设备被用作局域网或远程网络上的节点和服务器。<span>Windows CE .NET</span>还包括对<span>TCP/IP</span>的安全性和稳定性增强。 </span><span><br></span><span>　　<span>&#167; Winsock 2.0</span>：<span>Windows Sockets</span>（<span>Winsock</span>）是一个接口，可以使用它来发现和使用底层传输协议的通信能力。通过提供一个独立于协议的接口，<span>Winsock</span>完全支持新兴的网络技术，例如实时多媒体通信。 </span><span><br></span><span>　　<span>&#167; </span>网络桥接：网络桥接（<span>Network Bridging</span>）通过将帧从一个以太网段转发到另一个网段，可以将多个以太网段连接到一个单一的子网之中。<span>Windows CE .NET</span>包含了所有必需的组件，以在一个平台中支持网络桥接。 </span><span><br></span><span>　　<span>&#167; </span>通用即插即用（<span>Universal Plug and Play</span>，<span>UPP</span>）<span>Device Host and Control Point</span>：<span>UPP Device Host</span>（<span>UPP</span>设备托管）增强了个人计算机的端对端网络连通性、无线设备和网络上的其它智能设备。<span>Device Host API</span>允许您创建可以向其它<span>UPP</span>设备发布自己的存在和功能的设备。<span>UPnP Control Point</span>提供的<span>API</span>使<span>Windows CE</span>设备可以发现并且控制网络上其它具有<span>UpnP</span>功能的设备。 </span><span><br></span><span>　　<span>&#167; </span>实时协作和通信。 </span><span><br></span><span>　　<span>&#167;</span>无缝的<span>Windows</span>集成 </span><span><br></span><span>　　<span>&#167;</span>远程桌面协议（<span>Remote Desktop Protocol</span>，<span>RDP</span>）</span><span><br></span><span>　　<strong><span>4 WinCE.NET</span>健壮特性 </strong></span><span><br></span><span>　　<strong><span>4.1 </span>系统级的可靠性</strong> </span><span><br></span><span>　　<span>&#167; </span>改进的可靠性：为了提供企业级的可靠性、简洁的线程管理、伸缩自如的数据库容量、高优先级的线程清除预防以及独一无二的设备<span>ID</span>都已经内建在<span>Windows CE .NET</span>操作系统之中。 </span><span><br></span><span>　　<strong><span>4.2 </span>小内存体积占用 </strong></span><span><br></span><span>　　<span>&#167; </span>最小化的操作系统体积：通过不断努力缩小嵌入系统最小化操作系统的体积，可以对<span>Windows CE .NET</span>中的丰富功能进行粒度级的组件化。 最小配置的<span>Windows CE .NET</span>可以小至<span>200KB</span>，它只带有最小的内核功能。 </span><span><br></span><span>　　广泛的<span>CPU</span>选择 </span><span><br></span><span>　　<span>Windows CE .NET</span>支持四种微处理器家族以及仿真技术。 </span><span><br></span><span>　　<span>&#167; ARM</span>：支持的处理器包括<span>ARM720T</span>、<span>ARM920T</span>、<span>ARM1020T</span>、<span>StrongARM</span>、<span>XScale </span></span><span><br></span><span>　　<span>&#167; MIPS</span>：支持的处理器包括<span>MIPS II/32 with FP</span>、<span>MIPS II/32 without FP</span>、<span>MIPS16</span>、<span>MIPS IV/64 with FP</span>、<span>MIPS IV/64 without FP </span></span><span><br></span><span>　　<span>&#167; SHx</span>：支持的处理器包括<span>SH-3</span>、<span>SH-3 DSP</span>、<span>SH-4 </span></span><span><br></span><span>　　<span>&#167; X86</span>：支持的处理器包括<span>486</span>、<span>586</span>、<span>Geode</span>、<span>Pentium I/II/III/IV </span></span><span><br></span><span>　　<span>4.3 </span><strong>企业范围的安全性</strong> </span><span><br><br><span>&nbsp;&nbsp; </span><strong>&nbsp;<span>4.4 </span></strong></span><span><strong>网络安全性增强</strong>： </span><span><br></span><span>　　<span>&#167; Kerberos</span>安全协议：<span>Kerberos</span>身份验证协议在建立安全的网络连接前，为实体间的相互身份验证提供了一个安全的网络连接，并且具有以下优点： </span><span><br></span><span>　　<span>&#167; </span>高效的服务器身份验证：应用程序服务器不需要连接到域控制器上对每个客户的身份进行验证，因为客户出示的凭证提供了相应的身份验证信息。 </span><span><br></span><span>　　<span>&#167; </span>相互身份验证：客户机和服务器都可以互相验证彼此的身份。 </span><span><br></span><span>　　<span>&#167; </span>互操作性：根据标准制定的规范是基于<span>IETF</span>的，它实现了同其它网络的互操作性。</span><span><br></span><span>　　<span>&#167; Web</span>服务器的安全套接字层（<span>Secure Sockets Layer</span>，<span>SSL</span>）支持。 </span><span><br></span><span>　　<span>&#167; </span>受保护的存储：为了保护敏感信息或者防止信息被篡改，受保护存储的<span>API</span>为密码系统和用户体验问题提供了一个方便的解决方案。 </span><span><br></span><span>　　<span>&#167; </span>智能卡加密服务提供者（<span>Smart Card Cryptographic Service Provider</span>，<span>CSP</span>）。 </span><span><br></span><span>　　扩展设备驱动程序支持 </span><span><br></span><span>　　<span>Windows CE .NET</span>中对新的设备驱动程序的支持包括： </span><span><br></span><span>　　<span>&#167; </span>高级技术附加数据包接口（<span>Advanced technology Attachment Packet Interface</span>，<span>ATAPI</span>）磁盘驱动程序。</span><span><br></span><span>　　<span>&#167; </span>新的统一音频模型和示例驱动程序。 </span><span><br></span><span>　　<span>&#167; </span>可安装的<span>ISR</span>：这个省时特性允许中断被多个设备共享。。 </span><span><br></span><span>　　<span>&#167; </span>输入<span>/</span>输出（<span>I/O</span>）资源管理器：一个调用设备的驱动程序可以通过指出是否是一个给定的资源（例如地址或者<span>IRQ</span>）来管理系统中的所有<span>I/O</span>资源。您可以通过使用设备驱动程序中的资源管理器（<span>Resource Manager</span>）服务来避免平台中的<span>I/O</span>资源发生冲突。 </span><span><br></span><span>　　<span>&#167; </span>设备通知：设备驱动程序和应用程序可以在设备通知系统中注册，以便在感兴趣的设备出现或消失时获得通知。 </span><span><br></span><span>　　<strong><span>5 WinCE.NET</span>智能特性</strong> </span><span><br></span><span>　　<strong><span>5.1 .NET</span>设备服务</strong> </span><span><br></span><span>　　<span>Windows CE .NET</span>使开发人员可以创建智能设备并且参与到<span>XML Web</span>服务的新世界中去： </span><span><br></span><span>　　<span>&#167; XML</span>：可扩展标记语言（<span>Extensible Markup Language</span>，<span>XML</span>）是<span>Web</span>数据的通用格式。<span>XML</span>允许开发人员以一种标准、一致的方式从任何应用程序中轻松描述和提供丰富的结构化数据。<span>XML</span>不会代替<span>HTML</span>；相反，它是对<span>HTML</span>的有益补充。 </span><span><br></span><span>　　<span>&#167; SOAP</span>：<span>SOAP</span>是一种在分散的分布式环境中进行信息交换所使用的轻量级协议。它是一种基于<span>XML</span>的协议，由三个部分组成：对消息内容和如何处理消息进行了框架定义的信封；面向应用程序所定义数据类型的表达实例的一组编码规则；以及表示远程过程调用和响应的约定。 </span><span><br></span><span>　　<strong><span>5.2 .NET Compact Framework</span></strong><span> </span></span><span><br></span><span>　　<span>.NET Compact Framework</span>是<span>.NET Framework</span>的一个子集，专门面向小内存体积占用的设备而设计。<span>.NET Compact Framework</span>是一个面向安全、可下载应用程序的独立于硬件的程序执行环境，定位于资源有限的计算设备，并且专门为这些设备进行了优化。<span>.NET Compact Framework</span>提供了多种语言可供选择（在最初，有<span>Microsoft Visual Basic&amp;reg; </span>和<span>Microsoft Visual C#&#8482;</span>），并且消除了语言互操作性所面临的一些常见问题。例如，<span>Visual C# </span>和<span>Visual Basic</span>组件可以轻松混合到一个解决方案之中，从而使更多的开发人员可以更轻易地参与到一个解决方案之中。<span>.NET Compact Framework</span>所支持的每种语言都可以平等地访问底层的框架和操作系统特性。<span>.NET Compact Framework</span>还包括了对<span>Web</span>服务的支持，这些服务使开发人员可以在小型、短时连接设备上对网络传输的粒度进行更细致的控制，允许后台的数据预取，并且使应用程序可以汇集来自不同的服务器的数据。<span>.NET Compact Framework</span>支持所有被<span>Windows CE .NET</span>支持的处理器。 </span><span><br></span><span>　　<strong><span>5.3 </span>自适应的用户界面和增强</strong> </span><span><br></span><span>　　<span>Internet Explorer 5.5 for CE</span>：支持<span>Internet Explorer</span>自定义的和个性化的用户界面方面的增强： </span><span><br></span><span>　　<span>&#167; </span>可自定义的用户界面（<span>UI</span>）：允许对常用控件和其它用户界面元素的外观进行自定义。 </span><span><br></span><span>　　<span>&#167; </span>用户配置文件：使<span>OEM</span>可以在一个设备上存储多个特定于用户的设置。 </span><span><br></span><span>　　<span>&#167; </span>多屏幕支持：支持将多个屏幕连接到基于<span>Windows CE</span>的设备上，在组合使用时，就像一个大屏幕一样。 </span><span><br></span><span>　　<span>&#167; Microsoft ClearType&amp;reg; </span>支持：提供了对<span>ClearType</span>字体的支持。 </span><span><br></span><span>　　<span>&#167; </span>字体加载目录：您可以指定操作系统从哪个目录加载字体。例如，您现在可以将字体保存在<span>Flash</span>上。 </span><span><br></span><span>　　<strong><span>5.4 </span>丰富的多媒体支持</strong> </span><span><br></span><span>　　支持最新的多媒体体验，包括<span>Microsoft DirectX API</span>和<span>Windows Media 8</span>编解码器和控件： </span><span><br></span><span>　　<strong><span>5.5 </span>最新的<span>Web</span>浏览技术</strong> </span><span><br></span><span>　　<span>Internet Explorer 5.5 for CE</span>：支持<span>Internet Explorer 5.5</span>的功能。 </span><span><br></span><span>　　<strong><span>5.6 </span>广泛的全球性支持</strong> </span><span><br></span><span>　　<span>Windows CE .NET </span>基于<span>Unicode</span>而且具有广泛的本地化和语言支持，这使得嵌入系统的开发人员可以针对特定市场量身定做相应的产品。<span>Windows CE .NET</span>已经使用了多种语言进行了本地化，其中包括了对以下语言的增强支持： </span><span><br></span><span>　　<span>&#167; Agfa</span>字体压缩</span><span><br></span><span>　　<span>&#167; </span>多语言用户界面（<span>Multilingual User Interface</span>，<span>MUI</span>）</span><span><br></span><span>　　<span>&#167; </span>中文操作系统和应用程序支持</span><span><br></span><span>　　<span>&#167; </span>面向简繁体中文的输入法编辑器（<span>Input Method Editors</span>，<span>IME</span>）</span><span><br></span><span>　　<span>&#167; </span>手写识别引擎（<span>Handwriting Recognizer Engine</span>，<span>HWX</span>）和示例用户界面：为多种语言提供了手写识别引擎，包括繁体中文和韩语（<span>Hangul</span>和<span>Hanja</span>）。 </span><span><br></span><span>　　<strong><span>5.7 </span>最容易的<span>Windows</span>集成 </strong></span><span><br></span><span>　　<span>&#167; </span>即时信使通知</span><span><br></span><span>　　<span>&#167; Microsoft Passport</span>身份验证</span><span><br></span><span>　　<strong><span>6 WinCE.NET</span>快捷特性</strong> </span><span><br></span><span>　　<span>6.1 </span>更短的构建<span>--</span>调试<span>--</span>部署周期 </span><span><br></span><span>　　新的特性可以迅速缩短花费在构建和测试设计上的时间，一些新特性包括： </span><span><br></span><span>　　<span>&#167; </span>仿真技术：<span>Windows CE .NET</span>具有仿真技术，该技术允许开发人员在他们的<span>Windows 2000</span>或<span>Windows XP Professional</span>工作站上开发和测试他们的设计，而无需额外的硬件投资。 </span><span><br></span><span>　　<span>&#167; </span>新的平台向导：新的平台向导使用户可以迅速而容易地基于所构建的设备类型创建一个新的平台，并且为设备的设计提供一个基础： </span><span><br></span><span>　　<span>&#167; </span>移动电话<span>/</span>智能电话 </span><span><br></span><span>　　<span>&#167; </span>自定义设备 </span><span><br></span><span>　　<span>&#167; </span>数字成像设备 </span><span><br></span><span>　　<span>&#167; </span>工业自动化设备 </span><span><br></span><span>　　<span>&#167; Internet/</span>媒体设备 </span><span><br></span><span>　　<span>&#167; PDA/</span>移动手持设备 </span><span><br></span><span>　　<span>&#167; </span>住宅门禁 </span><span><br></span><span>　　<span>&#167; POS</span>设备 </span><span><br></span><span>　　<span>&#167; </span>顶置盒 </span><span><br></span><span>　　<span>&#167; </span>微内核 </span><span><br></span><span>　　<span>&#167; Web</span>板设备 </span><span><br></span><span>　　<span>&#167; Windows</span>瘦客户机 </span><span><br></span><span>　　<span>&#167; </span>主板支持包（<span>BSP</span>）：<span>Windows CE .NET</span>包括了多种主板支持包，从而缩短了让操作系统正常工作在硬件上所需的时间。<span>Windows CE .NET</span>当前支持以下的标准开发主板（<span>SDB</span>） </span><span><br></span><span>　　<span>&#167; </span>适用于<span>x86</span>微处理器的<span>Advantech PCM-5822 </span>和<span>PCM-5823 SDB </span></span><span><br></span><span>　　<span>&#167; </span>适用于<span>ARM920</span>微处理器<span>ARM </span>整合<span>SDB </span></span><span><br></span><span>　　<span>&#167; </span>适用于<span>Vr5432</span>微处理器<span>DDB5476 SDB </span></span><span><br></span><span>　　<span>&#167; </span>适用于<span>x86</span>微处理器<span>Dorado </span>参考平台（<span>Reference Platform</span>） </span><span><br></span><span>　　<span>&#167; </span>适用于<span>Vr4122</span>微处理器<span>Eagle SDB </span></span><span><br></span><span>　　<span>&#167; </span>适用于<span>SH3</span>微处理器<span>Hitachi SH3 Keywest SDB </span></span><span><br></span><span>　　<span>&#167; </span>适用于<span>SH4</span>微处理器<span>Hitachi SH4 Aspen SDB </span></span><span><br></span><span>　　<span>&#167; </span>适用于<span>SA1110</span>微处理器<span>Intel SA1110/SA1111 Assabet SDB </span></span><span><br></span><span>　　<span>&#167; </span>适用于<span>x86</span>微处理器<span>Lanner EM-350</span>和<span>EM-351 SDB </span></span><span><br></span><span>　　请经常访问<span>Windows CE</span>硬件支持和设备驱动程序页面了解同附加<span>BSP</span>支持有关的更多信息，这些信息会经常得到更新。 </span><span><br></span><span>　　<span>&#167; </span>共享的调试以太网驱动程序：使调试和生产活动可以共享一个单一的以太网端口。 </span><span><br></span><span>　　<span>&#167; </span>内核独立传输层（<span>Kernel Independent Transport Layer</span>，<span>KITL</span>）：内核独立传输层是一个抽象层，它可以向工具透明地呈现通信硬件。<span>KITL</span>通过删除对开发主板和旧有连接的需要改善了内核的加载、调试和分析过程。 </span><span><br></span><span>　　<span>&#167; </span>远程调用调节器：过程调用配置文件可以发现应用程序中的性能瓶颈。 </span><span><br></span><span>　　<span>&#167; </span>远程内核跟踪：它是一个得到了增强的线程调节器，可以帮助您追捕到竞争条件。 </span><span><br></span><span>　　<span>&#167; </span>远程性能监视器：它是一个得到了增强的性能监视工具，可以帮助您对应用程序进行跟踪和测量系统的性能。 </span><span><br></span><span>　　<span>&#167; </span>扩充远程服务配置：<span>Windows CE .NET</span>允许您保有一个面向多个目标设备的配置列表，每个目标设备都有它自己独一无二的设置。这些设置已经被扩充，以允许对下载和连接过程以及在对目标设备进行重启时控制目标设备所具有的行为。 </span><span><br></span><span>　　<span>&#167; </span>示例设备驱动程序：提供了新的<span>USB</span>打印、海量存储类设备和远程网络驱动程序接口规范（<span>RNDIS</span>）的示例设备驱动程序。 </span><span><br></span><span>　　<span>&#167; </span>扩充输出<span>SDK</span>向导。 </span><span><br></span><span>　　<span>&#167; Windows CE .NET</span>的标准<span>SDK</span>：使用<span>Windows CE .NET</span>的<span> SDK</span>跨越设备构建具有近乎全球移植性的应用程序。 </span><span><br></span><span>　　<strong><span>7 WinCE.NET</span>行业应用</strong> </span><span><br></span><span>　　工业自动化制造商过去通常部署来自不同供应商的孤立信息技术系统，现在他们开始审视那些能在整个企业范围内为通用信息访问提供高效、经济基础结构的技术。产品设计和生产、销售和生产计划、产品管理和工艺控制、以及生产和后勤的无缝链接，是在当今这个注重时间、基于<span>Web</span>的崭新生产制造环境下取得竞争优势的关键所在。 <span>Windows CE</span>操作系统是一个适合下一代互连工业自动化设备的理想小体积嵌入平台。由于使用了<span>MSMQ</span>（<span>Microsoft Message Queuing</span>）这样的先进应用服务，<span>Windows CE</span>使实现与工厂生产现场现有<span>IT</span>设施的全面集成成为可能。它还具有极大增强了的实时支持以提供时间关键的嵌入应用程序所需要的边界限制、确定性的响应时间和控制。因为<span>Windows CE</span>能从闪存磁盘中启动，也就避免了暴露在灰尘、高温、和震动环境下，从而使它可以适应甚至是最恶劣的生产环境。</span></p>
<img src ="http://www.cnitblog.com/salemsu/aggbug/46777.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/salemsu/" target="_blank">沙龙</a> 2008-07-16 11:22 <a href="http://www.cnitblog.com/salemsu/archive/2008/07/16/46777.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>