<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_zhouyou96的博客</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/21946/rss</id><updated>2011-06-24T15:14:46Z</updated><author><name>zhouyou96</name><uri>http://www.cnblogs.com/zhouyou96/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/zhouyou96/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/21946/rss"/><entry><id>http://www.cnblogs.com/zhouyou96/archive/2011/06/24/2089415.html</id><title type="text">原创的java数据访问框架</title><summary type="text">原创的java数据访问框架我的数据访问框架，做好了，包含执行sql语句execute/executeQuery/executeScalar，sql查询，分页查询，执行存储过程，接收存储过程输出参数，事务控制，实体映射，insert/update/save/delete/get/select/paging等各种实体操作，在sqlserver和oracle中测试通过。除connection.properties一个简单的配置文件之外，不需要任何其它配置文件，实体映射使用注解方式。实体类可以是任何类，通过注解得到对应的表名/主键/列表，如果没有写注解，则直接使用类名表示表名，使用字段名表示列名实体类</summary><published>2011-06-24T15:13:00Z</published><updated>2011-06-24T15:13:00Z</updated><author><name>zhouyou96</name><uri>http://www.cnblogs.com/zhouyou96/</uri></author><link rel="alternate" href="http://www.cnblogs.com/zhouyou96/archive/2011/06/24/2089415.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/zhouyou96/archive/2011/06/24/2089415.html"/><content type="html">&lt;p&gt;原创的java数据访问框架&lt;/p&gt;&#xD;
&lt;p&gt;我的数据访问框架，做好了，包含执行sql语句execute/executeQuery/executeScalar，sql查询，分页查询，执行存储过程，接收存储过程输出参数，事务控制，实体映射，insert/update/save/delete/get/select/paging等各种实体操作，在sqlserver和oracle中测试通过。&lt;br /&gt;除connection.properties一个简单的配置文件之外，不需要任何其它配置文件，实体映射使用注解方式。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/18387/2011062423140769.jpg" /&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/18387/2011062423034978.jpg" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/18387/2011062423040997.jpg" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/18387/2011062423042549.jpg" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;实体类可以是任何类，通过注解得到对应的表名/主键/列表，如果没有写注解，则直接使用类名表示表名，使用字段名表示列名&lt;/p&gt;&#xD;
&lt;p&gt;实体类的写法：&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;@Table(&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;TB_Employee&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt; Emp {&lt;br /&gt;    @Id&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt; Integer id;&lt;br /&gt;    @Column(&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;username&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt; String name;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt; String password;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt; String empName;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt; Date beginDate;&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;get/set方法&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;实体操作示例：&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;Employee emp &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Employee();&lt;br /&gt;emp.setId(&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;99999999&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;emp.setUsername(&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;myname&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;emp.setEmpName(&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;测试save&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;emp.setBeginDate(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Date());&lt;br /&gt;Db.save(emp);&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&lt;img src="http://www.cnblogs.com/zhouyou96/aggbug/2089415.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/zhouyou96/archive/2011/06/24/2089415.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/zhouyou96/archive/2011/06/17/2083566.html</id><title type="text">java十宗罪</title><summary type="text">java十宗罪非常抱歉，第1点关于&amp;quot;abc&amp;quot;==&amp;quot;abc&amp;quot;返回false是我搞错了，在java里是返回true的，我没有经过实验就这么说了，非常抱歉。之所以会这么说，是因为不记得是哪一种，因为我使用了==进行了字符串的比较，结果并没有返回我相要的结果，然后请教老人，老人们就训诫道：最好使用equals进行比较，而不要使用==，故有此感慨。好吧，我知道看这标题很多人就忍不住要拍砖或表示不赞同了，我都接受。我在遇到问题时，找一些搞java朋友求助，有能解决的，我想说的是不能解决的情况下，他们大多会说：“你怎么能这么弄呢？这么搞是不行的，你首先在思路上就错误了</summary><published>2011-06-17T06:07:00Z</published><updated>2011-06-17T06:07:00Z</updated><author><name>zhouyou96</name><uri>http://www.cnblogs.com/zhouyou96/</uri></author><link rel="alternate" href="http://www.cnblogs.com/zhouyou96/archive/2011/06/17/2083566.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/zhouyou96/archive/2011/06/17/2083566.html"/><content type="html">&lt;p&gt;java十宗罪&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;span style="color: #ff0000;"&gt;非常抱歉，第1点关于"abc"=="abc"返回false是我搞错了，在java里是返回true的，我没有经过实验就这么说了，非常抱歉。之所以会这么说，是因为不记得是哪一种，因为我使用了==进行了字符串的比较，结果并没有返回我相要的结果，然后请教老人，老人们就训诫道：最好使用equals进行比较，而不要使用==，故有此感慨。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;好吧，我知道看这标题很多人就忍不住要拍砖或表示不赞同了，我都接受。&lt;/p&gt;&#xD;
&lt;p&gt;我在遇到问题时，找一些搞java朋友求助，有能解决的，我想说的是不能解决的情况下，他们大多会说：&amp;ldquo;你怎么能这么弄呢？这么搞是不行的，你首先在思路上就错误了，我们从来就不这么做。&amp;rdquo;，比如&amp;ldquo;我们一般很少用存储过程，你用这么多存储过程，我建议你使用hibernate代码实现你的业务，而不是用存储过程&amp;rdquo;，这个问题是在我遇到用hibernate调存储过程时发生一些状况后，我一个搞java的朋友也无法解决时，他如此说道。&lt;br /&gt;java开发人员还喜欢说：这个不应该由jdk或某某框架完成，而应该是由勇敢、勤劳、智慧的您来编写实现的。&lt;/p&gt;&#xD;
&lt;p&gt;以下都是我在开发java项目时，遇到的一些问题，可能也有写得不对的地方，望指正。&lt;br /&gt;遇到很多问题，一时间无法全部拿出来讨论，就随便列举了几条。&lt;/p&gt;&#xD;
&lt;p&gt;1."abc"=="abc"返回的结果是false，很多初学java的都要在这个问题很浪费很多时间，因为会非常自信的以为这里会返回true，根本不会想到原来问题出在这里。网上看到有贴子讨论过这个问题，说什么java是纯面向对象的语言，==操作符是比较地址什么的，而"abc"是引用，所以不能使用==操作符进行比较，而应该使用equals方法来进行比较，会犯这种错误的，多半是因为自己基础不牢，却还来说java的不是。我看到一个人说的一个例子，很能表示我的感想，是这么说的：有一天我去到一个餐厅，因为餐厅门口有一滩水，导致路面很滑，我不小心摔倒了，于是我找来餐厅经理，追究其责任，结果餐厅经理告诉我，这是因为我自己走路的姿势不对，所以滑倒了，与餐厅无关。&lt;/p&gt;&#xD;
&lt;p&gt;2.为什么没有get;set;属性，而是使用getXX();setXX()方法来代替，反射难道不要成本吗？&lt;br /&gt;&amp;nbsp; 我所了解到的struts\spring\hibernate里都大量用到这种方式，比如struts中的vo对象，里面若有个getUsername()，在页面里可以用&amp;lt;s:property value="username"/&amp;gt;来取值，这中间我想应该是用反射来找到getUsername()方法，再取得其值的吧，同样的spring\hibernate中也大量用到这种方式，我想问，反射不是说很低效的吗？&lt;/p&gt;&#xD;
&lt;p&gt;3.做个自定义标签还要自己写个tld配置文件，有时在看一些java的相关书籍上面提到零配置时，我就觉得非常可笑，不知道所谓零配置的精神到底体现在哪里？也许写个配置文件也并没有那么难，但关键问题在于，从技术上来讲这个tld明显是可以不要的啊，tld里面主要就描述了这个tag叫什么名字有哪些属性，分别是什么类型，这些信息完全可以在类里面表示，只要是实现Tag接口的类就被自动识别为自定义标签这样不好吗？通过识别类里有哪些getXX();setXX();（更好的方案是有get;set;属性）来确定这个自定义标签有哪些属性，又分别是什么类型这样不好吗？为什么还要多此一举搞个tld配置文件？&lt;br /&gt;&amp;nbsp; 还有个问题是，如果我写了个MyTag的类，继承了某个自定义标签类，我还要为MyTag写个相应的tld配置，我不知道将来还有没有其他开发人员会继承我的MyTag，也许就算我热烈欢迎别人来继承我的MyTag，但当别人看到我MyTag里近三四十个getXX();setXX();之后，想到要为其写上相应的tld配置文件而望而生怯吧。&lt;/p&gt;&#xD;
&lt;p&gt;4.数据访问在我看来，应该是个很简单的事情，简单来就，就是执行SQL语句，复杂一点，就再加上实体映射，所有框架解决的问题，首先就是要易于使用，在使用过hibernate之后，我感觉它太复杂了，我在.net里有一个数据访问层，只需要在指定的配置文件中配置连接字符串，就可以在程序中的任何地方调用DbHelper.Execute(sql)、DbHelper.ExecuteDataSet(sql)、DbHelper.ExecuteDataTable(sql)了，使用起来非常简单，当然也有实体映射，DbHelper.save(entity)、DbHelper.delete(entity or key)、DbHelper.select(条件)这一组方法就可以操作实体对象，select返回的是实体列表，实体通过元属性设置其关联的表和字段，这中间除了连接字符串之外，是没有任何其它配置文件的。相比之下，hibernate咋需要这么多配置文件？我知道hibernate也可以配置注解，就不需了hbm配置文件了，但即使这样，据我了解依旧还是需要很多除连接字符串之外的其它的相关配置文件。&lt;/p&gt;&#xD;
&lt;p&gt;5.话说java也有这么多年了，hibernate也有这么多年了，到底是我不会用，还是它真的就是这样的，hibernate对于存储过程的支持，实在让我抓狂，居然不支持存储过程，在网上寻找hibernate调用存储过程，得到的答案多数就是越过hibernate，而仅仅从hibernate中取得一个connection，再使用jdbc的方式调用存储过程，这样做存在一个问题，事务不能得到控制了，由于我还比较水，hibernate的事务控制又是暗箱操作的，好像是只要在service层中写的业务代码就都在一个事务中，所以我无法让我的存储过程调用和hibernate业务代码串在一个事务当中，而很多情况下，我是想要让它们一个失败就全部失败的。&lt;br /&gt;&amp;nbsp; 除此之外，也有不越过hibernate而调用存储过程的办法，有两个，也是要写配置文件，一个是必须要有返回的结果集，我就很纳闷，为什么一定要有结果集，我的很多存储过程就只是处理一些数据，不需要返回结果集的，最难受的是oracle的存储过程其实不支持返回结果集，必须使用一种变态的游标方式返回，这么做我会感觉到极其反胃。另一个办法是通过修改实体在insert\update\delete时的默认行为，比如我在insert一个员工时，本来应该是执行sql语句insert into employee values (?,?,?,?)的，我可以通过配置文件修改这个默认行为，改成{call myproc(?,?,?,?)}，这种方式显然也不是我想要的，我只想调用一个存储过程，执行一个业务的处理。以上两种方式是会被暗箱操作的事务所管理的，但并不能满足我的需求，我要怎么办？&lt;/p&gt;&#xD;
&lt;p&gt;6.数据访问的结果集对象ResultSet、RowSet、CachedRowSet等没有得到广泛的应用，各个框架更多的是倾向于支持实体列表，这么做导致出现一个问题，那就是我只能返回已知结构的结果集，若想要临时返回个东西还必须要在实体中添加相应的属性getXX();setXX();方法，比如在hibernate中，要访问员工表，员工表中本来只有部门ID，没有部门名称，你想要有部门名称，就必须在员工实体中添加一个deptName的属性，要所有的结果都是已知结构的，这样很痛苦，如果不返回到实体列表中，也可以返回到 ArrayList&amp;lt;Object[]&amp;gt; 中，但这样的数据没有列名称，不明白为什么不直接查询到ResultSet中，然后让更多的框架支持ResultSet，比如struts，在写页面使用struts标签时，可以像操作实体列表一样操作ResultSet。&lt;br /&gt;&amp;lt;s:iterator id="myResultSet"&amp;gt;...&amp;lt;/s:iterator&amp;gt;，（还是本来就支持，只是我不会？那就不好意思啦！）只是希望让更多的框架支持未知结构的结果集，让程序员事先设计好结果集的结构是很累人的，就算是代码生成，也只能生成数据库里的每一张表对应的实体，但往往我们需要select unkownSchema from myTable得到未知结构的结果集，并不是每次都select *。&lt;/p&gt;&#xD;
&lt;p&gt;7.再说ResultSet，之所以不直接用这个，而使用实体列表来代替，我想是不是也间接的说明了，ResultSet这个类不方便使用，.net中的DataSet和DataTable就得到大量使用，因为它们方便好用实用。可能最大差别的地方就在于，DataSet是断开式的存在于内存中的微型数据库，而ResultSet只是连接式的数据库读取器，相当于.net中的DataReader，必须保持连接才能读数据，我知道有CachedRowSet可以断开式的存储数据在内存中，好吧，这个就不是问题了。但另一个问题在滋扰着我，做为存储结果集的容器，提供给我们操作这个结果集的方法太少了，甚至取得该结果集的总行数的方法，我们都需要开动小脑筋，这么写：rs.last(); int count = rs.getRow(); rs.first() 负责的话，它需要至少三句代码才能取到总行数。也许这只是小问题，这个或许应该由勇敢、勤劳、智慧的我们来实现。&lt;/p&gt;&#xD;
&lt;p&gt;8.在我看来，struts最大的意义在于，它使得每个jsp页面都有了一个与之对应的java类的方法，也就是那个action方法。你一定会跟我说，struts的功能并不只如此，但我说，我见过的很多（小公司）的项目，struts的意义就只是这样的，我想像在我们国家，还有成千上万的使用java技术的公司，struts对于他们的意义，也就是让jsp有了后台代码。如果仅仅只是如此，为何不由官方提供，直接让jdk支持，让struts的先进来弥补jdk的落后吗？只会欲盖弥彰。&lt;br /&gt;&amp;nbsp; 或者你会说，即便struts就是提供了让每个jsp页面都有一个与之对应的action方法，这也非常伟大了，做到这一点，已经彻底改变了人们开发web项目的方式，由原来的业务代码和页面混在一起，变成解偶分离，非常成功了。我想说，不要拿你十年前的荣耀到今天再来说了，已经out的不行了。&lt;/p&gt;&#xD;
&lt;p&gt;9.再说myeclipse，这个ide在java体系中几乎成为标准，我见过的所有java开发人员都是使用这个IDE，但相比之下，它与visual studio就相差太多了，性能就不说了，如果不做优化，那是慢得想死，话说为什么不能在其一发布出来的默认设置就是最优化的呢？如果我们需要什么插件组件，再自己加载，这样不是更清楚明白吗？&lt;br /&gt;另外myeclipse的插件安装方式实在让我汗颜，6.x，7.x，8.x这几个版本的插件安装方式各不相同，我在想，为什么不能直接双击安装？vss2005就是直接双击安装。至今我还没搞清楚svn插件怎么安装的，好吧，我是很水，那个插件的安装有时要复制文件到指定目录，有时要启动myeclipse之后，选择help菜单下的software updates，有时候又要选择什么myeclipse configuration center，有时候要连接互联网在线操作，更甚者，给你个java文件，要你编译成class文件，再按步骤操作，我是服了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;10.out输出参数，部分类，扩展方法，lamuda表达式这些非常好的东西，java都没有，还是我不会吗？望指正。&lt;br /&gt;&amp;nbsp;&amp;nbsp; spring，其实我现在还不知道它是干嘛的，好吧，这是我的罪。&lt;/p&gt;&#xD;
&lt;p&gt;望展开激烈、火爆的讨论，可以使用分庭伉礼、围魏救赵、十面埋伏、单挑、围殴等各种手段。&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/zhouyou96/aggbug/2083566.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/zhouyou96/archive/2011/06/17/2083566.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/zhouyou96/archive/2010/12/22/1913893.html</id><title type="text">Oracle自动备份.bat  更新</title><summary type="text">20101222更新：1.对配置文件进行加密20101210更新：1.修改一些已知bug2.添加了删除过期备份文件的日志 3.添加了如果今天的备份没有成功，则不删除过期备份20101203更新：1.将备份文件压缩到zip或rar，并删除dmp20101201最初版本：1.设置保存到配置文件2.自动添加计划任务3.友好操作界面4.自动删除已过期的备份文件下载：OracleAutoBackup.rar</summary><published>2010-12-22T07:13:00Z</published><updated>2010-12-22T07:13:00Z</updated><author><name>zhouyou96</name><uri>http://www.cnblogs.com/zhouyou96/</uri></author><link rel="alternate" href="http://www.cnblogs.com/zhouyou96/archive/2010/12/22/1913893.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/zhouyou96/archive/2010/12/22/1913893.html"/><content type="html">&lt;p&gt;20101222更新：&lt;br /&gt;1.对配置文件进行加密&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;20101210更新：&lt;br /&gt;1.修改一些已知bug&lt;br /&gt;2.添加了删除过期备份文件的日志 &lt;br /&gt;3.添加了如果今天的备份没有成功，则不删除过期备份&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;20101203更新：&lt;br /&gt;1.将备份文件压缩到zip或rar，并删除dmp&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;20101201最初版本：&lt;br /&gt;1.设置保存到配置文件&lt;br /&gt;2.自动添加计划任务&lt;br /&gt;3.友好操作界面&lt;br /&gt;4.自动删除已过期的备份文件&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/18387/2010122215131349.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;下载：&lt;a href="http://files.cnblogs.com/zhouyou96/OracleAutoBackup.rar"&gt;OracleAutoBackup.rar&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/zhouyou96/aggbug/1913893.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/zhouyou96/archive/2010/12/22/1913893.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/zhouyou96/archive/2010/12/03/1895578.html</id><title type="text">C++ 方块游戏小更新</title><summary type="text">更新(2010-12-03)：1.向ansi与unicode两种字符集兼容，LPCTSTR 这种类型可以向不同字符集兼容，lstrlen 可以求其长度2.更换小图片为背景，这样生成的程序只有63k，否则有1M多，那个背景图就快1M了下载：http://files.cnblogs.com/zhouyou96/Tetris2.rar</summary><published>2010-12-03T08:12:00Z</published><updated>2010-12-03T08:12:00Z</updated><author><name>zhouyou96</name><uri>http://www.cnblogs.com/zhouyou96/</uri></author><link rel="alternate" href="http://www.cnblogs.com/zhouyou96/archive/2010/12/03/1895578.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/zhouyou96/archive/2010/12/03/1895578.html"/><content type="html">&lt;p&gt;&lt;br /&gt;更新(2010-12-03)：&lt;br /&gt;1.向ansi与unicode两种字符集兼容，LPCTSTR 这种类型可以向不同字符集兼容，lstrlen 可以求其长度&lt;br /&gt;2.更换小图片为背景，这样生成的程序只有63k，否则有1M多，那个背景图就快1M了&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;下载：&amp;nbsp;&lt;a href="http://files.cnblogs.com/zhouyou96/Tetris2.rar"&gt;http://files.cnblogs.com/zhouyou96/Tetris2.rar&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/zhouyou96/aggbug/1895578.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/zhouyou96/archive/2010/12/03/1895578.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/zhouyou96/archive/2010/11/26/1888698.html</id><title type="text">Oracle自动备份.bat</title><summary type="text">使用操作系统自带的计划任务功能，每天定时运行exp命令导出指定的Oracle数据库并压缩，然后按需删除已过期的压缩的导出文件，以实现自动备份的功能。20101210更新：1.修改一些已知bug2.添加了删除过期备份文件的日志3.添加了如果今天的备份没有成功，则不删除过期备份20101203更新：1.将备份文件压缩到zip或rar，并删除dmp最初版本：1.设置保存到配置文件2.自动添加计划任务3.友好操作界面4.自动删除已过期的备份文件下载：Oracle自动备份.rar</summary><published>2010-11-26T05:48:00Z</published><updated>2010-11-26T05:48:00Z</updated><author><name>zhouyou96</name><uri>http://www.cnblogs.com/zhouyou96/</uri></author><link rel="alternate" href="http://www.cnblogs.com/zhouyou96/archive/2010/11/26/1888698.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/zhouyou96/archive/2010/11/26/1888698.html"/><content type="html">&lt;p&gt;使用操作系统自带的计划任务功能，每天定时运行exp命令导出指定的Oracle数据库并压缩，然后按需删除已过期的压缩的导出文件，以实现自动备份的功能。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/18387/2010112616380751.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;20101210更新：&lt;/p&gt;&#xD;
&lt;p&gt;1.修改一些已知bug&lt;/p&gt;&#xD;
&lt;p&gt;2.添加了删除过期备份文件的日志&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;3.添加了如果今天的备份没有成功，则不删除过期备份&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;20101203更新：&lt;/p&gt;&#xD;
&lt;p&gt;1.将备份文件压缩到zip或rar，并删除dmp&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;最初版本：&lt;/p&gt;&#xD;
&lt;p&gt;1.设置保存到配置文件&lt;/p&gt;&#xD;
&lt;p&gt;2.自动添加计划任务&lt;/p&gt;&#xD;
&lt;p&gt;3.友好操作界面&lt;/p&gt;&#xD;
&lt;p&gt;4.自动删除已过期的备份文件&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;下载：&lt;a href="http://files.cnblogs.com/zhouyou96/Oracle%e8%87%aa%e5%8a%a8%e5%a4%87%e4%bb%bd.rar"&gt;Oracle自动备份.rar&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/zhouyou96/aggbug/1888698.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/zhouyou96/archive/2010/11/26/1888698.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/zhouyou96/archive/2010/11/24/1886310.html</id><title type="text">文件保护.bat</title><summary type="text">写了个文件保护的批处理，用于简单的保护移动硬盘中的exe文件文件保护.bat下载批处理文件： 点击下载</summary><published>2010-11-24T03:05:00Z</published><updated>2010-11-24T03:05:00Z</updated><author><name>zhouyou96</name><uri>http://www.cnblogs.com/zhouyou96/</uri></author><link rel="alternate" href="http://www.cnblogs.com/zhouyou96/archive/2010/11/24/1886310.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/zhouyou96/archive/2010/11/24/1886310.html"/><content type="html">&lt;p&gt;写了个文件保护的批处理，用于简单的保护移动硬盘中的exe文件&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/18387/2010112411103663.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('daf4ae52-b512-4feb-8b19-0b787c7ffe3e')"&gt;&#xD;
&lt;div id="cnblogs_code_open_daf4ae52-b512-4feb-8b19-0b787c7ffe3e" &gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;span style="color: #000000;"&gt;@echo off&lt;br /&gt;mode con cols&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800080;"&gt;40&lt;/span&gt;&lt;span style="color: #000000;"&gt; lines&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800080;"&gt;25&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;title 文件保护 v1.&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt; by zhouyou96&lt;br /&gt;color 0e&lt;br /&gt;&lt;br /&gt;::&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt; bh_dir&lt;/span&gt;&lt;span style="color: #000000;"&gt;=%~&lt;/span&gt;&lt;span style="color: #000000;"&gt;pd0 &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt; bh_dir&lt;/span&gt;&lt;span style="color: #000000;"&gt;=%&lt;/span&gt;&lt;span style="color: #000000;"&gt;cd&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;br /&gt;:start&lt;br /&gt;cls&lt;br /&gt;echo  &lt;/span&gt;&lt;span style="color: #000000;"&gt;--------------------------------------&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;echo              文件保护 v1.&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;echo       作者：zhouyou96 QQ:&lt;/span&gt;&lt;span style="color: #800080;"&gt;191458000&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;echo  &lt;/span&gt;&lt;span style="color: #000000;"&gt;--------------------------------------&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;echo  　　为了防止移动硬盘中的文件中毒，可以&lt;br /&gt;echo  通过简单的将&amp;ldquo;.exe&amp;rdquo;文件重命名为&amp;ldquo;.exe&lt;br /&gt;echo  .保护&amp;rdquo;达到保护的目的。&lt;br /&gt;echo.&lt;br /&gt;echo  &lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;.后面加&amp;ldquo;.保护&amp;rdquo;；&lt;br /&gt;echo  &lt;/span&gt;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;.将&amp;ldquo;.保护&amp;rdquo;去掉；&lt;br /&gt;echo  &lt;/span&gt;&lt;span style="color: #800080;"&gt;3&lt;/span&gt;&lt;span style="color: #000000;"&gt;.向操作系统注册&amp;ldquo;.保护&amp;rdquo;文件；&lt;br /&gt;echo  &lt;/span&gt;&lt;span style="color: #800080;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;.从系统中反注册&amp;ldquo;.保护&amp;rdquo;文件；&lt;br /&gt;echo  &lt;/span&gt;&lt;span style="color: #800080;"&gt;5&lt;/span&gt;&lt;span style="color: #000000;"&gt;.退出&lt;br /&gt;echo.&lt;br /&gt;echo  正在操作目录：&lt;br /&gt;echo  &lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;bh_dir&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;echo.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;:cho&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt; choice&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;p choice&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;请选择：&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; not &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;%choice%&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #800000;"&gt;""&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt; choice&lt;/span&gt;&lt;span style="color: #000000;"&gt;=%&lt;/span&gt;&lt;span style="color: #000000;"&gt;choice:&lt;/span&gt;&lt;span style="color: #000000;"&gt;~&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;%choice%&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;1&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;goto&lt;/span&gt;&lt;span style="color: #000000;"&gt; pro&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;%choice%&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;2&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;goto&lt;/span&gt;&lt;span style="color: #000000;"&gt; unpro&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;%choice%&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;3&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;goto&lt;/span&gt;&lt;span style="color: #000000;"&gt; regbh&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;%choice%&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;4&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;goto&lt;/span&gt;&lt;span style="color: #000000;"&gt; unregbh&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;%choice%&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;5&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;goto&lt;/span&gt;&lt;span style="color: #000000;"&gt; end&lt;br /&gt;echo.&lt;br /&gt;echo      &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;请选择1&lt;/span&gt;&lt;span style="color: #000000;"&gt;~&lt;/span&gt;&lt;span style="color: #800080;"&gt;5&lt;/span&gt;&lt;span style="color: #000000;"&gt;，按任意键重选&lt;/span&gt;&lt;span style="color: #000000;"&gt;!!!==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br /&gt;pause&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;nul&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;goto&lt;/span&gt;&lt;span style="color: #000000;"&gt; start&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;:pro&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;for&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;r &lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;bh_dir&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;%%&lt;/span&gt;&lt;span style="color: #000000;"&gt;i &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;.exe;&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;.dll) &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;do&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;br /&gt;  cls&lt;br /&gt;  echo      &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;正在执行，后面加&amp;ldquo;.保护&amp;rdquo;  &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;  echo  正在处理：&lt;/span&gt;&lt;span style="color: #000000;"&gt;%%&lt;/span&gt;&lt;span style="color: #000000;"&gt;i&lt;br /&gt;  ren &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;%%i&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;%%~nxi.保护&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;)&lt;br /&gt;cls&lt;br /&gt;echo.&lt;br /&gt;echo      &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;后面加&amp;ldquo;.保护&amp;rdquo;，操作完成。&lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;echo      &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;      按任意键继续         &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;pause&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;nul&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;goto&lt;/span&gt;&lt;span style="color: #000000;"&gt; start&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;:unpro&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;for&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;r &lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;bh_dir&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;%%&lt;/span&gt;&lt;span style="color: #000000;"&gt;i &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;.保护) &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;do&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;br /&gt;  cls&lt;br /&gt;  echo      &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;正在执行，将&amp;ldquo;.保护&amp;rdquo;去掉&amp;rdquo;  &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;  echo  正在处理：&lt;/span&gt;&lt;span style="color: #000000;"&gt;%%&lt;/span&gt;&lt;span style="color: #000000;"&gt;i&lt;br /&gt;  ren &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;%%i&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;%%~ni&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;)&lt;br /&gt;cls&lt;br /&gt;echo.&lt;br /&gt;echo      &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;将&amp;ldquo;.保护&amp;rdquo;去掉，操作完成。&lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br /&gt;echo      &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;      按任意键继续         &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;pause&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;nul&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;goto&lt;/span&gt;&lt;span style="color: #000000;"&gt; start&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;:changedir&lt;br /&gt;echo.&lt;br /&gt;echo      &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;暂未实现&lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br /&gt;pause&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;nul&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;goto&lt;/span&gt;&lt;span style="color: #000000;"&gt; start&lt;br /&gt;&lt;br /&gt;cls&lt;br /&gt;echo.&lt;br /&gt;echo      &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;      按任意键继续         &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;pause&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;nul&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;goto&lt;/span&gt;&lt;span style="color: #000000;"&gt; start&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;:regbh&lt;br /&gt;copy &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;%0&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;%windir%\bh.bat&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;assoc .保护&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;受保护的文件&lt;br /&gt;ftype 受保护的文件&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;%windir%\bh.bat&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;cls&lt;br /&gt;echo.&lt;br /&gt;echo   &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;已向操作系统注册&amp;ldquo;.保护&amp;rdquo;文件。&lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br /&gt;echo   在cmd命令模式下运行bh以保护当前目录&lt;br /&gt;echo   &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;        按任意键继续           &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;pause&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;nul&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;goto&lt;/span&gt;&lt;span style="color: #000000;"&gt; start&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;:unregbh&lt;br /&gt;del &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;%windir%\bh.bat&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;f&lt;br /&gt;assoc .保护&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;ftype 受保护的文件&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;cls&lt;br /&gt;echo.&lt;br /&gt;echo   &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;已从系统中反注册&amp;ldquo;.保护&amp;rdquo;文件。&lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br /&gt;echo   &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;        按任意键继续           &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;pause&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;nul&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;goto&lt;/span&gt;&lt;span style="color: #000000;"&gt; start&lt;br /&gt;&lt;br /&gt;:end&lt;br /&gt;exit&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;下载批处理文件： &lt;a href="http://files.cnblogs.com/zhouyou96/%e6%96%87%e4%bb%b6%e4%bf%9d%e6%8a%a4.rar" target="_blank"&gt;点击下载&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/zhouyou96/aggbug/1886310.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/zhouyou96/archive/2010/11/24/1886310.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/zhouyou96/archive/2010/11/10/TableEx.html</id><title type="text">TableEx 控件 v1.0 [原创][免费][开源]</title><summary type="text">TableEx 控件 v1.0 [原创][免费][开源]TableEx是一个用于批量操作数据的表格控件，在处理类似出库单明细这样的业务时，表现十分优越，是开发商业软件重要的组成部分，一款非常实用的商业控件。作者：zhouyou96发布日期：2010-11-10http://www.cnblogs.com/zhouyou96注意：本控件基于 vs2008 的 dotnet3.5 开发，该 API 文...</summary><published>2010-11-10T04:07:00Z</published><updated>2010-11-10T04:07:00Z</updated><author><name>zhouyou96</name><uri>http://www.cnblogs.com/zhouyou96/</uri></author><link rel="alternate" href="http://www.cnblogs.com/zhouyou96/archive/2010/11/10/TableEx.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/zhouyou96/archive/2010/11/10/TableEx.html"/><content type="html">&lt;p&gt;TableEx 控件 v1.0 [原创][免费][开源]&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;TableEx是一个用于批量操作数据的表格控件，在处理类似出库单明细这样的业务时，表现十分优越，是开发商业软件重要的组成部分，一款非常实用的商业控件。&lt;br /&gt;作者：zhouyou96&lt;br /&gt;发布日期：2010-11-10&lt;br /&gt;&lt;a href="http://www.cnblogs.com/zhouyou96"&gt;http://www.cnblogs.com/zhouyou96&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/18387/2010111012044468.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;注意：本控件基于 vs2008 的 dotnet3.5 开发，该 API 文档也需要在 vs2008 中才能打开运行。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;一、客户端基本编辑功能&lt;/p&gt;&#xD;
&lt;p&gt;1.客户端动态添加行，也可以设置为禁止添加；&lt;/p&gt;&#xD;
&lt;p&gt;2.客户端动态删除行，也可以设置为禁止删除；&lt;/p&gt;&#xD;
&lt;p&gt;3.客户端批量编辑数据，也可以设置为全部只读、某行只读或某列只读；&lt;/p&gt;&#xD;
&lt;p&gt;4.使用上下左右方向键可以在表格的单元格间移动。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;二、多种不同类型的列，供开发人员选择&lt;/p&gt;&#xD;
&lt;p&gt;1.序数列，可以控制显示或不显示序数列；&lt;/p&gt;&#xD;
&lt;p&gt;2.文本列，普通的文本输入；&lt;/p&gt;&#xD;
&lt;p&gt;3.复选列，支持全选；&lt;/p&gt;&#xD;
&lt;p&gt;4.数字列，自定义保留小数位位数，以及控制是否显示合计；&lt;/p&gt;&#xD;
&lt;p&gt;5.日期列，需my97日历控件支持；&lt;/p&gt;&#xD;
&lt;p&gt;6.实体列，例如双击该列的某行，双击弹出窗口，选择一个员工、一个客户或一个商品等等（弹出窗口需要开发人员自己编写）；&lt;/p&gt;&#xD;
&lt;p&gt;7.隐藏列，常用于配合实体列使用，如选择一个员工，实体列显示员工名称，隐藏列存放员工编号；&lt;/p&gt;&#xD;
&lt;p&gt;8.继承 TableExColumn 类，可以实现自己定制的列。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;三、外观定制&lt;/p&gt;&#xD;
&lt;p&gt;1.可以通过修改TableEx.css样式表文件，对TableEx的基础外观进行修改；&lt;/p&gt;&#xD;
&lt;p&gt;2.列提供CssCss、Style、ExtendProperty、CellStyle、CellExtendProperty等属性，用于设置样式。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;四、客户端公式计算&lt;/p&gt;&#xD;
&lt;p&gt;1.公式可以实现类似数量*单价=自动计算金额这样的功能；&lt;/p&gt;&#xD;
&lt;p&gt;2.支持多个公式输入，可以实现类似&amp;ldquo;数量*成本单价=自动计算成本金额&amp;rdquo;、&amp;ldquo;数量*销售单价=自动计算销售金额&amp;rdquo;、&amp;ldquo;销售金额-成本金额=自动计算利润&amp;rdquo;这样的功能；&lt;/p&gt;&#xD;
&lt;p&gt;3.公式还支持自定义函数，如自动计算成本金额=fun1(数量，成本单价)，fun1是函数，如 function fun1(a,b){return a*b}。&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;五、客户端函数&lt;/p&gt;&#xD;
&lt;p&gt;1.提供多种客户端事件，方便开发人员在客户端灵活操作表格，比如控件初始化完成事件、行添加事件、行删除事件、合计改变事件等；&lt;/p&gt;&#xD;
&lt;p&gt;2.查找函数，可以精确的查找到任何一个单元格，以进行操作；&lt;/p&gt;&#xD;
&lt;p&gt;3.索引号函数，可以返回指定单元格的行号或列号；&lt;/p&gt;&#xD;
&lt;p&gt;4.添加行、删除行、重置表格内容、重新计算合计函数；&lt;/p&gt;&#xD;
&lt;p&gt;5.复制表格内容函数，将复制的内容在Excel中粘贴。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;六、服务端功能&lt;/p&gt;&#xD;
&lt;p&gt;1.接受DataTable为数据源，直接显示数据，这类似于GridView；&lt;/p&gt;&#xD;
&lt;p&gt;2.收集用户在客户端添加、删除以及批量编辑的数据，用于在服务端处理。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;软件相关截图：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/18387/2010111913153624.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/18387/2010111913164024.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/18387/2010111913165617.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/18387/2010111913170836.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/18387/2010111913172188.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/18387/2010111913174275.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/18387/2010111913175385.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;还有详细的API文档和示例：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/18387/2010111913150737.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;下载源代码和API文档：&lt;a href="http://files.cnblogs.com/zhouyou96/TableEx.rar"&gt;http://files.cnblogs.com/zhouyou96/TableEx.rar&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;(我看到下载已有190次了，如果您下载后觉得好用，我需要你的评论，谢谢！)&lt;/p&gt;&lt;img src="http://www.cnblogs.com/zhouyou96/aggbug/1873589.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/zhouyou96/archive/2010/11/10/TableEx.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/zhouyou96/archive/2010/10/18/1854046.html</id><title type="text">偷偷看小说 v2.0</title><summary type="text">偷偷看小说 v2.0办公室里偷偷看小说，就算老板站在你身后，不仔细看，也不知道你在看小说！(我实验过)v1.0功能说明：1.可打开txt格式的小说（功能全部在右击菜单中）2.记录最近打开的文件3.记录上次打开的文件和上次阅读的位置（书签功能）4.查找功能5.阅读器在操作系统任务栏上没有图标，没有标题框，没有工具栏，没有边框， 只有一个淡淡的背景，而且是透明的，有很好的伪装作用 （背景色可以改，但目...</summary><published>2010-10-18T02:40:00Z</published><updated>2010-10-18T02:40:00Z</updated><author><name>zhouyou96</name><uri>http://www.cnblogs.com/zhouyou96/</uri></author><link rel="alternate" href="http://www.cnblogs.com/zhouyou96/archive/2010/10/18/1854046.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/zhouyou96/archive/2010/10/18/1854046.html"/><content type="html">&lt;p&gt;偷偷看小说 v2.0&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;办公室里偷偷看小说，就算老板站在你身后，不仔细看，也不知道你在看小说！(我实验过)&lt;br /&gt;v1.0功能说明：&lt;/p&gt;&#xD;
&lt;p&gt;1.可打开txt格式的小说（功能全部在右击菜单中）&lt;br /&gt;2.记录最近打开的文件&lt;br /&gt;3.记录上次打开的文件和上次阅读的位置（书签功能）&lt;br /&gt;4.查找功能&lt;br /&gt;5.阅读器在操作系统任务栏上没有图标，没有标题框，没有工具栏，没有边框，&lt;br /&gt;&amp;nbsp; 只有一个淡淡的背景，而且是透明的，有很好的伪装作用&lt;br /&gt;&amp;nbsp; （背景色可以改，但目前有bug，背景改了后，要重启程序才会正常）&lt;br /&gt;6.可以设置字体样式，文字颜色，背景颜色，和透明度（快键键没有提供修改功能）&lt;br /&gt;7.alt+x是老板键（按一下隐藏，再按一下出现），目前的版本不提供设置功能，要改的话，源代码里可改&lt;br /&gt;8.使用鼠标滚轮，键盘上下左右键，以及wsad键可以移动光标，进行阅读&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;v2.0更新&lt;br /&gt;1.解决在阅读时，有时按Ctrl+F不能调出查找框&lt;br /&gt;2.解决当打开小说自动加载上次位置后，不进行任何操作就直接退出，会丢失书签的BUG&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这个东西也没有什么技术含量，只是我感觉idea还不错，源代码给大家看吧，开发平台是vs2008，写得比较乱，&lt;br /&gt;反正是东拼西凑出来的，像什么透明，移动窗体，读文本文件，老板键等等，都是网上找的代码&lt;br /&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/18387/2010101810360932.gif" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/18387/2010101810362287.gif" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/18387/2010102009130766.gif" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/18387/2010101810363510.gif" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/18387/2010101810364096.gif" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/18387/2010101810364550.gif" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;下载地址：&lt;a href="http://files.cnblogs.com/zhouyou96/xbook.rar"&gt;http://files.cnblogs.com/zhouyou96/xbook.rar&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;需要dotnet3.5，下载地址：&lt;a href="http://www.microsoft.com/downloads/en/confirmation.aspx?FamilyId=333325fd-ae52-4e35-b531-508d977d32a6&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/en/confirmation.aspx?FamilyId=333325fd-ae52-4e35-b531-508d977d32a6&amp;amp;displaylang=en&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/zhouyou96/aggbug/1854046.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/zhouyou96/archive/2010/10/18/1854046.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/zhouyou96/archive/2010/05/11/1732287.html</id><title type="text">一个oracle的论坛</title><summary type="text">http://home.chinaoug.org</summary><published>2010-05-11T02:04:00Z</published><updated>2010-05-11T02:04:00Z</updated><author><name>zhouyou96</name><uri>http://www.cnblogs.com/zhouyou96/</uri></author><link rel="alternate" href="http://www.cnblogs.com/zhouyou96/archive/2010/05/11/1732287.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/zhouyou96/archive/2010/05/11/1732287.html"/><content type="html">&lt;p&gt;&lt;a href="http://home.chinaoug.org"&gt;http://home.chinaoug.org&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/zhouyou96/aggbug/1732287.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/zhouyou96/archive/2010/05/11/1732287.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/zhouyou96/archive/2010/05/11/1732245.html</id><title type="text">oracle中的''空字符串和null居然是等价的</title><summary type="text">今天发现oracle中的 ''空字符串 和 null 居然是等价的。这意味着 length('') 不会返回0，而是null。这意味着 length('')+2 不会返回2，而是null。我只有 nvl(length(''),0)+2 这样让它返回2了。</summary><published>2010-05-11T01:23:00Z</published><updated>2010-05-11T01:23:00Z</updated><author><name>zhouyou96</name><uri>http://www.cnblogs.com/zhouyou96/</uri></author><link rel="alternate" href="http://www.cnblogs.com/zhouyou96/archive/2010/05/11/1732245.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/zhouyou96/archive/2010/05/11/1732245.html"/><content type="html">&lt;p&gt;今天发现oracle中的 ''空字符串 和 null 居然是等价的。&lt;/p&gt;&#xD;
&lt;p&gt;这意味着 length('') 不会返回0，而是null。&lt;/p&gt;&#xD;
&lt;p&gt;这意味着 length('')+2 不会返回2，而是null。&lt;/p&gt;&#xD;
&lt;p&gt;我只有 nvl(length(''),0)+2 这样让它返回2了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/zhouyou96/aggbug/1732245.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/zhouyou96/archive/2010/05/11/1732245.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
