<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>xiaolan02</title>
    <description></description>
    <link>http://xiaolan02.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>PL/SQL 示例代码</title>
        <author>xiaolan02</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xiaolan02.javaeye.com">xiaolan02</a>&nbsp;
          链接：<a href="http://xiaolan02.javaeye.com/blog/213315" style="color:red;">http://xiaolan02.javaeye.com/blog/213315</a>&nbsp;
          发表时间: 2008年07月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          PL/SQL 示例代码<br /><br />这些 PL/SQL 代码示例演示了如何在 Oracle 数据库中使用各种 PL/SQL 特性。<br /><br />示例代码— Oracle 数据库 10g<br /><br />PL/SQL 示例应用程序 — FORALL [2005 年 1 月 12 日]<br />Oracle 数据库 10g 通过集合中的非连续索引，引入了对 FORALL 语法的支持。INDICES OF 子句允许将 FORALL 语法用于稀疏集合，而 VALUE OF 子句用于指向其他集合的索引集合。该示例显示了如何在 PL/SQL 应用程序中使用这些特性。<br />自述文件 下载 (ZIP)<br /><br />正则表达式 — 用户搜索示例 [2004 年 12 月 13 日]<br />本示例演示了如何使用正则表达式 API 通过 TRIGGER、ROCEDURE、CURSOR 等从数据库中验证、搜索和提取信息。借助用户信息系统的场景，本示例使用各种模式来搜索和提取存储在数据库表中的用户信息（如爱好和兴趣、位置信息等）。<br />自述文件 下载 (ZIP)<br /><br />正则表达式 — DNA 示例 [2004 年 12 月 1 日]<br />本示例使用正则表达式 API 来分析从 SGD 数据库接收到的原始 HTTP 流，并且仅提取 DNA 序列。该序列存储在本地的表中，并使用正则表达式函数进一步分析它以识别特定的酶切图谱。<br />自述文件 下载 (ZIP)<br /><br />正则表达式 — 用户验证示例 [2004 年 9 月 28 日]<br />借助一个典型的用户注册情景，本示例应用程序使用了在 Oracle 数据库 10g 中实现的正则表达式函数来验证用户输入。<br />自述文件 下载 (ZIP)<br /><br />示例代码 — Oracle9i 数据库版本 2<br />除了依赖于公共模式中的对象（特别是员工表）外，这些示例是完全独立的。这些对象已经安装在预先构建的数据库中。可以通过运行 Oracle HOME 目录下的 demo/schema 目录中的 mksample.sql 在定制的数据库中创建它们。<br />关联数组（index-by-varchar2 表）<br />在 PL/SQL 程序中使用 SQL 的 RECORD 绑定<br />Utl_File：在 Oracle9i 数据库 9.2.0 版中所引入增强功能的概述<br /><br />示例代码— Oracle9i 数据库版本 1<br />除了依赖于公共模式中的对象（特别是员工表）外，这些示例是完全独立的。这些对象已经安装在预先构建的数据库中。可以通过运行 Oracle HOME 目录下的 demo/schema 目录中的 mksample.sql 在定制的数据库中创建它们。<br />PL/SQL 静态 SQL 中的游标重用<br />在 PL/SQL 程序中使用 CASE 语句<br />批量绑定增强<br />表函数和游标表达式<br />多层集合<br />UTL_HTTP 程序包增强<br />演示如何使用 UTL_HTTP 程序包（版本 9.0.1 及更高版本）的 B2B 情景<br />自然编译<br /><br />使用 UTL_SMTP 程序包从数据库中发送邮件<br />应用程序可以在出现特定数据库情况时通过电子邮件通知有关方面（并提供相应的当前数据）。（例如，当某行中的字段表示购买请求时。）<br />源代码<br /><br />示例代码— Oracle8i 数据库<br />批量绑定<br />显示不使用和使用批量绑定执行 DML 操作（插入和选择查询）之间的性能差异。源代码<br /><br />Profiler 用法示例<br />下面是 profiler 数据用法的一个示例。它包含各种有用的即席查询以及对 prof_report_utilities 程序包的调用。<br />源代码<br /><br />Profiler 报表实用程序<br />以下是 PL/SQL Profiler 报表实用程序（包括 prof_report_utilities 程序包）。源代码<br /><br />Nocopy 修改符<br />NOCOPY 是 IN OUT 和 OUT 参数模式的修改符。NOCOPY 特性允许您通过引用将参数传递给过程或函数，避免了 CPU 和内存开销。该代码示例也演示了因使用 NOCOPY 修改符而获得的性能改善。<br />源代码<br /><br />独立事务<br />独立事务使您可以在调用事务（主事务）的上下文外执行某些 SQL 操作（在新的上下文中，即独立事务的上下文中），提交或回滚这些操作然后返回至调用事务（主事务）的上下文，而不会丢失先前在主事务中的操作。<br />源代码<br /><br />调试外部过程的程序包<br />下面是调试外部调用的 C 程序所必须遵循的步骤。包括一个要加载的程序包。<br />源代码<br /><br />外部过程<br />这个示例程序演示了如何创建和使用 PL/SQL 的外部过程特性。这个外部过程演示程序包含两个文件：extproc.sql 和 extproc.c。extproc.c 包含在 extproc.sql 中引用的 C 函数。<br />源代码： PL/SQL 版本 C 版本<br /><br />调用者权限程序<br />在 Oracle8i 之前，所有的程序都以其定义者的权限来执行。调用者权限程序使用调用该程序的用户的权限来执行。<br />源代码<br /><br />PL/SQL 自带的动态 SQL<br />在 Oracle8i 之前，对 PL/SQL 中动态 SQL 的支持是通过 DBMS_SQL 程序包的编程接口提供的。PL/SQL 自带的动态 SQL 使得 PL/SQL 中的动态 SQL 处理变得十分简单和易于使用。它也提高了 PL/SQL 中动态 SQL 执行的性能。<br />源代码<br /><br />PL/SQL 对象类型<br />这个演示程序基于一个银行应用程序，说明了 PL/SQL 对象类型、集合和记录特性。（exampbld.sql：创建模式；examplod.sql：加载数据）<br />源代码： 对象类型 创建模式 加载数据<br /><br />表运算符<br />这个演示程序说明了如何使用 TABLE 运算符来解除集合的嵌套以及将本地 PL/SQL 集合变量转化为关系表。<br />源代码<br />	  	<br />Left Curve 	<br />更多 PL/SQL 资源<br />	Right Curve<br /> . 	PL/SQL 技术页面<br /> . 	PL/SQL 最佳实践<br /><br />Left Curve 	<br />更多示例代码<br />	Right Curve<br /> . 	高级 JDBC 示例<br /> . 	JDBC 2.0 示例<br /> . 	JDBC 3.0 示例<br /> . 	SQLJ 示例<br />更多……<br /><br />Left Curve 	<br />论坛<br />	Right Curve<br /> . 	示例代码<br /> . 	数据库<br /> . 	SQL 和 PL/SQL 论坛<br />更多……
          <br/>
          <span style="color:red;">
            <a href="http://xiaolan02.javaeye.com/blog/213315#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 10 Jul 2008 09:54:18 +0800</pubDate>
        <link>http://xiaolan02.javaeye.com/blog/213315</link>
        <guid>http://xiaolan02.javaeye.com/blog/213315</guid>
      </item>
      <item>
        <title>sql sever conver</title>
        <author>xiaolan02</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xiaolan02.javaeye.com">xiaolan02</a>&nbsp;
          链接：<a href="http://xiaolan02.javaeye.com/blog/213304" style="color:red;">http://xiaolan02.javaeye.com/blog/213304</a>&nbsp;
          发表时间: 2008年07月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          sql server使用convert来取得datetime日期数据<br /><br />[ 来源:http://www.it55.com | 作者: | 时间:2007-11-05 | 收藏 | 推荐 ] 【大 中 小】<br /><br />sql server使用convert来取得datetime日期数据，以下实例包含各种日期格式的转换<br />语句及查询结果：<br />Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM<br />Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06<br />Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16<br />Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06<br />Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06<br />Select CONVERT(varchar(100), GETDATE(), 5): 16-05-06<br />Select CONVERT(varchar(100), GETDATE(), 6): 16 05 06<br />Select CONVERT(varchar(100), GETDATE(), 7): 05 16, 06<br />Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46<br />Select CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM<br />Select CONVERT(varchar(100), GETDATE(), 10): 05-16-06<br />Select CONVERT(varchar(100), GETDATE(), 11): 06/05/16<br />Select CONVERT(varchar(100), GETDATE(), 12): 060516<br />Select CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937<br />Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967<br />Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47<br />Select CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157<br />Select CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM<br />Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16<br />Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47<br />Select CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250<br />Select CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM<br />Select CONVERT(varchar(100), GETDATE(), 101): 05/16/2006<br />Select CONVERT(varchar(100), GETDATE(), 102): 2006.05.16<br />Select CONVERT(varchar(100), GETDATE(), 103): 16/05/2006<br />Select CONVERT(varchar(100), GETDATE(), 104): 16.05.2006<br />Select CONVERT(varchar(100), GETDATE(), 105): 16-05-2006<br />Select CONVERT(varchar(100), GETDATE(), 106): 16 05 2006<br />Select CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006<br />Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49<br />Select CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM<br />Select CONVERT(varchar(100), GETDATE(), 110): 05-16-2006<br />Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/16<br />Select CONVERT(varchar(100), GETDATE(), 112): 20060516<br />Select CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513<br />Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547<br />Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49<br />Select CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700<br />Select CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827<br />Select CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AM<br />Select CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM<br /><br />说明:<br />使用 CONVERT：<br /><br />CONVERT ( data_type [ ( length ) ] , expression [ , style ] )<br /><br />参数<br />expression<br /><br />是任何有效的 Microsoft® SQL Server™ 表达式。。<br /><br />data_type<br /><br />目标系统所提供的数据类型，包括 bigint 和 sql_variant。不能使用用户定义的数据类型。<br />length<br /><br />nchar、nvarchar、char、varchar、binary 或 varbinary 数据类型的可选参数。<br /><br />style<br /><br />日期格式样式，借以将 datetime 或 smalldatetime 数据转换为字符数据（nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型）；或者字符串格式样式，借以将 float、real、money 或 smallmoney 数据转换为字符数据（nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型）。<br /><br />SQL Server 支持使用科威特算法的阿拉伯样式中的数据格式。<br /><br />在表中，左侧的两列表示将 datetime 或 smalldatetime 转换为字符数据的 style 值。给 style 值加 100，可获得包括世纪数位的四位年份 (yyyy)。<br /><br />不带世纪数位 (yy) 带世纪数位 (yyyy)<br />标准<br />输入/输出**<br />- 0 或 100 (*) 默认值 mon dd yyyy hh:miAM（或 PM）<br />1 101 美国 mm/dd/yyyy<br />2 102 ANSI yy.mm.dd<br />3 103 英国/法国 dd/mm/yy<br />4 104 德国 dd.mm.yy<br />5 105 意大利 dd-mm-yy<br />6 106 - dd mon yy<br />7 107 - mon dd, yy<br />8 108 - hh:mm:ss<br />- 9 或 109 (*) 默认值 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM（或 PM）<br />10 110 美国 mm-dd-yy<br />11 111 日本 yy/mm/dd<br />12 112 ISO yymmdd<br />- 13 或 113 (*) 欧洲默认值 + 毫秒 dd mon yyyy hh:mm:ss:mmm(24h)<br />14 114 - hh:mi:ss:mmm(24h)<br />- 20 或 120 (*) ODBC 规范 yyyy-mm-dd hh:mm:ss[.fff]<br />- 21 或 121 (*) ODBC 规范（带毫秒） yyyy-mm-dd hh:mm:ss[.fff]<br />- 126(***) ISO8601 yyyy-mm-dd Thh:mm:ss.mmm（不含空格）<br />- 130* Hijri**** dd mon yyyy hh:mi:ss:mmmAM<br />- 131* Hijri**** dd/mm/yy hh:mi:ss:mmmAM<br /><br /><br />* 默认值（style 0 或 100、9 或 109、13 或 113、20 或 120、21 或 121）始终返回世纪数位 (yyyy)。<br />** 当转换为 datetime时输入；当转换为字符数据时输出。<br />*** 专门用于 XML。对于从 datetime或 smalldatetime 到 character 数据的转换，输出格式如表中所示。对于从 float、money 或 smallmoney 到 character 数据的转换，输出等同于 style 2。对于从 real 到 character 数据的转换，输出等同于 style 1。<br />****Hijri 是具有几种变化形式的日历系统，Microsoft® SQL Server™ 2000 使用其中的科威特算法。sql server使用convert来取得datetime日期数据<br /><br />[ 来源:http://www.it55.com | 作者: | 时间:2007-11-05 | 收藏 | 推荐 ] 【大 中 小】<br /><br /><br />重要 默认情况下，SQL Server 根据截止年份 2049 解释两位数字的年份。即，两位数字的年份 49 被解释为 2049，而两位数字的年份 50 被解释为 1950。许多客户端应用程序（例如那些基于 OLE 自动化对象的客户端应用程序）都使用 2030 作为截止年份。SQL Server 提供一个配置选项（"两位数字的截止年份"），借以更改 SQL Server 所使用的截止年份并对日期进行一致性处理。然而最安全的办法是指定四位数字年份。<br /><br /><br />当从 smalldatetime 转换为字符数据时，包含秒或毫秒的样式将在这些位置上显示零。当从 datetime 或 smalldatetime 值进行转换时，可以通过使用适当的 char 或 varchar 数据类型长度来截断不需要的日期部分。
          <br/>
          <span style="color:red;">
            <a href="http://xiaolan02.javaeye.com/blog/213304#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 10 Jul 2008 09:22:43 +0800</pubDate>
        <link>http://xiaolan02.javaeye.com/blog/213304</link>
        <guid>http://xiaolan02.javaeye.com/blog/213304</guid>
      </item>
      <item>
        <title>sql server 日期处理</title>
        <author>xiaolan02</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xiaolan02.javaeye.com">xiaolan02</a>&nbsp;
          链接：<a href="http://xiaolan02.javaeye.com/blog/212961" style="color:red;">http://xiaolan02.javaeye.com/blog/212961</a>&nbsp;
          发表时间: 2008年07月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          使用DATEDIFF和DATEADD函数来计算日期，和本来从当前日期转换到你需要的日期的考虑方法有点不同。必须从时间间隔这个方面来考虑。DATEDIFF函数计算两个日期之间的小时、天、周、月、年等时间间隔总数。 DATEADD函数计算一个日期通过给时间间隔加减来获得一个新的日期。<br /><br />实例：<br />一个月的第一天<br />SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)<br />最核心的函数是getdate()，下一个执行的函数DATEDIFF(mm,0,getdate())是计算当前日期和"1900-01-01 00:00:00.000"这个日期之间的月数。时期和时间变量和毫秒是从"1900-01-01 00:00:00.000"开始计算的。这就是为什么可以在DATEDIFF函数中指定第一个时间表达式为"0"。下一个函数是DATEADD，增加当前日期到"1900-01-01"的月数。通过增加预定义的日期"1900-01-01"和当前日期的月数，我们可以获得这个月的第一天。另外，计算出来的日期的时间部分将会是"00:00:00.000"。<br /><br />本周的星期一<br />SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)<br /><br />一年的第一天<br />SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)<br /><br />季度的第一天<br />SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)<br /><br />半夜的时间点<br />SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)<br /><br />上个月的最后一天<br />通过从一个月的最后一天这个例子上减去3毫秒来获得。在Sql Server中时间是精确到3毫秒。这是为什么需要减去3毫秒来获得需要的日期和时间。<br />SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))<br />计算出来的日期的时间部分包含了一个Sql Server可以记录的一天的最后时刻("23:59:59:997")的时间。<br /><br />去年的最后一天<br />接上面的例子，需要在今年的第一天上减去3毫秒。<br />SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))<br /><br />本月的最后一天<br />SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))<br /><br />本年的最后一天<br />SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))。<br /><br />本月的第一个星期一<br />select DATEADD(wk, DATEDIFF(wk,0,<br />dateadd(dd,6-datepart(day,getdate()),getdate())<br />), 0)<br />计算中用本月的第6天来替换当前日期使得计算可以获得这个月的第一个星期一。<br /><br />去掉时分秒<br />declare @ datetime<br />set @ = getdate() --2003-7-1 10:00:00<br />SELECT @,DATEADD(day, DATEDIFF(day,0,@), 0)<br /><br />显示星期几<br />select datename(weekday,getdate())<br /><br />如何取得某个月的天数<br />declare @m int<br />set @m=2 --月份<br />select datediff(day,2003-+cast(@m as varchar)+-15 ,2003-+cast(@m+1 as varchar)+-15)<br /><br />取得本月天数<br />select datediff(day,cast(month(GetDate()) as varchar)+-+cast(month(GetDate()) as varchar)+-15 ,cast(month(GetDate()) as varchar)+-+cast(month(GetDate())+1 as varchar)+-15)<br /><br />SELECT Day(dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0)))<br /><br />判断是否闰年<br />SELECT case day(dateadd(mm, 2, dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)))) when 28 then 平年 else 闰年 end<br /><br />select case datediff(day,datename(year,getdate())+-02-01,dateadd(mm,1,datename(year,getdate())+-02-01))<br />when 28 then 平年 else 闰年 end<br /><br />一个季度多少天<br />declare @m tinyint,@time smalldatetime<br />select @m=month(getdate())<br />select @m=case when @m between 1 and 3 then 1<br />when @m between 4 and 6 then 4<br />when @m between 7 and 9 then 7<br />else 10 end<br />select @time=datename(year,getdate())+-+convert(varchar(10),@m)+-01<br />select datediff(day,@time,dateadd(mm,3,@time))
          <br/>
          <span style="color:red;">
            <a href="http://xiaolan02.javaeye.com/blog/212961#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 09 Jul 2008 10:21:54 +0800</pubDate>
        <link>http://xiaolan02.javaeye.com/blog/212961</link>
        <guid>http://xiaolan02.javaeye.com/blog/212961</guid>
      </item>
      <item>
        <title>sql server 只取日期</title>
        <author>xiaolan02</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xiaolan02.javaeye.com">xiaolan02</a>&nbsp;
          链接：<a href="http://xiaolan02.javaeye.com/blog/209714" style="color:red;">http://xiaolan02.javaeye.com/blog/209714</a>&nbsp;
          发表时间: 2008年06月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          CONVERT(datetime, CONVERT(varchar, GETDATE(), 103), 103)<br /><br /><br />CONVERT(datetime, CONVERT(varchar, GETDATE(), 103)<br /><br />and ((isdiscontinue !=1) or (isdiscontinue =1 and DiscontinueDate>= CONVERT(datetime, CONVERT(varchar, GETDATE(), 101))))<br /><br /><br /><br /><br />select DATEDIFF(minute,  convert(datetime,<br />               '2008-01-01 ' + SUBSTRING('0830', 1, 2) + ':' +<br />               SUBSTRING('0830', 3, 2),<br />               120), convert(datetime,<br />               '2008-01-01 ' + SUBSTRING('0831', 1, 2) + ':' +<br />               SUBSTRING('0831', 3, 2),<br />               120))
          <br/>
          <span style="color:red;">
            <a href="http://xiaolan02.javaeye.com/blog/209714#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 30 Jun 2008 12:10:09 +0800</pubDate>
        <link>http://xiaolan02.javaeye.com/blog/209714</link>
        <guid>http://xiaolan02.javaeye.com/blog/209714</guid>
      </item>
      <item>
        <title>输入框有效性验证函数.比如空,年龄,姓名,整数......... </title>
        <author>xiaolan02</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xiaolan02.javaeye.com">xiaolan02</a>&nbsp;
          链接：<a href="http://xiaolan02.javaeye.com/blog/194747" style="color:red;">http://xiaolan02.javaeye.com/blog/194747</a>&nbsp;
          发表时间: 2008年05月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          //函数名：chksafe   <br />  //功能介绍：检查是否含有"'",'\\',"/"   <br />  //参数说明：要检查的字符串   <br />  //返回值：0：是     1：不是   <br />  function   chksafe(a)   <br />  {   <br />  return   1;   <br />  /* fibdn   =   new   Array   ("'"   ,"\\",   "、",   ",",   ";",   "/");   <br />  i=fibdn.length;   <br />  j=a.length;   <br />  for   (ii=0;ii&lt;i;ii++)   <br />  { for   (jj=0;jj&lt;j;jj++)   <br />  { temp1=a.charAt(jj);   <br />  temp2=fibdn[ii];   <br />  if   (tem';p1==temp2)   <br />  { return   0;   }   <br />  }   <br />  }   <br />  return   1;   <br />  */   <br />  }   <br />    <br />  //函数名：chkspc   <br />  //功能介绍：检查是否含有空格   <br />  //参数说明：要检查的字符串   <br />  //返回值：0：是     1：不是   <br />  function   chkspc(a)   <br />  {   <br />  var   i=a.length;   <br />  var   j   =   0;   <br />  var   k   =   0;   <br />  while   (k&lt;i)   <br />  {   <br />  if   (a.charAt(k)   !=   "   ")   <br />  j   =   j+1;   <br />  k   =   k+1;   <br />  }   <br />  if   (j==0)   <br />  {   <br />  return   0;   <br />  }   <br />    <br />  if   (i!=j)   <br />  {   return   2;   }   <br />  else   <br />  {   <br />  return   1;   <br />  }   <br />  }   <br />    <br />    <br />  //函数名：chkemail   <br />  //功能介绍：检查是否为Email   Address   <br />  //参数说明：要检查的字符串   <br />  //返回值：0：不是     1：是   <br />  function   chkemail(a)   <br />  { var   i=a.length;   <br />  var   temp   =   a.indexOf('@');   <br />  var   tempd   =   a.indexOf('.');   <br />  if   (temp   >   1)   {   <br />  if   ((i-temp)   >   3){   <br />    <br />  if   ((i-tempd)>0){   <br />  return   1;   <br />  }   <br />  }   <br />  }   <br />  return   0;   <br />  }   <br />    <br />  //opt1   小数           opt2       负数   <br />  //当opt2为1时检查num是否是负数   <br />  //当opt1为1时检查num是否是小数   <br />  //返回1是正确的，0是错误的   <br />  function   chknbr(num,opt1,opt2)   <br />  {   <br />  var   i=num.length;   <br />  var   staus;   <br />  //staus用于记录.的个数   <br />  status=0;   <br />  if   ((opt2!=1)   &&   (num.charAt(0)=='-'))   <br />  {   <br />  //alert("You   have   enter   a   invalid   number.");   <br />  return   0;   <br />    <br />  }   <br />  //当最后一位为.时出错   <br />  if   (num.charAt(i-1)=='.')   <br />  {   <br />  //alert("You   have   enter   a   invalid   number.");   <br />  return   0;   <br />  }   <br />    <br />  for   (j=0;j&lt;i;j++)   <br />  {   <br />  if   (num.charAt(j)=='.')   <br />  {   <br />  status++;   <br />  }   <br />  if   (status>1)     <br />  {   <br />  //alert("You   have   enter   a   invalid   number.");   <br />  return   0;   <br />  }   <br />  if   (num.charAt(j)&lt;'0'   ||   num.charAt(j)>'9'   )   <br />  {   <br />  if   (((opt1==0)   ||   (num.charAt(j)!='.'))   &&   (j!=0))     <br />  {   <br />  //alert("You   have   enter   a   invalid   number.");   <br />  return   0;   <br />  }   <br />  }   <br />  }   <br />  return   1;   <br />  }   <br />    <br />  //函数名：chkdate   <br />  //功能介绍：检查是否为日期   <br />  //参数说明：要检查的字符串   <br />  //返回值：0：不是日期     1：是日期   <br />  function   chkdate(datestr)   <br />  {   <br />  var   lthdatestr   <br />  if   (datestr   !=   "")   <br />  lthdatestr=   datestr.length   ;   <br />  else   <br />  lthdatestr=0;   <br />    <br />  var   tmpy="";   <br />  var   tmpm="";   <br />  var   tmpd="";   <br />  //var   datestr;   <br />  var   status;   <br />  status=0;   <br />  if   (   lthdatestr==   0)   <br />  return   0   <br />    <br />    <br />  for   (i=0;i&lt;lthdatestr;i++)   <br />  { if   (datestr.charAt(i)==   '-')   <br />  {   <br />  status++;   <br />  }   <br />  if   (status>2)   <br />  {   <br />  //alert("Invalid   format   of   date!");   <br />  return   0;   <br />  }   <br />  if   ((status==0)   &&   (datestr.charAt(i)!='-'))   <br />  {   <br />  tmpy=tmpy+datestr.charAt(i)   <br />  }   <br />  if   ((status==1)   &&   (datestr.charAt(i)!='-'))   <br />  {   <br />  tmpm=tmpm+datestr.charAt(i)   <br />  }   <br />  if   ((status==2)   &&   (datestr.charAt(i)!='-'))   <br />  {   <br />  tmpd=tmpd+datestr.charAt(i)   <br />  }   <br />    <br />  }   <br />  year=new   String   (tmpy);   <br />  month=new   String   (tmpm);   <br />  day=new   String   (tmpd)   <br />  //tempdate=   new   String   (year+month+day);   <br />  //alert(tempdate);   <br />  if   ((tmpy.length!=4)   ||   (tmpm.length>2)   ||   (tmpd.length>2))   <br />  {   <br />  //alert("Invalid   format   of   date!");   <br />  return   0;   <br />  }   <br />  if   (!((1&lt;=month)   &&   (12>=month)   &&   (31>=day)   &&   (1&lt;=day))   )   <br />  {   <br />  //alert   ("Invalid   month   or   day!");   <br />  return   0;   <br />  }   <br />  if   (!((year   %   4)==0)   &&   (month==2)   &&   (day==29))   <br />  {   <br />  //alert   ("This   is   not   a   leap   year!");   <br />  return   0;   <br />  }   <br />  if   ((month&lt;=7)   &&   ((month   %   2)==0)   &&   (day>=31))   <br />  {   <br />  //alert   ("This   month   is   a   small   month!");   <br />  return   0;   <br />    <br />  }   <br />  if   ((month>=8)   &&   ((month   %   2)==1)   &&   (day>=31))   <br />  {   <br />  //alert   ("This   month   is   a   small   month!");   <br />  return   0;   <br />  }   <br />  if   ((month==2)   &&   (day==30))   <br />  {   <br />  //alert("The   Febryary   never   has   this   day!");   <br />  return   0;   <br />  }   <br />    <br />  return   1;   <br />  }   <br />    <br />  //函数名：fucPWDchk   <br />  //功能介绍：检查是否含有非数字或字母   <br />  //参数说明：要检查的字符串   <br />  //返回值：0：含有   1：全部为数字或字母   <br />  function   fucPWDchk(str)   <br />  {   <br />      var   strSource   ="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";   <br />      var   ch;   <br />      var   i;   <br />      var   temp;   <br />        <br />      for   (i=0;i&lt;=(str.length-1);i++)   <br />      {   <br />        <br />          ch   =   str.charAt(i);   <br />          temp   =   strSource.indexOf(ch);   <br />          if   (temp==-1)     <br />          {   <br />            return   0;   <br />          }   <br />      }   <br />      if   (strSource.indexOf(ch)==-1)   <br />      {   <br />          return   0;   <br />      }   <br />      else   <br />      {   <br />          return   1;   <br />      }     <br />  }   <br />    <br />  function   jtrim(str)   <br />  {           while   (str.charAt(0)=="   ")   <br />                      {str=str.substr(1);}               <br />            while   (str.charAt(str.length-1)=="   ")   <br />                    {str=str.substr(0,str.length-1);}   <br />            return(str);   <br />  }   <br />    <br />    <br />  //函数名：fucCheckNUM   <br />  //功能介绍：检查是否为数字   <br />  //参数说明：要检查的数字   <br />  //返回值：1为是数字，0为不是数字   <br />  function   fucCheckNUM(NUM)   <br />  {   <br />  var   i,j,strTemp;   <br />  strTemp="0123456789";   <br />  if   (   NUM.length==   0)   <br />  return   0   <br />  for   (i=0;i&lt;NUM.length;i++)   <br />  {   <br />  j=strTemp.indexOf(NUM.charAt(i));   <br />  if   (j==-1)   <br />  {   <br />  //说明有字符不是数字   <br />  return   0;   <br />  }   <br />  }   <br />  //说明是数字   <br />  return   1;   <br />  }   <br />    <br />  //函数名：fucCheckTEL   <br />  //功能介绍：检查是否为电话号码   <br />  //参数说明：要检查的字符串   <br />  //返回值：1为是合法，0为不合法   <br />  function   fucCheckTEL(TEL)   <br />  {   <br />  var   i,j,strTemp;   <br />  strTemp="0123456789-()#   ";   <br />  for   (i=0;i&lt;TEL.length;i++)   <br />  {   <br />  j=strTemp.indexOf(TEL.charAt(i));   <br />  if   (j==-1)   <br />  {   <br />  //说明有字符不合法   <br />  return   0;   <br />  }   <br />  }   <br />  //说明合法   <br />  return   1;   <br />  }   <br />    <br />  //函数名：fucCheckLength   <br />  //功能介绍：检查字符串的长度   <br />  //参数说明：要检查的字符串   <br />  //返回值：长度值   <br />  function   fucCheckLength(strTemp)   <br />  {   <br />  var   i,sum;   <br />  sum=0;   <br />  for(i=0;i&lt;strTemp.length;i++)   <br />  {   <br />  if   ((strTemp.charCodeAt(i)>=0)   &&   (strTemp.charCodeAt(i)&lt;=255))   <br />  sum=sum+1;   <br />  else   <br />  sum=sum+2;   <br />  }   <br />  return   sum;   <br />  }   <br />    <br />  <br />Top<br /><br />2 楼ChinaOk（农村表哥）回复于 2002-05-10 20:39:21 得分 0 //------------------------------------------------   <br />  //字符串实用函数   <br />    <br />  function   getFront(mainStr,searchStr)   <br />  {   <br />  foundOffset=mainStr.indexOf(searchStr)   <br />  if   (foundOffset==-1)   {   <br />  return   null   <br />  }   <br />  return   mainStr.substring(0,foundOffset)   <br />  }   <br />  function   getEnd(mainStr,searchStr)   {   <br />  foundOffset=mainStr.indexOf(searchStr)   <br />  if   (foundOffset==-1)   {   <br />  return   null   <br />  }   <br />  return   mainStr.substring(foundOffset+searchStr.length,mainStr.length)   <br />  }   <br />    <br />  function   insertString(mainStr,searchStr,insertStr)   {   <br />  var   front=getFront(mainStr,searchStr)   <br />  var   end=getEnd(mainStr,searchStr)   <br />  if   (front!=null   &&   end!=null)   {   <br />  return   front+insertStr+searchStr+end   <br />  }   <br />  return   null   <br />  }   <br />    <br />  function   deleteString(mainStr,deleteStr)   {   <br />  return   replaceString(mainStr,deleteStr,"")   <br />  }   <br />    <br />  function   replaceString(mainStr,searchStr,replaceStr)   {   <br />  //代替字符串   <br />  //mainStr为源串     searchStr为要查找的串     replaceStr为要改为的串   <br />  //返回替换后的串   <br />  var   front=getFront(mainStr,searchStr)   <br />  var   end=getEnd(mainStr,searchStr)   <br />  if   (front!=null   &&   end!=null)   {   <br />  return   front+replaceStr+end   <br />  }   <br />  return   null   <br />  }   <br />    <br />  function   left(mainStr,lngLen)   {   <br />  if   (lngLen>0)   {   <br />  return   mainStr.substring(0,lngLen)   <br />  }   <br />  else   <br />  {   <br />  return   null   <br />  }   <br />  }   <br />    <br />  function   right(mainStr,lngLen)   {   <br />  // alert(mainStr.length)   <br />  if   (mainStr.length-lngLen>=0   &&   mainStr.length>=0   &&   mainStr.length-lngLen&lt;=mainStr.length)   {   <br />  return   mainStr.substring(mainStr.length-lngLen,mainStr.length)   <br />  }   <br />  else   <br />  {   <br />  return   null   <br />  }   <br />  }   <br />    <br />  //滤掉左右空格   <br />  function   trim(strMain)   {   <br />  if   (strMain==null)   return   ""   <br />      var   str1=strMain   <br />    <br />  //去掉回车符   <br />      var   ascMain=strMain.charCodeAt(strMain.length-1)   <br />  if   (ascMain==32)   str1=left(strMain,strMain.length-1)   <br />    <br />  if   (str1==null)   return   ""   <br />    <br />      for   (var   i=0;i&lt;=str1.length-1;i++)   {   <br />                var   mychar=str1.charAt(i);   <br />                if   ((mychar!="   ")   &&   (mychar!="　"))   {   <br />                        str1=str1.substring(i,str1.length);   <br />                        break;   <br />                        }     <br />              }   <br />    <br />      for   (var   i=str1.length-1;i>0;i--)   {   <br />              var   mychar=str1.charAt(i);   <br />              if   ((mychar!="   ")     &&   (mychar!="　"))   {   <br />                    str1=str1.substring(0,i+1);   <br />                    break;   <br />              }   <br />      }   <br />    <br />      return   str1;   <br />  }   <br />    <br />  //在日期数据将加上20或19   <br />  function   DateTo8(strDate){   <br />  var   sDate=trim(strDate)   <br />  if   (sDate.length&lt;=8)   <br />  {   <br />  var   sTmp=parseInt(left(sDate,2))   <br />  if   (sTmp&lt;38)     <br />  return   "20"   +sDate   <br />  else   <br />  return   "19"   +sDate   <br />  }   <br />  return   strDate   <br />  }   <br />  //求当前日期   <br />  function   curDate()   {   <br />  var   dDate=new   Date()   <br />  var   s1=""+dDate.getYear()   <br />  var   s2=dDate.getMonth()+1   <br />  if   (s2&lt;10)     <br />  s2="0"+s2   <br />  else   <br />  s2=""+s2   <br />    <br />  var   s3=dDate.getDate()   <br />  if   (s3&lt;10)     <br />  s3="0"+s3   <br />  else   <br />  s3=""+s3   <br />    <br />  return   s1+"-"+s2+"-"+s3     <br />  }   <br />  function   Format(num,dotLen)   {   <br />  //将num按小数位为dotLen来进行格式化     如无小数位参数则为2位小数   <br />  //   <br />  var   dot=0   <br />  var   num1=0   <br />  if   (typeof   dotLen=="undefined"   ||   dotLen==null   )     <br />  dot=2   <br />  else   <br />  dot=dotLen   <br />    <br />  if   (isNaN(parseFloat(num)))   <br />  return   0   <br />  else   <br />  num1=parseFloat(num)   <br />    <br />  var   n1=Math.pow(10,dot)   <br />  if   (n1==0)     <br />  var   iValue=   Math.round(num1)   <br />  else   <br />  var   iValue= Math.round(num1*n1)/n1   <br />    <br />      var   sValue   =   iValue.toString();   <br />      if   (sValue.indexOf(".")   ==   -1)   <br />      {   <br />              sValue   =   sValue   +   ".00";   <br />      }   <br />      else   <br />      {   <br />              if   (sValue.indexOf(".")   ==   sValue.length   -   1)   <br />              {   <br />                      sValue   =   sValue   +   "00";   <br />              }   <br />              else   if   (sValue.indexOf(".")   ==   sValue.length   -   2)   <br />              {   <br />                      sValue   =   sValue   +   "0";   <br />              }   <br />      }   <br />    <br />  return   sValue   <br />  }
          <br/>
          <span style="color:red;">
            <a href="http://xiaolan02.javaeye.com/blog/194747#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 20 May 2008 10:49:05 +0800</pubDate>
        <link>http://xiaolan02.javaeye.com/blog/194747</link>
        <guid>http://xiaolan02.javaeye.com/blog/194747</guid>
      </item>
      <item>
        <title>@meida print{</title>
        <author>xiaolan02</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xiaolan02.javaeye.com">xiaolan02</a>&nbsp;
          链接：<a href="http://xiaolan02.javaeye.com/blog/190001" style="color:red;">http://xiaolan02.javaeye.com/blog/190001</a>&nbsp;
          发表时间: 2008年05月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          周末读刚邮寄到的《css cookbook》才知道可以为不同的媒体类型css创建不同的样式表。比如&lt;link rel=”stylesheet” type=”text/css” href=”/css/screen.css” mce_href=”/css/screen.css” media=”screen” />是为浏览器设置的，&lt;link rel=”stylesheet” type=”text/css” href=”/css/print.css” mce_href=”/css/print.css” media=”print” />是专门为打印机设置的……突然想到了周五诚信通注册流程页面中页面打印时过宽的问题就可以这样直接解决了。爽，呵呵，同时也感叹自己对css还有很多的盲点。下面附上不同的媒体类型表：<br />all	<br />用于所有设备<br /><br />aural  	<br />用于语音和声音合成器<br /><br />braille	<br />用于盲人使用的触觉反应设备<br /><br />embossed	<br />用于盲人打印机<br /><br />handheld	<br />用于掌上设备或更小的装置，如PDA和小型电话<br /><br />print	<br />用于打印机和打印预览<br /><br />projection	<br />用于投影设备<br /><br />screen	<br />用于色彩监控器<br /><br />tty	<br />用于固定的字符网格，如电报、终端设备和对字符有限制的便携设备<br /><br />tv	<br />用于电视和网络电视<br /><br /><br /><br />当然你也可以利用@media来在同一样式表中制定不同的媒体类型：<br /><br />@meida print{<br /><br />body{ css code}<br /><br />}<br /><br />@meida screen{<br /><br />body{ css code}<br /><br />}<br /><br />而不同的交互样式表则是通过改变title的属性来为普通的屏幕提供多种不同的选择，可惜ie不支持。比如&lt;link rel=”stylesheet” type=”text/css” href=”/css/screen.css” mce_href=”/css/screen.css” title=”type_1″ media=”screen” />;&lt;link rel=”stylesheet” type=”text/css” href=”/css/screen.css” mce_href=”/css/screen.css” title=”type_2″ media=”screen” /><br />这是在firefox下的显示效果<br /><br /><br /><br />而接下来的问题就是，我们可以利用他来做些什么了……
          <br/>
          <span style="color:red;">
            <a href="http://xiaolan02.javaeye.com/blog/190001#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 06 May 2008 09:21:24 +0800</pubDate>
        <link>http://xiaolan02.javaeye.com/blog/190001</link>
        <guid>http://xiaolan02.javaeye.com/blog/190001</guid>
      </item>
      <item>
        <title>DATE YYYY--MM--DD 格式表达式</title>
        <author>xiaolan02</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xiaolan02.javaeye.com">xiaolan02</a>&nbsp;
          链接：<a href="http://xiaolan02.javaeye.com/blog/182033" style="color:red;">http://xiaolan02.javaeye.com/blog/182033</a>&nbsp;
          发表时间: 2008年04月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          /^[0-9]{4}-(0[1-9]|[1-9]|1[1-2])-((0[1-9]|[1-9])|1[0-9]|2[0-9]|3[0-1])$/;
          <br/>
          <span style="color:red;">
            <a href="http://xiaolan02.javaeye.com/blog/182033#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 12 Apr 2008 11:29:51 +0800</pubDate>
        <link>http://xiaolan02.javaeye.com/blog/182033</link>
        <guid>http://xiaolan02.javaeye.com/blog/182033</guid>
      </item>
      <item>
        <title>roller的oracle数据库版本部署</title>
        <author>xiaolan02</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xiaolan02.javaeye.com">xiaolan02</a>&nbsp;
          链接：<a href="http://xiaolan02.javaeye.com/blog/94542" style="color:red;">http://xiaolan02.javaeye.com/blog/94542</a>&nbsp;
          发表时间: 2007年06月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          apache-roller-src-3.1.tar.gz的oracle数据库版本配置过程<br />参考roller-install-guide.pdf过程<br />1：从官方网站下载源apache-roller-src-3.1.tar.gz代码。<br />http://cwiki.apache.org/confluence/display/ROLLER/Roller+Downloads<br />和下载oracle的java数据库驱动程序包ojdbc14.jar<br />2：我是也从svn上下载了最新的程序，主要是用到其中的tools下的jar包，并copy到tools文件夹下<br />3：设置环境变量，主要是CATALINA_HOME和ROLLER变量，大家根据自己的情况可以更改，我的设置如下<br />CATALINA_HOME：       C:\tomcat\rollertomcat<br />4：修改默认的mysql数据库到oracle数据库，并创建oracle数据库，我创建了oracle数据库为roller,用户名和密码都为roller,数据库脚本在\web\WEB-INF\dbscripts\oracle，可能新版本的没有，我放到附件中了<br />5：修改oracle数据库的配置信息,<br />找到<br /><br />&lt;java classname="org.apache.roller.business.utils.ConsistencyCheck" fork="yes"><br />        &lt;arg value="${command}"/><br />        &lt;jvmarg value="-Dusername=roller"/><br />        &lt;jvmarg value="-Dpassword=tiger"/><br />        &lt;classpath><br />            &lt;path refid="base.path"/><br />            &lt;path location="${ro.build}/lib/rollerbeans.jar"/><br />            &lt;path location="${ro.tools}/lib/mm.mysql-2.0.14-bin.jar"/><br />        &lt;/classpath><br />    &lt;/java><br />修改为<br />&lt;java classname="org.apache.roller.business.utils.ConsistencyCheck" fork="yes"><br />        &lt;arg value="${command}"/><br />        &lt;jvmarg value="-Dusername=roller"/><br />        &lt;jvmarg value="-Dpassword=roller"/><br />        &lt;classpath><br />            &lt;path refid="base.path"/><br />            &lt;path location="${ro.build}/lib/rollerbeans.jar"/><br />            &lt;path location="${ro.tools}/lib/ojdbc14.jar"/><br />        &lt;/classpath><br />    &lt;/java><br />修改hibernate.cfg.xml到相应的oracle数据库形式<br />        &lt;property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver&lt;/property><br />        &lt;property name="hibernate.connection.url">jdbc:mysql://YOUR_DBHOSTNAME/YOUR_DBNAME?user=Y&password=YOUR_PASSWORD&autoReconnect=true&useUnicode=true&characterEncoding=utf-8&mysqlEncoding=utf8&lt;/property><br />        &lt;property name="hibernate.connection.username">YOUR_USERNAME&lt;/property><br />        &lt;property name="hibernate.connection.password">YOUR_PASSWORD&lt;/property><br />        &lt;property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect&lt;/property><br /><br />改为如下<br />&lt;property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver&lt;/property><br />        &lt;property name="hibernate.connection.url">jdbc:oracle:thin:@192.168.2.199:1521:oracle&lt;/property><br />        &lt;property name="hibernate.connection.username">roller&lt;/property><br />        &lt;property name="hibernate.connection.password">roller&lt;/property><br />        &lt;property name="hibernate.dialect">org.hibernate.dialect.OracleDialect&lt;/property>		<br /><br />5：进入文件roller文件夹，生成部署文件<br />在cmd命令中运行bulil all<br />如果缺少包的话，请找下相应的包，我是从svn上签下最新的程序，只是用到其中的tools下的包，因为最新的好像是struts2，没学过，不熟悉，本想学下，有没时间，下次吧<br />生成文件夹，\build，下面有4个，我只用到其中的webapp，即用于部署的tomcat中的文件,<br />6：参考文档roller-install-guide.pdf<br />把activation.jar，mail.jar，ojdbc14.jar放到tomcat下的common\lib下，<br />添加roller.xml到tomcat\conf\Catalina\localhost文件夹下，我的是，对应与tomcat5.5<br />&lt;!--<br /><br />    Context configuration file for the Tomcat Host Manager Web App<br /><br />    $Id: host-manager.xml 303743 2005-03-11 22:39:26Z remm $<br /><br />--><br /><br /><br />&lt;Context path="/roller"	docBase="E:\JDK5\rollerroller\build\webapp" debug="0"><br />	&lt;Resource name="jdbc/rollerdb" <br />	auth="Container"<br />	type="javax.sql.DataSource"<br />	driverClassName="oracle.jdbc.driver.OracleDriver"<br />	url="jdbc:oracle:thin:@192.168.2.199:1521:oracle"<br />	username="roller"<br />	password="roller"<br />	maxActive="20"<br />	maxIdle="3"<br />	removeAbandoned="false"<br />	maxWait="3000" /><br />&lt;!-- If you want e-mail features, un-comment the section below --><br /><br />&lt;Resource name="mail/Session" <br />	auth="Container"<br />	type="javax.mail.Session"<br />	mail.smtp.host="mail.strongit.com.cn" /><br />	<br />&lt;/Context><br />7：在webapp下新建文件夹data\roller_data\search-index和\data\roller_data\uploads<br />修改生成的文件<br /><br /><br />oracle的生成脚本：<br /><br /><br />-- Run this script to create the Roller database tables in your database.<br /><br />-- *****************************************************<br />-- Create the tables and indices<br /><br />create table rolleruser (<br />    id              varchar(48) not null primary key,<br />    username        varchar(255) not null,<br />    passphrase      varchar(255) not null,<br />    fullname        varchar(255) not null,<br />    emailaddress    varchar(255) not null,<br />    datecreated     timestamp not null,<br />    locale          varchar(20),  <br />    timezone        varchar(50),    <br />    isenabled       number(1) default 1 not null<br />);<br />alter table rolleruser add constraint ru_username_uq unique ( username );<br /><br />create table userrole (<br />    id               varchar(48) not null primary key,<br />    rolename         varchar(255) not null,<br />    username         varchar(255) not null,<br />    userid           varchar(48) not null<br />);<br />create index ur_userid_idx on userrole( userid );<br />create index ur_username_idx on userrole( username );<br /><br />-- User permissions within a website<br />-- permission_mask: bitmask 000 limited, 001 author, 011 admin<br />-- pending: pending user acceptance of invitation to join website<br />create table roller_user_permissions (<br />    id              varchar(48) not null primary key,<br />    website_id      varchar(48) not null,<br />    user_id         varchar(48) not null,<br />    permission_mask integer not null, <br />    pending         number(1) default 1 not null<br />);<br /><br />-- Audit log records time and comment about change<br />-- user_id: user that made change<br />-- object_id: id of associated object, if any<br />-- object_class: name of associated object class (e.g. WeblogEntryData)<br />-- comment: description of change<br />-- change_time: time that change was made<br />create table roller_audit_log (<br />    id              varchar(48) not null primary key,<br />    user_id         varchar(48) not null,  <br />    object_id       varchar(48),           <br />    object_class    varchar(255),          <br />    comment_text    varchar(255) not null, <br />    change_time     timestamp              <br />);<br /><br />create table usercookie (<br />    id              varchar(48) not null primary key,<br />    username        varchar(255) not null,<br />    cookieid        varchar(100) not null,<br />    datecreated     timestamp not null<br />);<br />create index uc_username_idx on usercookie( username );<br />create index uc_cookieid_idx on usercookie( cookieid );<br /><br />create table webpage (<br />    id              varchar(48)  not null primary key,<br />    name            varchar(255)  not null,<br />    description     varchar(255),<br />    link            varchar(255),<br />    websiteid       varchar(48) not null,<br />    template        clob not null,<br />    updatetime      timestamp not null,<br />    hidden          number(1) default 0 not null,<br />    navbar          number(1) default 0 not null,<br />    templatelang    varchar(20) not null,<br />    decorator       varchar(255) default null<br />);<br />create index wp_name_idx on webpage( name );<br />create index wp_link_idx on webpage( link );<br />create index wp_id_idx on webpage( websiteid );<br /><br />create table website (<br />    id                varchar(48) not null primary key,<br />    name              varchar(255) not null,<br />    handle            varchar(255) not null,<br />    description       varchar(255) not null,<br />    userid            varchar(48) not null,<br />    defaultpageid     varchar(48) default '',<br />    weblogdayid       varchar(48) not null,<br />    ignorewords       clob,<br />    enablebloggerapi  number(1) default 0 not null,<br />    editorpage        varchar(255),<br />    bloggercatid      varchar(48),<br />    defaultcatid      varchar(48),<br />    allowcomments     number(1) default 1 not null,<br />    emailcomments     number(1) default 0 not null,<br />    emailfromaddress  varchar(255),<br />    emailaddress      varchar(255) not null,<br />    editortheme       varchar(255),<br />    locale            varchar(20), <br />    timezone          varchar(50),  <br />    defaultplugins    varchar(255),<br />    isenabled         number(1) default 1 not null,<br />    isactive          number(1) default 1 not null,<br />    datecreated          timestamp not null,<br />    blacklist            clob,<br />    defaultallowcomments number(1) default 1 not null,<br />    defaultcommentdays   integer default 7 not null,<br />    commentmod           number(1) default 0 not null,<br />    displaycnt           integer default 15 not null,<br />    lastmodified         timestamp,<br />    pagemodels           varchar(255) default null,<br />    enablemultilang   number(1) default 0 not null,<br />    showalllangs      number(1) default 1 not null<br />);<br />create index ws_userid_idx    on website(userid);<br />create index ws_isenabled_idx on website(isenabled);<br />alter table website add constraint ws_handle_uq unique (handle);<br /><br />-- This index is not necessary because of handle is already a primary key.<br />-- create index ws_handle_idx    on website(handle);<br /><br />create table folder (<br />    id               varchar(48) not null primary key,<br />    name             varchar(255) not null,<br />    description      varchar(255),<br />    websiteid        varchar(48) not null,<br />    parentid        varchar(48)<br />);<br />create index fo_websiteid_idx on folder( websiteid );<br /><br />create table folderassoc (<br />    id               varchar(48) not null primary key,<br />    folderid         varchar(48) not null,<br />    ancestorid       varchar(40),<br />    relation         varchar(20) not null<br />);<br />create index fa_folderid_idx on folderassoc( folderid );<br />create index fa_ancestorid_idx on folderassoc( ancestorid );<br />create index fa_relation_idx on folderassoc( relation );<br /><br />create table bookmark (<br />    id               varchar(48) not null primary key,<br />    folderid         varchar(48) not null,<br />    name             varchar(255) not null,<br />    description      varchar(255),<br />    url              varchar(255) not null,<br />    weight           integer default 0 not null,<br />    priority         integer default 100 not null,<br />    image            varchar(255),<br />    feedurl          varchar(255)<br />);<br />create index bm_folderid_idx on bookmark( folderid );<br /><br />create table weblogcategory (<br />    id               varchar(48)  not null primary key,<br />    name             varchar(255) not null,<br />    description      varchar(255),<br />    websiteid        varchar(48)  not null,<br />    image            varchar(255)<br />);<br />create index wc_websiteid_idx on weblogcategory( websiteid );<br />-- alter table weblogcategory add unique category_nameparentid_uq (parentid, name(20));<br /><br />create table weblogcategoryassoc (<br />    id               varchar(48) not null primary key,<br />    categoryid       varchar(48) not null,<br />    ancestorid       varchar(40),<br />    relation         varchar(20) not null<br />);<br />create index wca_categoryid_idx on weblogcategoryassoc( categoryid );<br />create index wca_ancestorid_idx on weblogcategoryassoc( ancestorid );<br />create index wca_relation_idx on weblogcategoryassoc( relation );<br /><br />create table weblogentry (<br />    id              varchar(48)  not null primary key,<br />    userid          varchar(48) not null,<br />    anchor          varchar(255)  not null,<br />    title           varchar(255)  not null,<br />    text            clob not null,<br />    pubtime         timestamp null,<br />    updatetime      timestamp     not null,<br />    websiteid       varchar(48)  not null,<br />    categoryid      varchar(48)  not null,<br />    publishentry    number(1) default 1 not null,<br />    link            varchar(255),<br />    plugins         varchar(255),<br />    allowcomments   number(1) default 0 not null, <br />    commentdays     integer default 7 not null,<br />    rightToLeft     number(1) default 0 not null,<br />    pinnedtomain    number(1) default 0 not null,<br />    locale          varchar(20),<br />    status          varchar(20) not null,<br />    summary         clob default null, <br />    content_type    varchar(48) default null, <br />    content_src     varchar(255) default null<br />);<br />create index we_websiteid_idx on weblogentry( websiteid );<br />create index we_categoryid_idx on weblogentry( categoryid );<br />create index we_pubtime_idx on weblogentry( pubtime,publishentry,websiteid );<br />create index we_pinnedtom_idx on weblogentry(pinnedtomain);<br />create index we_pubentry_idx on weblogentry(publishentry);<br />create index we_userid_idx on weblogentry(userid);<br />create index we_status_idx on weblogentry(status);<br />create index we_locale_idx on weblogentry(locale);<br /><br />create table roller_weblogentrytag (<br />    id              varchar(48)   not null primary key,<br />    entryid         varchar(48)   not null,<br />    websiteid       varchar(48)   not null,    <br />    userid		    varchar(48)   not null,<br />    name            varchar(255)  not null,<br />    time            timestamp 	not null<br />);<br /><br />create index wet_entryid_idx on roller_weblogentrytag( entryid );<br />create index wet_websiteid_idx on roller_weblogentrytag( websiteid );<br />create index wet_userid_idx on roller_weblogentrytag( userid );<br />create index wet_name_idx on roller_weblogentrytag( name );<br /><br />create table roller_weblogentrytagagg (<br />    id              varchar(48)   not null primary key,<br />    websiteid       varchar(48) ,    <br />    name            varchar(255)  not null,<br />    total           integer		  not null,<br />    lastused        timestamp 	not null<br />);<br /><br />create index weta_websiteid_idx on roller_weblogentrytagagg( websiteid );<br />create index weta_name_idx on roller_weblogentrytagagg( name );<br />create index weta_lastused_idx on roller_weblogentrytagagg( lastused );<br /><br />create table newsfeed (<br />    id              varchar(48) not null primary key,<br />    name            varchar(255) not null,<br />    description     varchar(255) not null,<br />    link            varchar(255) not null,<br />    websiteid       varchar(48) not null<br />);<br />create index nf_websiteid_idx on newsfeed( websiteid );<br /><br /><br />create table roller_comment (<br />    id      varchar(48) not null primary key,<br />    entryid varchar(48) not null,<br />    name    varchar(255),<br />    email   varchar(255),<br />    url     varchar(255),<br />    content clob,<br />    posttime timestamp   not null,<br />    spam    number(1) default 0 not null,<br />    notify  number(1) default 0 not null,<br />    remotehost varchar(128),<br />    pending  number(1) default 1 not null,<br />    approved  number(1) default 0 not null<br />);<br />create index co_entryid_idx on roller_comment( entryid );<br />create index co_pending_idx on roller_comment( pending );<br />create index co_approved_idx on roller_comment( approved );<br /><br />-- Ping Feature Tables<br />-- name: short descriptive name of the ping target<br />-- pingurl: URL to receive the ping<br />-- websiteid:  if not null, this is a custom target defined by the associated website<br />-- conditioncode:<br />-- lastsuccess:<br />create table pingtarget (<br />    id           varchar(48) not null primary key,<br />    name         varchar(255) not null,<br />    pingurl      varchar(255) not null,<br />    websiteid    varchar(48),<br />    conditioncode    integer default 0 not null,<br />    lastsuccess  timestamp,<br />    autoenabled  number(1) default 0 not null<br />);<br />create index pt_websiteid_idx on pingtarget( websiteid );<br /><br />-- auto ping configurations<br />-- websiteid:  fk reference to website for which this auto ping configuration applies<br />-- pingtargetid: fk reference to the ping target to be pinged when the website changes<br />create table autoping (<br />    id            varchar(48) not null primary key,<br />    websiteid     varchar(48) not null,<br />    pingtargetid  varchar(48) not null <br />);<br />create index ap_websiteid_idx on autoping( websiteid );<br />create index ap_pingtid_idx on autoping( pingtargetid );<br /><br />-- autopingid: fk reference to ping configuration<br />-- categoryid: fk reference to category<br />create table pingcategory (<br />    id            varchar(48) not null primary key,<br />    autopingid  varchar(48) not null, <br />    categoryid    varchar(48) not null <br />);<br />create index pc_autopingid_idx on pingcategory( autopingid );<br />create index pc_categoryid_idx on pingcategory( categoryid );<br /><br />-- entrytime: timestamp of original entry onto the ping queue<br />-- pingtargetid: weak fk reference to ping target (not constrained)<br />-- websiteid: weak fk reference to website originating the ping (not constrained)<br />-- attempts:  number of ping attempts that have been made for this entry<br />create table pingqueueentry (<br />    id             varchar(48) not null primary key,<br />    entrytime      timestamp not null, <br />    pingtargetid   varchar(48) not null,  <br />    websiteid      varchar(48) not null,  <br />    attempts       integer not null<br />);<br />create index pqe_entrytime_idx on pingqueueentry( entrytime );<br />create index pqe_pingtid_idx on pingqueueentry( pingtargetid );<br />create index pqe_websiteid_idx on pingqueueentry( websiteid );<br /><br /><br />-- Referer tracks URLs that refer to websites and entries<br />create table referer (<br />    id        varchar(48) not null primary key,<br />    websiteid varchar(48) not null,<br />    entryid   varchar(48),<br />    datestr   varchar(10),<br />    refurl    varchar(255) not null,<br />    refpermalink varchar(255),<br />    reftime   timestamp,<br />    requrl    varchar(255),<br />    title     varchar(255),<br />    excerpt   clob,<br />    dayhits   integer default 0 not null,<br />    totalhits integer default 0 not null,<br />    visible   number(1) default 0 not null,<br />    duplicate number(1) default 0 not null<br />);<br />create index ref_websiteid_idx on referer( websiteid );<br />create index ref_entryid_idx on referer( entryid );<br />create index ref_refurl_idx on referer( refurl );<br />create index ref_requrl_idx on referer( requrl );<br />create index ref_datestr_idx on referer( datestr );<br />create index ref_refpermlnk_idx on referer( refpermalink );<br />create index ref_duplicate_idx on referer( duplicate );<br /><br />-- Configuration options for Roller, should only ever be one row<br />-- Deprecated in 1.2: configuration now stored in roller_properties table<br />create table rollerconfig (<br />    id              varchar(48) not null primary key,<br />    sitedescription varchar(255),<br />    sitename        varchar(255),<br />    emailaddress    varchar(255),<br />    absoluteurl     varchar(255),<br />    adminusers      varchar(255),<br />    encryptpasswords number(1) default 1 not null,<br />    algorithm       varchar(10),<br />    newuserallowed  number(1) default 0 not null,<br />    editorpages     varchar(255),<br />    userthemes      varchar(255) not null,<br />    indexdir        varchar(255),<br />    memdebug        number(1) default 0 not null,<br />    autoformatcomments number(1) default 0 not null,<br />    escapecommenthtml number(1) default 1 not null,<br />    emailcomments   number(1) default 0 not null,<br />    enableaggregator number(1) default 0 not null,<br />    enablelinkback  number(1) default 0 not null,<br />    rsscachetime    integer default 3000 not null,<br />    rssusecache     number(1) default 1 not null,<br />    uploadallow     varchar(255),<br />    uploadforbid    varchar(255),<br />    uploadenabled   number(1) default 1 not null,<br />    uploaddir       varchar(255) not null,<br />    uploadpath      varchar(255) not null,<br />    uploadmaxdirmb  decimal(5,2) default 4.0 not null,<br />    uploadmaxfilemb decimal(5,2) default 1.5 not null,<br />    dbversion       varchar(10),<br />    refspamwords    clob<br />);<br /><br />create table roller_properties (<br />    name     varchar(255) not null primary key,<br />    value    clob<br />);<br /><br />create table roller_tasklock (<br />    id              varchar(48)   not null primary key,<br />    name            varchar(255)  not null,<br />    islocked        number(1) default 0,<br />    timeacquired    timestamp null,<br />    timeleased	    integer,<br />    lastrun         timestamp null<br />);<br />create index rtl_taskname_idx on roller_tasklock( name );<br /><br />create table roller_hitcounts (<br />    id              varchar(48) not null primary key,<br />    websiteid       varchar(48) not null,<br />    dailyhits	    integer<br />);<br />create index rhc_websiteid_idx on roller_hitcounts( websiteid );<br /><br />-- Entry attribute: metadata for weblog entries<br />create table entryattribute (<br />    id       varchar(48) not null primary key,<br />    entryid  varchar(48) not null,<br />    name     varchar(255) not null,<br />    value    clob not null<br />);<br />create index ea_entryid_idx on entryattribute( entryid );<br />alter table entryattribute add constraint ea_name_uq unique ( entryid, name );<br /><br />create table rag_group_subscription (<br />    group_id         varchar(48) not null,<br />    subscription_id  varchar(48) not null<br />);<br />create index raggs_gid_idx on rag_group_subscription(group_id); <br />create index raggs_sid_idx on rag_group_subscription(subscription_id); <br /><br />create table rag_config (<br />    id               varchar(48) not null primary key,<br />    default_group_id varchar(48),<br />    title            varchar(255) not null,<br />    description      varchar(255),<br />    site_url         varchar(255),<br />    output_dir       varchar(255),<br />    cache_dir        varchar(255) not null,<br />    template_dir     varchar(255),<br />    main_page        varchar(255),<br />    admin_name       varchar(255),<br />    admin_email      varchar(255) not null,<br />    group_page       varchar(255),<br />    proxy_host       varchar(255),<br />    proxy_port       integer default -1<br />);<br /><br />create table rag_group (<br />    id               varchar(48) not null primary key,<br />    handle           varchar(255) not null,<br />    title            varchar(255) not null,<br />    description      varchar(255),<br />    cat_restriction  clob,<br />    group_page       varchar(255),<br />    max_page_entries integer default 30,<br />    max_feed_entries integer default 30<br />);<br />alter table rag_group add constraint ragg_handle_uq unique ( handle );<br /><br />create table rag_subscription (<br />    id               varchar(48) not null primary key,<br />    title            varchar(255),<br />    feed_url         varchar(255) not null,<br />    site_url         varchar(255),<br />    author           varchar(255),<br />    last_updated     timestamp,<br />    inbound_links    integer default -1,<br />    inbound_blogs    integer default -1<br />);<br />alter table rag_subscription add constraint rags_feed_url_uq unique ( feed_url );<br /><br />create table rag_entry (<br />    id               varchar(48) not null primary key,<br />    subscription_id  varchar(48) not null,<br />    handle           varchar(255),<br />    title            varchar(255),<br />    guid             varchar(255),<br />    permalink        clob not null,<br />    author           varchar(255),<br />    content          clob,<br />    categories       clob,<br />    published        timestamp not null,<br />    updated          timestamp    <br />);<br />create index rage_sid_idx on rag_entry(subscription_id); <br /><br /><br />-- *****************************************************<br />-- Now add the foreign key relationships<br /><br />-- user, role and website<br /><br />alter table website add constraint ws_userid_fk<br />    foreign key ( userid ) references rolleruser ( id )  ;<br /><br />alter table userrole add constraint ur_userid_fk<br />    foreign key ( userid ) references rolleruser( id )  ;<br /><br />-- page, entry, category, comment<br /><br />alter table webpage add constraint wp_websiteid_fk<br />    foreign key ( websiteid ) references website( id )  ;<br /><br />alter table weblogentry add constraint we_websiteid_fk<br />    foreign key ( websiteid ) references website( id )  ;<br /><br />alter table weblogentry add constraint wc_categoryid_fk<br />    foreign key ( categoryid ) references weblogcategory( id )  ;<br /><br />alter table weblogcategory add constraint wc_websiteid_fk<br />    foreign key ( websiteid ) references website( id )  ;<br /><br />alter table roller_comment add constraint co_entryid_fk<br />    foreign key ( entryid ) references weblogentry( id )  ;<br /><br />alter table entryattribute add constraint att_entryid_fk<br />    foreign key ( entryid ) references weblogentry( id )  ;<br /><br />-- referer<br /><br />alter table referer add constraint ref_entryid_fk<br />    foreign key ( entryid ) references weblogentry( id )  ;<br /><br />alter table referer add constraint ref_websiteid_fk<br />    foreign key ( websiteid ) references website( id )  ;<br /><br />-- folder and bookmark<br /><br />alter table folder add constraint fo_websiteid_fk<br />    foreign key ( websiteid ) references website( id )  ;<br /><br />-- alter table folder add constraint fo_parentid_fk<br />--     foreign key ( parentid ) references folder( id );<br /><br />alter table bookmark add constraint bm_folderid_fk<br />    foreign key ( folderid ) references folder( id )  ;<br /><br />-- newsfeed<br /><br />alter table newsfeed add constraint nf_websiteid_fk<br />    foreign key ( websiteid ) references website( id )  ;<br /><br />-- pingtarget, autoping, pingcategory<br /><br />alter table pingtarget add constraint pt_websiteid_fk<br />    foreign key (websiteid) references website(id)  ;<br /><br />alter table autoping add constraint ap_websiteid_fk<br />    foreign key (websiteid) references website(id)  ;<br /><br />alter table autoping add constraint ap_pingtargetid_fk<br />    foreign key (pingtargetid) references pingtarget(id)  ;<br /><br />alter table pingcategory add constraint pc_autopingid_fk<br />    foreign key (autopingid) references autoping(id)  ;<br /><br />alter table pingcategory add constraint pc_categoryid_fk<br />    foreign key (categoryid) references weblogcategory(id)  ;<br /><br /><br />-- THE FOLLOWING CONSTRAINTS CAN NOT BE SUPPORTED FOR IMPORTING new-user.xml<br />-- alter table website add constraint website_defaultpageid_fk foreign key ( defaultpageid ) references webpage ( id );<br />-- alter table website add constraint website_weblogdayid_fk foreign key ( weblogdayid ) references webpage ( id );<br />-- alter table webpage add constraint webpage_websiteid_fk foreign key ( websiteid ) references website( id );
          <br/>
          <span style="color:red;">
            <a href="http://xiaolan02.javaeye.com/blog/94542#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 27 Jun 2007 09:48:35 +0800</pubDate>
        <link>http://xiaolan02.javaeye.com/blog/94542</link>
        <guid>http://xiaolan02.javaeye.com/blog/94542</guid>
      </item>
      <item>
        <title>JAVA    hibernate代码和bo类的生成步骤</title>
        <author>xiaolan02</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xiaolan02.javaeye.com">xiaolan02</a>&nbsp;
          链接：<a href="http://xiaolan02.javaeye.com/blog/48731" style="color:red;">http://xiaolan02.javaeye.com/blog/48731</a>&nbsp;
          发表时间: 2007年01月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <font face="Arial">
<p>&nbsp;<font face="Arial"><br />
1:解压文件到D:\TOOL\Middlegen-Hibernate-r5 路径下，（路径必须匹配）<br />
2:修改config\database\oracle.xml文件修改如下</font></p>
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">environment</span><span>=</span><span class="attribute-value">&quot;env&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;database.script.file&quot;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;database.driver.file&quot;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;${lib.dir}/classes12.jar&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;database.driver.classpath&quot;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;${database.driver.file}&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;database.driver&quot;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;oracle.jdbc.driver.OracleDriver&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;database.url&quot;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;jdbc:oracle:thin:@192.168.2.136:1521:oracle&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;database.userid&quot;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;pdtest&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;database.password&quot;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;1&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;database.schema&quot;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;pdtest&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;database.catalog&quot;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;pdtest&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="comments"><!--property name="jboss.datasource.mapping"       value="Oracle7"/--></span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="comments"><!--<property name="jboss.datasource.mapping"       value="Oracle8"/>--></span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;jboss.datasource.mapping&quot;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;Oracle9i&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>&nbsp;</p>
<p><font face="Arial">3: 修改build.xml文件<br />
50-52修改为你的hibernate和java生成文件的路径</font></p>
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;build.java.dir&quot;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;${build.dir}/pdtest/java&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span> </li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;build.gen-src.dir&quot;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;${build.dir}/pdtest/gen-src&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;build.classes.dir&quot;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;${build.dir}/pdtest/classes&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>&nbsp;</p>
<p><font face="Arial">4：第191行 对应代码的Package name</font></p>
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">hibernate</span><span>&nbsp; &nbsp;&nbsp;</span></span> </li>
    <li class=""><span></span><span class="attribute">destination</span><span>=</span><span class="attribute-value">&quot;${build.gen-src.dir}&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="attribute">package</span><span>=</span><span class="attribute-value">&quot;com.strongit.pdtest.bo&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="attribute">genXDocletTags</span><span>=</span><span class="attribute-value">&quot;true&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="attribute">genIntergratedCompositeKeys</span><span>=</span><span class="attribute-value">&quot;false&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="attribute">javaTypeMapper</span><span>=</span><span class="attribute-value">&quot;middlegen.plugins.hibernate.HibernateJavaTypeMapper&quot;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>&nbsp;</p>
<p><font face="Arial">5：第33行 修改应用名</font></p>
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;name&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;pdtesthis&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>&nbsp;</p>
<font face="Arial">
<p><br />
6:运行build.bak生成hibernate配置文件。<br />
7: 修改\hibernate-extensions-2.1.3\tools\bin下的2JAVAbak的文件路径</p>
<p>&nbsp;</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<ol class="dp-j">
    <li class="alt"><span><span>hbm2java&nbsp;D:\TOOL\Middlegen-Hibernate-r5\build\pdtest\gen-src\com\strongit\pdtest\bo\*.xml&nbsp;--output=D:\TOOL\Middlegen-Hibernate-r5\build\pdtest\classes&nbsp;&gt;&gt;log.txt&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><font face="Arial">8运行2JAVA.bak文件便可生成bo文件<br />
</font></p>
</font>&nbsp;</font>&nbsp;
          <br/>
          <span style="color:red;">
            <a href="http://xiaolan02.javaeye.com/blog/48731#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 20 Jan 2007 11:36:27 +0800</pubDate>
        <link>http://xiaolan02.javaeye.com/blog/48731</link>
        <guid>http://xiaolan02.javaeye.com/blog/48731</guid>
      </item>
      <item>
        <title>数据库新建和倒数据</title>
        <author>xiaolan02</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xiaolan02.javaeye.com">xiaolan02</a>&nbsp;
          链接：<a href="http://xiaolan02.javaeye.com/blog/47336" style="color:red;">http://xiaolan02.javaeye.com/blog/47336</a>&nbsp;
          发表时间: 2007年01月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 新建数据库<br />
<br />
1:新建两个表空间，一个用于数据库使用（XIAOLAN_D,存储空间200M），一个为临时表空间(XIAOLAN_T,存储空间100M)<br />
<br />
2：新建用户xiaolan，并授予DBA权限,指定表空间XIAOLAN_D和临时表空间XIAOLAN_D<br />
<br />
导出数据:<br />
<br />
exp xiaolan/xiaolan@oracle_192.168.2.84 file=c:/tour.dmp log=c:/log.log owner=xiaolan<br />
<br />
&nbsp;注释：exp 用户名/密码@数据库标识 file=导出数据存放的地方 log=日志存放的地方 owner=拥有者<br />
其中owner可以指定导入数据的时候也要一个fromuser为刚才指定的用户 &nbsp; &nbsp; &nbsp;  <br />
导入数据：<br />
<br />
imp xiaolan/xiaolan@oracle_192.168.2.136 file=c:/tour.dmp log=c:/log.log fromuser=xiaolan<br />
注释：imp&nbsp; 用户名/密码@数据库标识 file=导入数据存放的地方 log=日志存放的地方 fromuser=拥有者
          <br/>
          <span style="color:red;">
            <a href="http://xiaolan02.javaeye.com/blog/47336#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 15 Jan 2007 17:39:37 +0800</pubDate>
        <link>http://xiaolan02.javaeye.com/blog/47336</link>
        <guid>http://xiaolan02.javaeye.com/blog/47336</guid>
      </item>
      <item>
        <title>Oracle数据库的启动和停止</title>
        <author>xiaolan02</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xiaolan02.javaeye.com">xiaolan02</a>&nbsp;
          链接：<a href="http://xiaolan02.javaeye.com/blog/47335" style="color:red;">http://xiaolan02.javaeye.com/blog/47335</a>&nbsp;
          发表时间: 2007年01月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><strong><span lang="EN-US">1</span></strong><strong><span style="FONT-FAMILY: 宋体">：启动</span><span lang="EN-US"><o:p></o:p></span></strong></p>
<p class="MsoNormal"><span lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>1</span><span style="FONT-FAMILY: 宋体">：如果没有打开数据库监听器，要先打开</span> <span lang="EN-US" style="FONT-SIZE: 14pt">lsnrctl start</span></p>
<p class="MsoNormal"><span lang="EN-US" style="FONT-SIZE: 14pt">(可以使用：sqlplust &quot;as/sysdba&quot;</span></p>
<p class="MsoNormal"><span lang="EN-US" style="FONT-SIZE: 14pt">startup,</span></p>
<p class="MsoNormal"><span lang="EN-US" style="FONT-SIZE: 14pt">lsnrctl start)</span></p>
<p class="MsoNormal"><span lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>2</span><span style="FONT-FAMILY: 宋体">：切换到</span><span lang="EN-US">oracle</span><span style="FONT-FAMILY: 宋体">用户</span> <span lang="EN-US" style="FONT-SIZE: 14pt"><span>&nbsp;&nbsp;</span>su &ndash; oracle<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="BACKGROUND: red 0% 50%; FONT-FAMILY: 宋体; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">注意</span><span lang="EN-US" style="BACKGROUND: red 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">(</span><span lang="EN-US" style="FONT-SIZE: 14pt; BACKGROUND: red 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">&ndash; oracle)</span><span style="BACKGROUND: red 0% 50%; FONT-FAMILY: 宋体; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">中间为空格</span><span lang="EN-US">,</span></p>
<p class="MsoNormal"><span lang="EN-US"><span>&nbsp; </span><span>&nbsp;&nbsp;&nbsp; </span><span>&nbsp;</span>3:</span><span style="FONT-FAMILY: 宋体">启动</span><span lang="EN-US">sqlplus<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span lang="EN-US" style="FONT-SIZE: 14pt">sqlplus /nolog<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>4: </span><span style="FONT-FAMILY: 宋体">连接数据库</span><span lang="EN-US" style="FONT-SIZE: 14pt"> connect system/system as sysdba<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>5</span><span style="FONT-FAMILY: 宋体">：启动数据库</span> <span lang="EN-US" style="FONT-SIZE: 14pt">startup</span></p>
<p class="MsoNormal"><span lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p class="MsoNormal" align="right" style="TEXT-ALIGN: right"><span lang="EN-US"><span><br />
</span></span></p>
<p class="MsoNormal" align="left" style="TEXT-ALIGN: right"><span lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
</span></span></p>
<div align="left">启动和测试 <br />
1，因为数据库刚刚安装完成,所以数据库服务已经起来,所以只启动测试监听就可以了,以oracle用户,输入lsnrctl start <br />
<br />
2, 进行监听测试,以oracle用户输入以下命令 <br />
netca <br />
这样会出现一个画面,对监听进行配置,然后选择local net service name configuration,然后选择text,然后更改用户密码,把安装时写的密码添加进去,就OK了!然后回车,一直到完成. <br />
3，如果从新启动linux，那系统不会自动启动oracle9i服务，需要以oracle用户身份，进行启动服务，如： <br />
su &ndash; oracle <br />
sqlplus /nolog <br />
进入sqlplus后，再输入： <br />
connect / as sysdba <br />
进去后，输入： <br />
startup <br />
然后等待数据库启动完成。 <br />
以上是启动oracle服务，然后启动监听器的时候，需要启动测试监听（重复1的动作）就可以了。 </div>
<div align="left"></div>
<div align="left"></div>
<div align="left">停掉服务：<span style="FONT-SIZE: 13px">甭管在windows还是linux、unix 在命令行下敲入<br />
sqlplus &quot;/as sysdba&quot; 或者 sqlplus system/密码 回车<br />
显示登陆成功后<br />
然后敲入 shutdown immediate&nbsp;&nbsp;回车</span></div>
<p><span style="FONT-SIZE: 13px"></span></p>
<p><span style="FONT-SIZE: 13px">停止oracle监听器可以用lsnrctl stop</span></p>
<p><span style="FONT-SIZE: 13px">上面的这些也是自己在网上找到的，只是方便下自己下次忘了有再去找，干脆放到自己的博客中来。<br />
</span><br />
</p>
<div align="left"><br />
</div>
<p class="MsoNormal" align="right" style="TEXT-ALIGN: right"><br />
</p>
          <br/>
          <span style="color:red;">
            <a href="http://xiaolan02.javaeye.com/blog/47335#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 15 Jan 2007 17:37:09 +0800</pubDate>
        <link>http://xiaolan02.javaeye.com/blog/47335</link>
        <guid>http://xiaolan02.javaeye.com/blog/47335</guid>
      </item>
      <item>
        <title>ant工程发布</title>
        <author>xiaolan02</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xiaolan02.javaeye.com">xiaolan02</a>&nbsp;
          链接：<a href="http://xiaolan02.javaeye.com/blog/47265" style="color:red;">http://xiaolan02.javaeye.com/blog/47265</a>&nbsp;
          发表时间: 2007年01月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <br />
<br />
1、&nbsp; 在path里设置ant的bin目录所在路径<br />
<br />
2、&nbsp; 修改antbuild.dat内容<br />
<br />
ant -buildfile build.xml &gt;E:\xiaolan8\xiaolandeploy.log<br />
<br />
&gt;后设置为你选择的路径及log文件<br />
<br />
3、&nbsp; 修改build.xml文件，将其中的路径修改为要部署的工程的路径<br />
<br />
具体见build.xml文件，其中都有详细解释<br />
<br />
4、&nbsp; 运行antbuild.dat文件进行部署，可以在log文件中查看部署情况。<br />
<br />
&nbsp;<br />
<br />
&nbsp;
          <br/>
          <span style="color:red;">
            <a href="http://xiaolan02.javaeye.com/blog/47265#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 15 Jan 2007 16:59:43 +0800</pubDate>
        <link>http://xiaolan02.javaeye.com/blog/47265</link>
        <guid>http://xiaolan02.javaeye.com/blog/47265</guid>
      </item>
      <item>
        <title>课件下载功能模块</title>
        <author>xiaolan02</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xiaolan02.javaeye.com">xiaolan02</a>&nbsp;
          链接：<a href="http://xiaolan02.javaeye.com/blog/45859" style="color:red;">http://xiaolan02.javaeye.com/blog/45859</a>&nbsp;
          发表时间: 2007年01月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          实现以下功能，<br />
1文件列表<br />
2文件上传<br />
3文件批量上传<br />
4文件编辑<br />
5文件查看<br />
6文件删除<br />
与资源中心的资源文件管理相类似。
          <br/>
          <span style="color:red;">
            <a href="http://xiaolan02.javaeye.com/blog/45859#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 10 Jan 2007 16:36:25 +0800</pubDate>
        <link>http://xiaolan02.javaeye.com/blog/45859</link>
        <guid>http://xiaolan02.javaeye.com/blog/45859</guid>
      </item>
      <item>
        <title>系统问题</title>
        <author>xiaolan02</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xiaolan02.javaeye.com">xiaolan02</a>&nbsp;
          链接：<a href="http://xiaolan02.javaeye.com/blog/45833" style="color:red;">http://xiaolan02.javaeye.com/blog/45833</a>&nbsp;
          发表时间: 2007年01月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1：系统正常运行，但不稳定，时常自动退出，又要重新输入用户名和密码<br />
2：大部分模块没有文档，代码没有多少注释，刚开始还比较规范，后面真是很乱。
          <br/>
          <span style="color:red;">
            <a href="http://xiaolan02.javaeye.com/blog/45833#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 10 Jan 2007 14:51:00 +0800</pubDate>
        <link>http://xiaolan02.javaeye.com/blog/45833</link>
        <guid>http://xiaolan02.javaeye.com/blog/45833</guid>
      </item>
      <item>
        <title>正则表达式</title>
        <author>xiaolan02</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xiaolan02.javaeye.com">xiaolan02</a>&nbsp;
          链接：<a href="http://xiaolan02.javaeye.com/blog/41555" style="color:red;">http://xiaolan02.javaeye.com/blog/41555</a>&nbsp;
          发表时间: 2006年12月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>首先，让我们看看两个特别的字符：&rsquo;^&rsquo; 和 &lsquo;$&rsquo; 他们是分别用来匹配字符串的开始和结束，一下分别举例说明： <br /><br />　　"^The": 匹配以 "The"开头的字符串; <br /><br />　　"of despair$": 匹配以 "of despair" 结尾的字符串; <br /><br />　　"^abc$": 匹配以abc开头和以abc结尾的字符串，实际上是只有abc与之匹配；<br /><br />　　"notice": 匹配包含notice的字符串；<br /><br />　　你可以看见如果你没有用我们提到的两个字符（最后一个例子），就是说 模式（<a href="javascript:;" onclick="tagshow(event, '%D5%FD%D4%F2%B1%ED%B4%EF%CA%BD');" target="_self"><span style="text-decoration: underline;"><strong>正则表达式</strong></span></a>） 可以出现在被检验字符串的任何地方，你没有把他锁定到两边。<br /><br />　　这里还有几个字符 '*', '+',和 '?', 他们用来表示一个字符可以出现的次数或者顺序. 他们分别表示："zero or more", "one or more", and "zero or one." 这里是一些例子: <br /><br />　　"ab*": 匹配字符串a和0个或者更多b组成的字符串("a", "ab", "abbb", etc.); <br /><br />　　"ab+": 和上面一样，但最少有一个b ("ab", "abbb", etc.); <br /><br />　　"ab?":匹配0个或者一个b; <br /><br />　　"a?b+$": 匹配以一个或者0个a再加上一个以上的b结尾的字符串. <br /><br />　　你也可以在大括号里面限制字符出现的个数，比如 <br /><br />　　"ab{2}": 匹配一个a后面跟两个b（一个也不能少）("abb"); <br /><br />　　"ab{2,}": 最少更两个b("abb", "abbbb", etc.); <br /><br />　　"ab{3,5}": 2－5个b("abbb", "abbbb", or "abbbbb"). <br /><br />　　你还要注意到你必须总是指定 (i.e, "{0,2}", not "{,2}").同样，你必须注意到, '*', '+', 和'?' 分别和一下三个范围标注是一样的，"{0,}", "{1,}", 和 "{0,1}"。 <br /><br />　　现在把一定数量的字符放到小括号里，比如： <br /><br />　　"a(bc)*": 匹配 a 后面跟0个或者一个"bc"; <br /><br />　　"a(bc){1,5}": 一个到5个 "bc." <br /><br />　　还有一个字符 '│', 相当于OR 操作: <br /><br />　　"hi│hello": 匹配含有"hi" 或者 "hello" 的 字符串; <br /><br />　　"(b│cd)ef": 匹配含有 "bef" 或者 "cdef"的字符串; <br /><br />　　"(a│b)*c": 匹配含有这样 - 多个（包括0个）a或b，后面跟一个c的字符串 的字符串; <br /><br />　　一个点('.')可以代表所有的 单一字符: <br /><br />　　"a.[0-9]": 一个a跟一个字符再跟一个数字的 （含有这样一个字符串的字符串将被匹配，以后省略此括号） <br /><br />　　"^.{3}$": 以三个字符结尾.中括号括住的内容只匹配一个 单一的字符 <br /><br />　　"[ab]": 匹配单个的 a 或者 b ( 和 "a│b" 一样); <br /><br />　　"[a-d]": 匹配'a' 到'd'的单个字符 (和"a│b│c│d" 还有 "[abcd]"效果一样); <br /><br />　　"^[a-zA-Z]": 匹配以字母开头的字符串 <br /><br />　　"[0-9]%": 匹配含有 形如 x％ 的字符串 <br /><br />　　",[a-zA-Z0-9]$": 匹配以逗号在加一个数字或字母结尾的字符串 <br /><br />　　你也可以把你不想要得字符列在中括号里，你只需要在总括号里面使用'^' 作为开头 (i.e., "%[^a-zA-Z]%" 匹配含有 两个百分号里面有一个非字母 的字符串). <br /><br />　　为了能够解释，但"^.[$()│*+?{\"作为有特殊意义的字符的时候，你必须在这些字符面前加'', 还有在php3中你应该避免在模式的最前面使用\, 比如说,正则表达式 "(\$│?[0-9]+" 应该这样调用 ereg("(\\$│?[0-9]+", $str) (不知道php4是不是一样) <br /><br />　　不要忘记在中括号里面的字符是这条规路的例外&mdash;在中括号里面, 所有的特殊字符，包括(''), 都将失去他们的特殊性质(i.e., "[*\+?{}.]"匹配含有这些字符的字符串). 还有,正如regx的手册告诉我们: "如果列表里含有 ']', 最好把它作为列表里的第一个字符(可能跟在'^'后面). 如果含有'-', 最好把它放在最前面或者最后面, or 或者一个范围的第二个结束点(i.e. [a-d-0-9]中间的&lsquo;-&rsquo;将有效. <br /><br />　　为了完整, 我应该涉及到 collating sequences, character classes, 同埋 equivalence classes. 但我在这些方面不想讲的太详细, 这些在下面的文章仲都不需要涉及到. 你们可以在regex man pages 那里得到更多消息. <br /><br />　　如何构建一个模式来匹配 货币数量 的输入 <br /><br />　　好了，现在我们要用我们所学的来干一些有用的事：构建一个匹配模式去检查输入的信息是否为一个表示money的数字。我们认为一个表示money的数量有四种方式： "10000.00" 和 "10,000.00",或者没有小数部分, "10000" and "10,000". 现在让我们开始构建这个匹配模式: <br /><br />　　^[1-9][0-9]*$ <br /><br />　　这是所变量必须以非0的数字开头.但这也意味着 单一的 "0" 也不能通过<a href="javascript:;" onclick="tagshow(event, '%B2%E2%CA%D4');" target="_self"><span style="text-decoration: underline;"><strong>测试</strong></span></a>. 以下是解决的方法: <br /><br />　　^(0│[1-9][0-9]*)$ <br /><br />　　"只有0和不以0开头的数字与之匹配"，我们也可以允许一个负号再数字之前: <br /><br />　　^(0│-?[1-9][0-9]*)$ <br /><br />　　这就是: "0 或者 一个以0开头可能有一个负号在前面的数字." 好了, 好了现在让我们别那么严谨，允许以0开头.现在让我们放弃 负号 , 因为我们在表示钱币的时候并不需要用到. 我们现在指定 模式 用来匹配小数部分: <br /><br />　　^[0-9]+(\.[0-9]+)?$ <br /><br />　　这暗示匹配的字符串必须最少以一个阿拉伯数字开头. 但是注意，在上面模式中 "10." 是不匹配的, 只有 "10" 和 "10.2" 才可以. （你知道为什么吗） <br /><br />　　^[0-9]+(\.[0-9]{2})?$ <br /><br />　　我们上面指定小数点后面必须有两位小数.如果你认为这样太苛刻,你可以改成: <br /><br />　　^[0-9]+(\.[0-9]{1,2})?$ <br /><br />　　这将允许小数点后面有一到两个字符. 现在我们加上用来增加可读性的逗号（每隔三位）, 我们可以这样表示: <br /><br />　　^[0-9]{1,3}(,[0-9]{3})*(\.[0-9]{1,2})?$ <br /><br />　　不要忘记加号 '+' 可以被乘号 '*' 替代如果你想允许空白字符串被输入话 (为什么?). 也不要忘记反斜杆 &rsquo;\&rsquo; 在php字符串中可能会出现错误 (很普遍的错误). 现在，我们已经可以确认字符串了, 我们现在把所有逗号都去掉 str_replace(",", "", $money) 然后在把类型看成 double然后我们就可以通过他做数学计算了. <br /><br />　　<strong>构造检查email的正则表达式 </strong><br /><br />　　让我们继续讨论怎么验证一个email地址. 在一个完整的email地址中有三个部分: POP3 用户名 (在 '@' 左边的一切), '@', 服务器名(就是剩下那部分). 用户名可以含有大小写字母阿拉伯数字,句号 ('.'), 减号('-'), and 下划线 ('_'). 服务器名字也是符合这个规则,当然下划线除外. <br /><br />　　现在, 用户名的开始和结束都不能是句点. 服务器也是这样. 还有你不能有两个连续的句点他们之间至少存在一个字符，好现在我们来看一下怎么为用户名写一个匹配模式: <br /><br />　　^[_a-zA-Z0-9-]+$ <br /><br />　　现在还不能允许句号的存在. 我们把它加上: <br /><br />　　^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*$ <br /><br />　　上面的意思就是说: "以至少一个规范字符（除.意外）开头,后面跟着0个或者多个以点开始的字符串." <br /><br />　　简单化一点, 我们可以用 eregi()取代 ereg().eregi()对大小写不敏感, 我们就不需要指定两个范围 "a-z" 和 "A-Z" &ndash; 只需要指定一个就可以了: <br /><br />　　^[_a-z0-9-]+(\.[_a-z0-9-]+)*$ <br /><br />　　后面的服务器名字也是一样,但要去掉下划线: <br /><br />　　^[a-z0-9-]+(\.[a-z0-9-]+)*$ <br /><br />　　Done. 现在只需要用&rdquo;@&rdquo;把两部分连接: <br /><br />　　^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$ <br /><br />　　这就是完整的email认证匹配模式了,只需要调用 <br /><br />　　eregi(&lsquo;^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$ &rsquo;,$eamil) <br /><br />　　就可以得到是否为email了。<br /><br />　　<strong>正则表达式的其他用法 </strong><br /><br />　　提取字符串 <br /><br />　　ereg() and eregi() 有一个特性是允许用户通过正则表达式去提取字符串的一部分(具体用法你可以阅读手册). 比如说,我们想从 path/URL 提取文件名 &ndash; 下面的代码就是你需要: <br /><br />　　ereg("([^\\/]*)$", $pathOrUrl, $regs); <br />　　echo $regs[1]; <br /><br />　　高级的代换 <br /><br />　　ereg_replace() 和 eregi_replace()也是非常有用的: 假如我们想把所有的间隔负号都替换成逗号: <br /><br />　　ereg_replace("[ \n\r\t]+", ",", trim($str));</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="left fontsize4">匹配中文字符的<a href="http://www.phpchina.com/&lt;a%20href=" onclick="tagshow(event, 'javascript');" target="_self"><span style="text-decoration: underline;"><strong>javascript</strong></span></a>:;" onClick="javascript:tagshow(event, '%D5%FD%D4%F2%B1%ED%B4%EF%CA%BD');" target="_self"&gt;<span style="text-decoration: underline;"><strong>正则表达式</strong></span>： [\u4e00-\u9fa5] <br /><br />　　匹配双字节字符(包括汉字在内)： [^\x00-\xff] <br /><br />　　应用：计算字符串的长度（一个双字节字符长度计2，ASCII字符计1） <br /><br />
<table bordercolor="#cccccc" border="1" align="center" bgcolor="#e3e3e3" width="90%">
<tbody>
<tr>
<td>String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;} </td>
</tr>
</tbody>
</table>
<br />　　匹配空行的正则表达式： \n[\s| ]*\r <br /><br />　　匹配HTML标记的正则表达式： /&lt;(.*)&gt;.*&lt;\/&gt;|&lt;(.*) \/&gt;/ <br /><br />　　匹配首尾空格的正则表达式： (^\s*)|(\s*$) <br /><br />　　应用：javascript中没有像vbscript那样的trim函数，我们就可以利用这个表达式来实现，如下： <br /><br />
<table bordercolor="#cccccc" border="1" align="center" bgcolor="#e3e3e3" width="90%">
<tbody>
<tr>
<td>String.prototype.trim = function() { <br />return this.replace(/(^\s*)|(\s*$)/g, ""); <br />}</td>
</tr>
</tbody>
</table>
<br />　　利用正则表达式分解和转换IP地址：<br /><br />　　下面是利用正则表达式匹配IP地址，并将IP地址转换成对应数值的javascript程序： <br /><br />
<table bordercolor="#cccccc" border="1" align="center" bgcolor="#e3e3e3" width="90%">
<tbody>
<tr>
<td>function IP2V(ip) { <br />re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配IP地址的正则表达式 <br />if(re.test(ip)) { <br />return RegExp.*Math.pow(255,3))+RegExp.*Math.pow(255,2))+RegExp.*255+RegExp.*1<br />} <br />else { <br />throw new Error("Not a valid IP address!") <br />}<br />} </td>
</tr>
</tbody>
</table>
<br />　　不过上面的程序如果不用正则表达式，而直接用split函数来分解可能更简单，程序如下： <br /><br />
<table bordercolor="#cccccc" border="1" align="center" bgcolor="#e3e3e3" width="90%">
<tbody>
<tr>
<td>var ip="10.100.20.168" <br />ip=ip.split(".") <br />alert("IP值是："+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1)) </td>
</tr>
</tbody>
</table>
<br />　　匹配Email地址的正则表达式： \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* <br /><br />　　匹配网址URL的正则表达式： http://([\w-]+\.)+[\w-]+(/[\w- ./?%&amp;=]*)? <br /><br />　　利用正则表达式去除字串中重复的字符的算法程序： <br /><br />
<table bordercolor="#cccccc" border="1" align="center" bgcolor="#e3e3e3" width="90%">
<tbody>
<tr>
<td>var s="abacabefgeeii"<br />var s1=s.replace(/(.).*/g,"") <br />var re=new RegExp("["+s1+"]","g") <br />var s2=s.replace(re,"") <br />alert(s1+s2) //结果为：abcefgi </td>
</tr>
</tbody>
</table>
<br />　　用正则表达式从URL地址中提取文件名的javascript程序，如下结果为page1 <br /><br />
<table bordercolor="#cccccc" border="1" align="center" bgcolor="#e3e3e3" width="90%">
<tbody>
<tr>
<td>s="http://www.9499.net/page1.htm" <br />s=s.replace(/(.*\/)([^\.]+).*/ig,"") <br />alert(s) </td>
</tr>
</tbody>
</table>
<br />　　利用正则表达式限制网页表单里的文本框输入内容： <br /><br />　　用正则表达式限制只能输入中文：<br /><br />
<table bordercolor="#cccccc" border="1" align="center" bgcolor="#e3e3e3" width="90%">
<tbody>
<tr>
<td>onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))" </td>
</tr>
</tbody>
</table>
<br />　　用正则表达式限制只能输入全角字符：<br /><br />
<table bordercolor="#cccccc" border="1" align="center" bgcolor="#e3e3e3" width="90%">
<tbody>
<tr>
<td>onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))" </td>
</tr>
</tbody>
</table>
<br />　　用正则表达式限制只能输入数字：<br /><br />
<table bordercolor="#cccccc" border="1" align="center" bgcolor="#e3e3e3" width="90%">
<tbody>
<tr>
<td>onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))" </td>
</tr>
</tbody>
</table>
<br />　　用正则表达式限制只能输入数字和英文：<br /><br />
<table bordercolor="#cccccc" border="1" align="center" bgcolor="#e3e3e3" width="90%">
<tbody>
<tr>
<td>onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))</td>
</tr>
</tbody>
</table>
</div>
<p>&nbsp;</p>
<p>引用：<span style="font-family: Arial;"><a href="http://www.phpchina.com/?action_viewnews_itemid_1387.html">http://www.phpchina.com/?action_viewnews_itemid_1387.html</a></span><span style="font-family: Arial;"><a href="http://www.phpchina.com/html/200609/n1388.html">http://www.phpchina.com/html/200609/n1388.html</a></span></p>
<p>&nbsp;</p>
<p>&nbsp;常用的JavaScript验证正则表达式<br /><br /><br />02-11<br /><br /><br />下面都是我收集的一些比较常用的正则表达式，因为平常可能在表单验证的时候，用到的比较多。特发出来，让各位朋友共同使用。呵呵。<br /><br />匹配中文字符的正则表达式： [u4e00-u9fa5]<br />评注：匹配中文还真是个头疼的事，有了这个表达式就好办了<br /><br />匹配双字节字符(包括汉字在内)：[^x00-xff]<br />评注：可以用来计算字符串的长度（一个双字节字符长度计2，ASCII字符计1）<br /><br />匹配空白行的正则表达式：ns*r<br />评注：可以用来删除空白行<br /><br />匹配HTML标记的正则表达式：&lt; (S*?)[^&gt;]*&gt;.*?|&lt; .*? /&gt;<br />评注：网上流传的版本太糟糕，上面这个也仅仅能匹配部分，对于复杂的嵌套标记依旧无能为力<br /><br />匹配首尾空白字符的正则表达式：^s*|s*$<br />评注：可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等)，非常有用的表达式<br /><br />匹配Email地址的正则表达式：w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*<br />评注：表单验证时很实用<br /><br />匹配网址URL的正则表达式：[a-zA-z]+://[^s]*<br />评注：网上流传的版本功能很有限，上面这个基本可以满足需求<br /><br />匹配帐号是否合法(字母开头，允许5-16字节，允许字母数字下划线)：^[a-zA-Z][a-zA-Z0-9_]{4,15}$<br />评注：表单验证时很实用<br /><br />匹配国内电话号码：d{3}-d{8}|d{4}-d{7}<br />评注：匹配形式如 0511-4405222 或 021-87888822<br /><br />匹配腾讯QQ号：[1-9][0-9]{4,}<br />评注：腾讯QQ号从10000开始<br /><br />匹配中国邮政编码：[1-9]d{5}(?!d)<br />评注：中国邮政编码为6位数字<br /><br />匹配身份证：d{15}|d{18}<br />评注：中国的身份证为15位或18位<br /><br />匹配ip地址：d+.d+.d+.d+<br />评注：提取ip地址时有用<br /><br />匹配特定数字：<br />^[1-9]d*$　 　 //匹配正整数<br />^-[1-9]d*$ 　 //匹配负整数<br />^-?[1-9]d*$　　 //匹配整数<br />^[1-9]d*|0$　 //匹配非负整数（正整数 + 0）<br />^-[1-9]d*|0$　　 //匹配非正整数（负整数 + 0）<br />^[1-9]d*.d*|0.d*[1-9]d*$　　 //匹配正浮点数<br />^-([1-9]d*.d*|0.d*[1-9]d*)$　 //匹配负浮点数<br />^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$　 //匹配浮点数<br />^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$　　 //匹配非负浮点数（正浮点数 + 0）<br />^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$　　//匹配非正浮点数（负浮点数 + 0）<br />评注：处理大量数据时有用，具体应用时注意修正<br /><br />匹配特定字符串：<br />^[A-Za-z]+$　　//匹配由26个英文字母组成的字符串<br />^[A-Z]+$　　//匹配由26个英文字母的大写组成的字符串<br />^[a-z]+$　　//匹配由26个英文字母的小写组成的字符串<br />^[A-Za-z0-9]+$　　//匹配由数字和26个英文字母组成的字符串<br />^w+$　　//匹配由数字、26个英文字母或者下划线组成的字符串<br /><br />在使用RegularExpressionValidator验证控件时的验证功能及其验证表达式介绍如下:<br /><br />只能输入数字：&ldquo;^[0-9]*$&rdquo;<br />只能输入n位的数字：&ldquo;^d{n}$&rdquo;<br />只能输入至少n位数字：&ldquo;^d{n,}$&rdquo;<br />只能输入m-n位的数字：&ldquo;^d{m,n}$&rdquo;<br />只能输入零和非零开头的数字：&ldquo;^(0|[1-9][0-9]*)$&rdquo;<br />只能输入有两位小数的正实数：&ldquo;^[0-9]+(.[0-9]{2})?$&rdquo;<br />只能输入有1-3位小数的正实数：&ldquo;^[0-9]+(.[0-9]{1,3})?$&rdquo;<br />只能输入非零的正整数：&ldquo;^+?[1-9][0-9]*$&rdquo;<br />只能输入非零的负整数：&ldquo;^-[1-9][0-9]*$&rdquo;<br />只能输入长度为3的字符：&ldquo;^.{3}$&rdquo;<br />只能输入由26个英文字母组成的字符串：&ldquo;^[A-Za-z]+$&rdquo;<br />只能输入由26个大写英文字母组成的字符串：&ldquo;^[A-Z]+$&rdquo;<br />只能输入由26个小写英文字母组成的字符串：&ldquo;^[a-z]+$&rdquo;<br />只能输入由数字和26个英文字母组成的字符串：&ldquo;^[A-Za-z0-9]+$&rdquo;<br />只能输入由数字、26个英文字母或者下划线组成的字符串：&ldquo;^w+$&rdquo;<br />验证用户密码:&ldquo;^[a-zA-Z]w{5,17}$&rdquo;正确格式为：以字母开头，长度在6-18之间，<br /><br />只能包含字符、数字和下划线。<br />验证是否含有^%&amp;&rsquo;,;=?$&rdquo;等字符：&ldquo;[^%&amp;',;=?$x22]+&rdquo;<br />只能输入汉字：&ldquo;^[u4e00-u9fa5],{0,}$&rdquo;<br />验证Email地址：&ldquo;^w+[-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$&rdquo;<br />验证InternetURL：&ldquo;^http://([w-]+.)+[w-]+(/[w-./?%&amp;=]*)?$&rdquo;<br />验证电话号码：&ldquo;^((d{3,4})|d{3,4}-)?d{7,8}$&rdquo;<br /><br />正确格式为：&ldquo;XXXX-XXXXXXX&rdquo;，&ldquo;XXXX-XXXXXXXX&rdquo;，&ldquo;XXX-XXXXXXX&rdquo;，<br /><br />&ldquo;XXX-XXXXXXXX&rdquo;，&ldquo;XXXXXXX&rdquo;，&ldquo;XXXXXXXX&rdquo;。<br />验证身份证号（15位或18位数字）：&ldquo;^d{15}|d{}18$&rdquo;<br />验证一年的12个月：&ldquo;^(0?[1-9]|1[0-2])$&rdquo;正确格式为：&ldquo;01&rdquo;-&ldquo;09&rdquo;和&ldquo;1&rdquo;&ldquo;12&rdquo;<br />验证一个月的31天：&ldquo;^((0?[1-9])|((1|2)[0-9])|30|31)$&rdquo;<br /><br />正确格式为：&ldquo;01&rdquo;&ldquo;09&rdquo;和&ldquo;1&rdquo;&ldquo;31&rdquo;。<br /><br />匹配中文字符的正则表达式： [u4e00-u9fa5]<br />匹配双字节字符(包括汉字在内)：[^x00-xff]<br />匹配空行的正则表达式：n[s| ]*r<br />匹配HTML标记的正则表达式：/&lt; (.*)&gt;.*|&lt; (.*) /&gt;/<br />匹配首尾空格的正则表达式：(^s*)|(s*$)<br />匹配Email地址的正则表达式：w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*<br />匹配网址URL的正则表达式：http://([w-]+.)+[w-]+(/[w- ./?%&amp;=]*)?<br /><br />(1)应用：计算字符串的长度（一个双字节字符长度计2，ASCII字符计1）<br />String.prototype.len=function(){return this.replace([^x00-xff]/g,&rdquo;aa&rdquo;).length;}<br /><br />(2)应用：javascript中没有像vbscript那样的trim函数，我们就可以利用这个表达式来实现<br />String.prototype.trim = function()<br />{<br />return this.replace(/(^s*)|(s*$)/g, &ldquo;&rdquo;);<br />}<br />(3)应用：利用正则表达式分解和转换IP地址<br />function IP2V(ip) //IP地址转换成对应数值<br />{<br />re=/(d+).(d+).(d+).(d+)/g //匹配IP地址的正则表达式<br />if(re.test(ip))<br />{<br />return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1<br />}<br />else<br />{<br />throw new Error(&rdquo;Not a valid IP address!&rdquo;)<br />}<br />}<br />(4)应用：从URL地址中提取文件名的javascript程序<br />s=&rdquo;http://www.9499.net/page1.htm&rdquo;;<br />s=s.replace(/(.*/){0,}([^.]+).*/ig,&rdquo;$2&Prime;) ; //Page1.htm<br />(5)应用：利用正则表达式限制网页表单里的文本框输入内容<br />用正则表达式限制只能输入中文：onkeyup=&rdquo;value=&rdquo;/blog/value.replace(/["^u4E00-u9FA5]/g,&rdquo;) &rdquo; onbeforepaste=&rdquo;clipboardData.setData(&rsquo;text&rsquo;,clipboardData.getData(&rsquo;text&rsquo;).replace(/[^u4E00-u9FA5]/g,&rdquo;))&rdquo;<br />用正则表达式限制只能输入全角字符： onkeyup=&rdquo;value=&rdquo;/blog/value.replace(/["^uFF00-uFFFF]/g,&rdquo;) &rdquo; onbeforepaste=&rdquo;clipboardData.setData(&rsquo;text&rsquo;,clipboardData.getData(&rsquo;text&rsquo;).replace(/[^uFF00-uFFFF]/g,&rdquo;))&rdquo;<br />用正则表达式限制只能输入数字：onkeyup=&rdquo;value=&rdquo;/blog/value.replace(/["^d]/g,&rdquo;) &ldquo;onbeforepaste= &ldquo;clipboardData.setData(&rsquo;text&rsquo;,clipboardData.getData(&rsquo;text&rsquo;).replace(/[^d]/g,&rdquo;))&rdquo;<br />用正则表达式限制只能输入数字和英文：onkeyup=&rdquo;value=&rdquo;/blog/value.replace(/[W]/g,&rdquo;&rdquo;) &ldquo;onbeforepaste=&rdquo;clipboardData.setData(&rsquo;text&rsquo;,clipboardData.getData(&rsquo;text&rsquo;).replace(/[^d]/g,&rdquo;<br /><br />kimi At 2007-02-11 18:00:56 In 正则表达式. <br />评论(3 条评论)<br />cd - 2007-08-28 10:40 <br /><br />小水水 ，请问DZ只允许英文、中文和数字做用户名该怎么写啊？<br />doudou - 2007-09-30 15:22 <br /><br />匹配中文字符的正则表达式： [u4e00-u9fa5]<br />评注：匹配中文还真是个头疼的事，有了这个表达式就好办了<br /><br />这个怎么不行啊 我用的[^u4e00-u9fa5] 才匹配除中文来<br />max - 2007-12-07 11:08 <br /><br />小水水 ，请问DZ只允许英文、中文和数字做用户名该怎么写啊？<br /><br />[u4e00-u9fa5\da-zA-Z]{3,}<br />三个以上的英文、中文和数字(中文一个汉字也是一个字符)<br /></p>
<p>&nbsp;</p>
<p>
<table cellspacing="0" border="0" align="center" width="100%" cellpadding="0">
<tbody>
<tr>
<td class="F14_000000_B" align="center" height="30">
<table cellspacing="0" border="0" width="100%" cellpadding="0">
<tbody>
<tr>
<td align="center">
<h3>Struts validation规则</h3>
</td>
</tr>
<tr>
<td align="center" height="30">【 标签：ajax,otherinputid,validate,技术,验证 】【 发布时间：2008-01-16 】<a href="caiContent_6822.html" title="网站链接"><span style="color: #996633;">上一篇</span></a>&nbsp;&nbsp;<a href="caiContent_8651.html" title="ajax-upload使用小记"><span style="color: #996633;">下一篇</span></a>&nbsp;&nbsp; </td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr id="visit">
<td align="left">
<table cellspacing="0" border="0" id="visit" width="100%" cellpadding="0">
<tbody>
<tr>
<td width="588" style="font-size: 12px; line-height: 25px;">
<div>
<h2 id="section-Javascript_EasyValidation-_E6_A3_80_E6_9F_A5_E8_A7_84_E5_88_99">检查规则</h2>
<table border="1">
<tbody>
<tr>
<th>验证表达式</th><th>描述</th><th>示例</th>
</tr>
<tr>
<td>required </td>
<td>非空域,全部空格也算空 </td>
<td><br /></td>
</tr>
<tr>
<td>validate-number </td>
<td>一个有效数 </td>
<td><br /></td>
</tr>
<tr>
<td>validate-digits </td>
<td>只能包含0-9任意个数字 </td>
<td><br /></td>
</tr>
<tr>
<td>validate-alpha </td>
<td>只能是字母a-z, A-Z </td>
<td><br /></td>
</tr>
<tr>
<td>validate-alphanum </td>
<td>只能是字母和数字的组合</td>
<td><br /></td>
</tr>
<tr>
<td>validate-email </td>
<td>只能是有效的email </td>
<td><br /></td>
</tr>
<tr>
<td>validate-url </td>
<td>只能是有效的url地址 </td>
<td><br /></td>
</tr>
<tr>
<td>validate-one-required </td>
<td>至少有一个被选中,例如一组checkbox, radiobutton,它们最好包含在一个div和span中 </td>
<td><br /></td>
</tr>
<tr>
<td>validate-integer </td>
<td>只能是整数,可以有正负号 </td>
<td><br /></td>
</tr>
<tr>
<td>validate-ip </td>
<td>有效的IP地址 </td>
<td><br /></td>
</tr>
<tr>
<td>min-length-$number </td>
<td>最小长度是$number <strong>(</strong><strong>此处$some</strong><strong>表示一个特定的值)</strong></td>
<td>最小长度为8: min-length-8</td>
</tr>
<tr>
<td>max-length-$number </td>
<td>最大长度是$number </td>
<td>最大长度为8: max-length-8</td>
</tr>
<tr>
<td>max-value-$number </td>
<td>输入域的最大值是$number </td>
<td>最大值为8.1: max-value-8.1</td>
</tr>
<tr>
<td>min-value-$number </td>
<td>输入域的最小值是$number </td>
<td>最大值为-8.1: max-value--8.1</td>
</tr>
<tr>
<td>equals-$otherInputId </td>
<td>必须和某个input field相等,用于密码两次输入验证 </td>
<td>equals-password</td>
</tr>
<tr>
<td>less-than-$otherInputId </td>
<td>小于某个input field less-than-otherInputId,多用于结束日期不能小于开始日期的需求 </td>
<td><br /></td>
</tr>
<tr>
<td>great-than-$otherInputId </td>
<td>大于某个input field less-than-otherInputId </td>
<td><br /></td>
</tr>
<tr>
<td>validate-date-$dateFormat </td>
<td>只能是日期,$dateFormat为日期格式,$dateFormat的可选,默认格式为yyyy-MM-DD </td>
<td>validate-date-yyyy年MM月dd日</td>
</tr>
<tr>
<td>validate-file-$type1-$type2-$typeX </td>
<td>验证文件输入域选择的文件类型只能为声明的$type1 &ndash; $typeX中的一种 </td>
<td>validate-file-png-jpeg</td>
</tr>
<tr>
<td>float-range-$minValue-$maxValue </td>
<td>必须是$minValue到$maxValue的一个浮点数 </td>
<td>1至20: float-range-1-20</td>
</tr>
<tr>
<td>int-range-$minValue-$maxValue </