<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Richie&#039;s Blog 心情车站 &#187; 代码</title>
	<atom:link href="http://www.richiebox.com/tag/%E4%BB%A3%E7%A0%81/feed" rel="self" type="application/rss+xml" />
	<link>http://www.richiebox.com</link>
	<description>喜怒哀乐 in mylife</description>
	<lastBuildDate>Fri, 12 Nov 2010 14:20:55 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>平时做网站经常要用正则表达式，下面是一些讲解和例子，仅供大家参考和修改使用：</title>
		<link>http://www.richiebox.com/bdqn/php/295.html</link>
		<comments>http://www.richiebox.com/bdqn/php/295.html#comments</comments>
		<pubDate>Mon, 14 Sep 2009 15:28:41 +0000</pubDate>
		<dc:creator>richie</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[正则表达式]]></category>

		<guid isPermaLink="false">http://www.richiebox.com/?p=295</guid>
		<description><![CDATA[平时做网站经常要用正则表达式，下面是一些讲解和例子，仅供大家参考和修改使用：
&#8220;^\d+$&#8221;　　//非负整数（正整数 + 0）
&#8220;^[0-9]*[1-9][0-9]*$&#8221;　　//正整数
&#8220;^((-\d+)&#124;(0+))$&#8221;　　//非正整数（负整数 + 0）
&#8220;^-[0-9]*[1-9][0-9]*$&#8221;　　//负整数
&#8220;^-?\d+$&#8221;　　　　//整数
&#8220;^\d+(\.\d+)?$&#8221;　　//非负浮点数（正浮点数 + 0）
&#8220;^(([0-9]+\.[0-9]*[1-9][0-9]*)&#124;([0-9]*[1-9][0-9]*\.[0-9]+)&#124;([0-9]*[1-9][0-9]*))$&#8221;　　//正浮点数
&#8220;^((-\d+(\.\d+)?)&#124;(0+(\.0+)?))$&#8221;　　//非正浮点数（负浮点数 + 0）
&#8220;^(-(([0-9]+\.[0-9]*[1-9][0-9]*)&#124;([0-9]*[1-9][0-9]*\.[0-9]+)&#124;([0-9]*[1-9][0-9]*)))$&#8221;　　//负浮点数
&#8220;^(-?\d+)(\.\d+)?$&#8221;　　//浮点数

&#8220;^[A-Za-z]+$&#8221;　　//由26个英文字母组成的字符串
&#8220;^[A-Z]+$&#8221;　　//由26个英文字母的大写组成的字符串
&#8220;^[a-z]+$&#8221;　　//由26个英文字母的小写组成的字符串
&#8220;^[A-Za-z0-9]+$&#8221;　　//由数字和26个英文字母组成的字符串
&#8220;^\w+$&#8221;　　//由数字、26个英文字母或者下划线组成的字符串
&#8220;^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$&#8221;　　　　//email地址
&#8220;^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$&#8221;　　//url
/^(d{2}&#124;d{4})-((0([1-9]{1}))&#124;(1[1&#124;2]))-(([0-2]([1-9]{1}))&#124;(3[0&#124;1]))$/   //  年-月-日
/^((0([1-9]{1}))&#124;(1[1&#124;2]))/(([0-2]([1-9]{1}))&#124;(3[0&#124;1]))/(d{2}&#124;d{4})$/   // 月/日/年
&#8220;^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)&#124;(([w-]+.)+))([a-zA-Z]{2,4}&#124;[0-9]{1,3})(]?)$&#8221;   //Emil
/^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)&#124;([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$/     //电话号码
&#8220;^(d{1,2}&#124;1dd&#124;2[0-4]d&#124;25[0-5]).(d{1,2}&#124;1dd&#124;2[0-4]d&#124;25[0-5]).(d{1,2}&#124;1dd&#124;2[0-4]d&#124;25[0-5]).(d{1,2}&#124;1dd&#124;2[0-4]d&#124;25[0-5])$&#8221;   //IP地址匹配中文字符的正则表达式： [\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内)：[^\x00-\xff]
匹配空行的正则表达式：\n[\s&#124; ]*\r
匹配HTML标记的正则表达式：/&#60;(.*)&#62;.*&#60;\/\1&#62;&#124;&#60;(.*) \/&#62;/
匹配首尾空格的正则表达式：(^\s*)&#124;(\s*$)
匹配Email地址的正则表达式：\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配网址URL的正则表达式：^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$
匹配帐号是否合法(字母开头，允许5-16字节，允许字母数字下划线)：^[a-zA-Z][a-zA-Z0-9_]{4,15}$
匹配国内电话号码：(\d{3}-&#124;\d{4}-)?(\d{8}&#124;\d{7})?
匹配腾讯QQ号：^[1-9]*[1-9][0-9]*$元字符及其在正则表达式上下文中的行为：
\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符。
^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的Multiline 属性，^ 也匹配 ’\n’ 或 ’\r’ 之后的位置。
$ 匹配输入字符串的结束位置。如果设置了 RegExp 对象的Multiline 属性，$ 也匹配 ’\n’ 或 ’\r’ 之前的位置。
* 匹配前面的子表达式零次或多次。
+ 匹配前面的子表达式一次或多次。+ 等价于 {1,}。
? 匹配前面的子表达式零次或一次。? 等价于 {0,1}。
{n} n 是一个非负整数，匹配确定的n 次。
{n,} n 是一个非负整数，至少匹配n 次。
{n,m} m 和 n 均为非负整数，其中n &#60;= [...]]]></description>
			<content:encoded><![CDATA[<p><strong>平时做网站经常要用正则表达式</span>，下面是一些讲解和例子，仅供大家参考和修改使用：</strong><br />
&#8220;^\d+$&#8221;　　//非负整数（正整数 + 0）<br />
&#8220;^[0-9]*[1-9][0-9]*$&#8221;　　//正整数<br />
&#8220;^((-\d+)|(0+))$&#8221;　　//非正整数（负整数 + 0）<br />
&#8220;^-[0-9]*[1-9][0-9]*$&#8221;　　//负整数<br />
&#8220;^-?\d+$&#8221;　　　　//整数<br />
&#8220;^\d+(\.\d+)?$&#8221;　　//非负浮点数（正浮点数 + 0）<br />
&#8220;^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$&#8221;　　//正浮点数<br />
&#8220;^((-\d+(\.\d+)?)|(0+(\.0+)?))$&#8221;　　//非正浮点数（负浮点数 + 0）<br />
&#8220;^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$&#8221;　　//负浮点数<br />
&#8220;^(-?\d+)(\.\d+)?$&#8221;　　//浮点数<br />
<span id="more-295"></span><br />
&#8220;^[A-Za-z]+$&#8221;　　//由26个英文字母组成的<span class="t_tag" onclick="tagshow(event)">字符</span>串<br />
&#8220;^[A-Z]+$&#8221;　　//由26个英文字母的大写组成的字符串<br />
&#8220;^[a-z]+$&#8221;　　//由26个英文字母的小写组成的字符串<br />
&#8220;^[A-Za-z0-9]+$&#8221;　　//由数字和26个英文字母组成的字符串<br />
&#8220;^\w+$&#8221;　　//由数字、26个英文字母或者下划线组成的字符串<br />
&#8220;^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$&#8221;　　　　//email地址<br />
&#8220;^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$&#8221;　　//url<br />
/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/   //  年-月-日<br />
/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/   // 月/日/年<br />
&#8220;^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$&#8221;   //Emil<br />
/^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$/     //电话号码<br />
&#8220;^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$&#8221;   //IP地址匹配中文字符的<span class="t_tag" onclick="tagshow(event)">正则</span>表达式： [\u4e00-\u9fa5]<br />
匹配双字节字符(包括汉字在内)：[^\x00-\xff]<br />
匹配空行的正则表达式：\n[\s| ]*\r<br />
匹配HTML标记的正则表达式：/&lt;(.*)&gt;.*&lt;\/\1&gt;|&lt;(.*) \/&gt;/<br />
匹配首尾空格的正则表达式：(^\s*)|(\s*$)<br />
匹配Email地址的正则表达式：\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*<br />
匹配网址URL的正则表达式：^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$<br />
匹配帐号是否合法(字母开头，允许5-16字节，允许字母数字下划线)：^[a-zA-Z][a-zA-Z0-9_]{4,15}$<br />
匹配国内电话号码：(\d{3}-|\d{4}-)?(\d{8}|\d{7})?<br />
匹配腾讯QQ号：^[1-9]*[1-9][0-9]*$元字符及其在正则表达式上下文中的行为：</p>
<p>\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符。</p>
<p>^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的Multiline 属性，^ 也匹配 ’\n’ 或 ’\r’ 之后的位置。</p>
<p>$ 匹配输入字符串的结束位置。如果设置了 RegExp 对象的Multiline 属性，$ 也匹配 ’\n’ 或 ’\r’ 之前的位置。</p>
<p>* 匹配前面的子表达式零次或多次。</p>
<p>+ 匹配前面的子表达式一次或多次。+ 等价于 {1,}。</p>
<p>? 匹配前面的子表达式零次或一次。? 等价于 {0,1}。</p>
<p>{n} n 是一个非负整数，匹配确定的n 次。</p>
<p>{n,} n 是一个非负整数，至少匹配n 次。</p>
<p>{n,m} m 和 n 均为非负整数，其中n &lt;= m。最少匹配 n 次且最多匹配 m 次。在逗号和两个数之间不能有空格。</p>
<p>? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时，匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所<span class="t_tag" onclick="tagshow(event)">搜索</span>的字符串，而默认的贪婪模式则尽可能多的匹配所搜索的字符串。</p>
<p>. 匹配除 &#8220;\n&#8221; 之外的任何单个字符。要匹配包括 ’\n’ 在内的任何字符，请使用象 ’[.\n]’ 的模式。<br />
(pattern) 匹配pattern 并获取这一匹配。</p>
<p>(?:pattern) 匹配pattern 但不获取匹配结果，也就是说这是一个非获取匹配，不进行存储供以后使用。</p>
<p>(?=pattern) 正向预查，在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使用。</p>
<p>(?!pattern) 负向预查，与(?=pattern)作用相反</p>
<p>x|y 匹配 x 或 y。</p>
<p>[xyz] 字符集合。</p>
<p>[^xyz] 负值字符集合。</p>
<p>[a-z] 字符范围，匹配指定范围内的任意字符。</p>
<p>[^a-z] 负值字符范围，匹配任何不在指定范围内的任意字符。</p>
<p>\b 匹配一个单词边界，也就是指单词和空格间的位置。</p>
<p>\B 匹配非单词边界。</p>
<p>\cx 匹配由x指明的控制字符。</p>
<p>\d 匹配一个数字字符。等价于 [0-9]。</p>
<p>\D 匹配一个非数字字符。等价于 [^0-9]。</p>
<p>\f 匹配一个换页符。等价于 \x0c 和 \cL。</p>
<p>\n 匹配一个换行符。等价于 \x0a 和 \cJ。</p>
<p>\r 匹配一个回车符。等价于 \x0d 和 \cM。</p>
<p>\s 匹配任何空白字符，包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。</p>
<p>\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。</p>
<p>\t 匹配一个制表符。等价于 \x09 和 \cI。</p>
<p>\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。</p>
<p>\w 匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’。</p>
<p>\W 匹配任何非单词字符。等价于 ’[^A-Za-z0-9_]’。</p>
<p>\xn 匹配 n，其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。</p>
<p>\num 匹配 num，其中num是一个正整数。对所获取的匹配的引用。</p>
<p>\n 标识一个八进制转义值或一个后向引用。如果 \n 之前至少 n 个获取的子表达式，则 n 为后向引用。否则，如果 n 为八进制数字 (0-7)，则 n 为一个八进制转义值。</p>
<p>\nm 标识一个八进制转义值或一个后向引用。如果 \nm 之前至少有is preceded by at least nm 个获取得子表达式，则 nm 为后向引用。如果 \nm 之前至少有 n 个获取，则 n 为一个后跟文字 m 的后向引用。如果前面的条件都不满足，若 n 和 m 均为八进制数字 (0-7)，则 \nm 将匹配八进制转义值 nm。</p>
<p>\nml 如果 n 为八进制数字 (0-3)，且 m 和 l 均为八进制数字 (0-7)，则匹配八进制转义值 nml。</p>
<p>\un 匹配 n，其中 n 是一个用四个十六进制数字表示的Unicode字符。</p>
<p>匹配中文字符的正则表达式： [u4e00-u9fa5]</p>
<p>匹配双字节字符(包括汉字在内)：[^x00-xff]</p>
<p>匹配空行的正则表达式：n[s| ]*r</p>
<p>匹配HTML标记的正则表达式：/&lt;(.*)&gt;.*&lt;/1&gt;|&lt;(.*) /&gt;/</p>
<p>匹配首尾空格的正则表达式：(^s*)|(s*$)</p>
<p>匹配Email地址的正则表达式：w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*</p>
<p>匹配网址URL的正则表达式：http://([w-]+.)+[w-]+(/[w- ./?%&amp;=]*)?</p>
<p>利用正则表达式限制网页表单里的文本框输入内容：</p>
<p>用正则表达式限制只能输入中文：onkeyup=&#8221;value=value.replace(/[^u4E00-u9FA5]/g,&#8221;)&#8221;</p>
<p>用正则表达式限制只能输入全角字符：</p>
<p>用正则表达式限制只能输入数字：onkeyup=&#8221;value=value.replace(/[^d]/g,&#8221;) &#8220;onbeforepaste=&#8221;clipboardData.setData(&#8216;text&#8217;,clipboardData.getData(&#8216;text&#8217;).replace(/[^d]/g,&#8221;))&#8221;</p>
<p>用正则表达式限制只能输入数字和英文：onkeyup=&#8221;value=value.replace(/[W]/g,&#8221;) &#8220;onbeforepaste=&#8221;clipboardData.setData(&#8216;text&#8217;,clipboardData.getData(&#8216;text&#8217;).replace(/[^d]/g,&#8221;))&#8221;</p>
<p>=========常用正则式</p>
<p>匹配中文字符的正则表达式： [\u4e00-\u9fa5]</p>
<p>匹配双字节字符(包括汉字在内)：[^\x00-\xff]</p>
<p>匹配空行的正则表达式：\n[\s| ]*\r</p>
<p>匹配HTML标记的正则表达式：/&lt;(.*)&gt;.*&lt;\/\1&gt;|&lt;(.*) \/&gt;/</p>
<p>匹配首尾空格的正则表达式：(^\s*)|(\s*$)</p>
<p>匹配IP地址的正则表达式：/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //</p>
<p>匹配Email地址的正则表达式：\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*</p>
<p>匹配网址URL的正则表达式：http://(/[\w-]+\.)+[\w-]+(/[\w- ./?%&amp;=]*)?</p>
<p>sql语句：^(select|drop|delete|create|update|insert).*$</p>
<p>1、非负整数：^\d+$</p>
<p>2、正整数：^[0-9]*[1-9][0-9]*$</p>
<p>3、非正整数：^((-\d+)|(0+))$</p>
<p>4、负整数：^-[0-9]*[1-9][0-9]*$</p>
<p>5、整数：^-?\d+$</p>
<p>6、非负浮点数：^\d+(\.\d+)?$</p>
<p>7、正浮点数：^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$</p>
<p>8、非正浮点数：^((-\d+\.\d+)?)|(0+(\.0+)?))$</p>
<p>9、负浮点数：^(-((正浮点数正则式)))$</p>
<p>10、英文字符串：^[A-Za-z]+$</p>
<p>11、英文大写串：^[A-Z]+$</p>
<p>12、英文小写串：^[a-z]+$</p>
<p>13、英文字符数字串：^[A-Za-z0-9]+$</p>
<p>14、英数字加下划线串：^\w+$</p>
<p>15、E-mail地址：^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$</p>
<p>16、URL：^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$<br />
或：^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&amp;_~`@[\]\&#8217;:+!]*([^&lt;&gt;\"\"])*$</p>
<p>17、邮政编码：^[1-9]\d{5}$</p>
<p>18、中文：^[\u0391-\uFFE5]+$</p>
<p>19、电话号码：^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$</p>
<p>20、手机号码：^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$</p>
<p>21、双字节字符(包括汉字在内)：^\x00-\xff</p>
<p>22、匹配首尾空格：(^\s*)|(\s*$)（像vbscript那样的trim<span class="t_tag" onclick="tagshow(event)">函数</span>）</p>
<p>23、匹配HTML标记：&lt;(.*)&gt;.*&lt;\/\1&gt;|&lt;(.*) \/&gt;</p>
<p>24、匹配空行：\n[\s| ]*\r</p>
<p>25、提取信息中的网络<span class="t_tag" onclick="tagshow(event)">链接</span>：(h|H)(r|R)(e|E)(f|F) *= *(&#8216;|&#8221;)?(\w|\\|\/|\.)+(&#8216;|&#8221;| *|&gt;)?</p>
<p>26、提取信息中的邮件地址：\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*</p>
<p>27、提取信息中的图片链接：(s|S)(r|R)(c|C) *= *(&#8216;|&#8221;)?(\w|\\|\/|\.)+(&#8216;|&#8221;| *|&gt;)?</p>
<p>28、提取信息中的IP地址：(\d+)\.(\d+)\.(\d+)\.(\d+)</p>
<p>29、提取信息中的中国手机号码：(86)*0*13\d{9}</p>
<p>30、提取信息中的中国固定电话号码：(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8}</p>
<p>31、提取信息中的中国电话号码（包括移动和固定电话）：(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}</p>
<p>32、提取信息中的中国邮政编码：[1-9]{1}(\d+){5}</p>
<p>33、提取信息中的浮点数（即小数）：(-?\d*)\.?\d+</p>
<p>34、提取信息中的任何数字 ：(-?\d*)(\.\d+)?</p>
<p>35、IP：(\d+)\.(\d+)\.(\d+)\.(\d+)</p>
<p>36、电话区号：/^0\d{2,3}$/</p>
<p>37、腾讯QQ号：^[1-9]*[1-9][0-9]*$</p>
<p>38、帐号(字母开头，允许5-16字节，允许字母数字下划线)：^[a-zA-Z][a-zA-Z0-9_]{4,15}$</p>
<p>39、中文、英文、数字及下划线：^[\u4e00-\u9fa5_a-zA-Z0-9]+$</p>
]]></content:encoded>
			<wfw:commentRss>http://www.richiebox.com/bdqn/php/295.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>一个月的成就！2个产品上线！不容易！</title>
		<link>http://www.richiebox.com/work/279.html</link>
		<comments>http://www.richiebox.com/work/279.html#comments</comments>
		<pubDate>Tue, 05 May 2009 11:37:40 +0000</pubDate>
		<dc:creator>richie</dc:creator>
				<category><![CDATA[工作动态]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[作品]]></category>
		<category><![CDATA[工作]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[程序]]></category>

		<guid isPermaLink="false">http://www.richiebox.com/?p=279</guid>
		<description><![CDATA[d]]></description>
			<content:encoded><![CDATA[<p>从4月1日-5月3日 最辛苦的日子<br />
终于收到果实<br />
2个自认为比较重要的项目均按时线<br />
    第一个：<a href="http://passport.51edu.com">http://passport.51edu.com</a> 精品通行证，集成了BBS，SNS,SHOP，CMS 和相关java程序 的SSO项目！<br />
    第二个：<a href="http://www.51edu.com/">http://www.51edu.com/</a> 精品学习网主站 基本上是从4月24日-5月3日  10天的时间来做的 超辛苦</p>
<p>真的是吐血啊，不容易 不过总算是熬过来了 加油！相信自己</p>
]]></content:encoded>
			<wfw:commentRss>http://www.richiebox.com/work/279.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>重装系统用了2天！你信么！</title>
		<link>http://www.richiebox.com/mylife/lifenote/269.html</link>
		<comments>http://www.richiebox.com/mylife/lifenote/269.html#comments</comments>
		<pubDate>Sun, 12 Apr 2009 12:07:35 +0000</pubDate>
		<dc:creator>richie</dc:creator>
				<category><![CDATA[生活流水]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[学习]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://www.richiebox.com/?p=269</guid>
		<description><![CDATA[我都愁死了~
耽误时间主要有以下几个问题
1.装的是windows xp sp2原版的
2.装完以后升级sp3
3.打完所有补丁
4.安装java开发环境myEclipse+Tomcat
5.安装.net开发环境VS2005+IIS
6.安装php开发环境Apache+Php
7.安装美工设计环境PS+FW+DW
8.安装数据库Mysql+Sqlserver
9.安装安全类软件 360+Mcafee
10.安装常用软件……………………一堆~~~
不想再装系统了~……
]]></description>
			<content:encoded><![CDATA[<p>我都愁死了~<br />
耽误时间主要有以下几个问题<br />
1.装的是windows xp sp2原版的<br />
2.装完以后升级sp3<br />
3.打完所有补丁<br />
4.安装java开发环境myEclipse+Tomcat<br />
5.安装.net开发环境VS2005+IIS<br />
6.安装php开发环境Apache+Php<br />
7.安装美工设计环境PS+FW+DW<br />
8.安装数据库Mysql+Sqlserver<br />
9.安装安全类软件 360+Mcafee<br />
10.安装常用软件……………………一堆~~~</p>
<p>不想再装系统了~……</p>
]]></content:encoded>
			<wfw:commentRss>http://www.richiebox.com/mylife/lifenote/269.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>累的感觉知道是什么么？</title>
		<link>http://www.richiebox.com/mylife/lifenote/266.html</link>
		<comments>http://www.richiebox.com/mylife/lifenote/266.html#comments</comments>
		<pubDate>Thu, 09 Apr 2009 12:35:35 +0000</pubDate>
		<dc:creator>richie</dc:creator>
				<category><![CDATA[生活流水]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[北大青鸟]]></category>
		<category><![CDATA[学习]]></category>
		<category><![CDATA[工作]]></category>
		<category><![CDATA[心情]]></category>
		<category><![CDATA[生活]]></category>

		<guid isPermaLink="false">http://www.richiebox.com/?p=266</guid>
		<description><![CDATA[上的培训班从1，3，5，7上课 改成了 1，3，4，5上课
真的很郁闷，本来周日的课是我肯定可以上的，现在又变成了未知数
可怜的我啊 真的想好好学完，但是最近真的太忙了
今天在学校，我说真烦，改成1，3，4，5上课，同学说了，他也烦，因为3，4，5连着太累了，没法玩了
我回答：当你什么时候感觉到晚上睡眠时间不够了 就进入正轨了~~~
哎！
希望有始有终的，尽量把课跟下来！……
负责的项目倒计时 还有21天
]]></description>
			<content:encoded><![CDATA[<p>上的培训班从1，3，5，7上课 改成了 1，3，4，5上课<br />
真的很郁闷，本来周日的课是我肯定可以上的，现在又变成了未知数<br />
可怜的我啊 真的想好好学完，但是最近真的太忙了</p>
<p>今天在学校，我说真烦，改成1，3，4，5上课，同学说了，他也烦，因为3，4，5连着太累了，没法玩了<br />
我回答：当你什么时候感觉到晚上睡眠时间不够了 就进入正轨了~~~</p>
<p>哎！<br />
希望有始有终的，尽量把课跟下来！……</p>
<p>负责的项目倒计时 还有21天</p>
]]></content:encoded>
			<wfw:commentRss>http://www.richiebox.com/mylife/lifenote/266.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>产品or项目？</title>
		<link>http://www.richiebox.com/work/264.html</link>
		<comments>http://www.richiebox.com/work/264.html#comments</comments>
		<pubDate>Fri, 03 Apr 2009 13:24:53 +0000</pubDate>
		<dc:creator>richie</dc:creator>
				<category><![CDATA[工作动态]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[学习]]></category>
		<category><![CDATA[工作]]></category>
		<category><![CDATA[心情]]></category>
		<category><![CDATA[软件]]></category>

		<guid isPermaLink="false">http://www.richiebox.com/?p=264</guid>
		<description><![CDATA[最近一直没有更新blog 主要原因是太忙了，忙的自己都晕头转向
自己策划的用户中心，终于进入了项目开发阶段
我呢，也由一个策划者，变成了一个项目管理者
这是第二次和外包商打交道，第一次是酷六，这次也是php领先的康盛创想
戴志康还是很佩服的，至少在上次的站长大会有过一次接触后，对他还是很钦佩
康盛在上地，我住的地方呢，貌似天壤之别，每天在交通上耽误的时间，真的让我很心疼啊。
产品or项目？我觉得都是很有学问的
最近有朋友问我，你到底想往哪方面发展啊，得赶紧定个方向啊
说实话 我真的很迷茫，不知道自己该何去何从…………
]]></description>
			<content:encoded><![CDATA[<p>最近一直没有更新blog 主要原因是太忙了，忙的自己都晕头转向<br />
自己策划的用户中心，终于进入了项目开发阶段<br />
我呢，也由一个策划者，变成了一个项目管理者<br />
这是第二次和外包商打交道，第一次是酷六，这次也是php领先的康盛创想<br />
戴志康还是很佩服的，至少在上次的站长大会有过一次接触后，对他还是很钦佩</p>
<p>康盛在上地，我住的地方呢，貌似天壤之别，每天在交通上耽误的时间，真的让我很心疼啊。</p>
<p>产品or项目？我觉得都是很有学问的<br />
最近有朋友问我，你到底想往哪方面发展啊，得赶紧定个方向啊</p>
<p>说实话 我真的很迷茫，不知道自己该何去何从…………</p>
]]></content:encoded>
			<wfw:commentRss>http://www.richiebox.com/work/264.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java学习即将结束了 我也要对java近阶段的学习进行总结了</title>
		<link>http://www.richiebox.com/bdqn/java/248.html</link>
		<comments>http://www.richiebox.com/bdqn/java/248.html#comments</comments>
		<pubDate>Fri, 13 Feb 2009 18:29:51 +0000</pubDate>
		<dc:creator>richie</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[北大青鸟]]></category>
		<category><![CDATA[学习]]></category>
		<category><![CDATA[技术]]></category>

		<guid isPermaLink="false">http://www.richiebox.com?p=248</guid>
		<description><![CDATA[大概想了想几个方面jspservletstruts1.2hibernate3.1spring2.5貌似就学了这些总结一些 让自己更清醒的认识一下真的是太忙了 希望能有时间
]]></description>
			<content:encoded><![CDATA[<p>大概想了想几个方面<br/>jsp<br/>servlet<br/>struts1.2<br/>hibernate3.1<br/>spring2.5<br/><br/>貌似就学了这些<br/>总结一些 让自己更清醒的认识一下<br/>真的是太忙了 希望能有时间</p>
]]></content:encoded>
			<wfw:commentRss>http://www.richiebox.com/bdqn/java/248.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>几个PHP函数</title>
		<link>http://www.richiebox.com/bdqn/php/218.html</link>
		<comments>http://www.richiebox.com/bdqn/php/218.html#comments</comments>
		<pubDate>Fri, 31 Oct 2008 10:26:02 +0000</pubDate>
		<dc:creator>richie</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[代码]]></category>

		<guid isPermaLink="false">http://www.richiebox.com?p=218</guid>
		<description><![CDATA[strtok切开字符串。语法: string strtok(string arg1, string arg2);返回值: 字符串内容说明 本函数将字符串 arg1 依字符串 arg2 的值切开成小段小段的字符串。使用范例 本例将 I will be back 字符串依空白切开。 strtolower字符串全转为小写。语法: string strtolower(string str);返回值: 字符串内容说明 本函数将字符串 str 全部变小写字符串。strtoupper字符串全转为大写。语法: string strtoupper(string str);返回值: 字符串内容说明 本函数将字符串 str 全部变大写字符串。str_replace字符串取代。语法: string str_replace(string needle, string str, string haystack);返回值: 字符串内容说明 本函数将字符串 str 代入 haystack 字符串中，将所有的 needle 置换成 str。使用范例 下例将 %body% 以 black 取代]]></description>
			<content:encoded><![CDATA[<p>strtok切开字符串。<br/>语法: string strtok(string arg1, string arg2);<br/>返回值: 字符串<br/>内容说明 <br/>本函数将字符串 arg1 依字符串 arg2 的值切开成小段小段的字符串。<br/><br/><br/>使用范例 <br/>本例将 I will be back 字符串依空白切开。<br/><?php<br/>$string = &#8220;I will be back&#8221;;<br/>$tok = strtok($string,&#8221; &#8220;);<br/>while($tok) {<br/><br/>echo &#8220;单字=$tok<br />&#8220;;<br/><br/>$tok = strtok(&#8221; &#8220;);<br/>}<br/>?> <br/>strtolower字符串全转为小写。<br/>语法: string strtolower(string str);<br/>返回值: 字符串<br/>内容说明 <br/>本函数将字符串 str 全部变小写字符串。<br/>strtoupper字符串全转为大写。<br/>语法: string strtoupper(string str);<br/>返回值: 字符串<br/>内容说明 <br/>本函数将字符串 str 全部变大写字符串。<br/>str_replace字符串取代。<br/>语法: string str_replace(string needle, string str, string haystack);<br/>返回值: 字符串<br/>内容说明 <br/>本函数将字符串 str 代入 haystack 字符串中，将所有的 needle 置换成 str。<br/><br/><br/>使用范例 <br/>下例将 %body% 以 black 取代<br/><?php<br/>$bodytag = str_replace(&#8220;%body%&#8221;, &#8220;black&#8221;, &#8220;<br/>echo $bodytag;<br/>?> <br/>strtr转换某些字符。<br/>语法: string strtr(string str, string from, string to);<br/>返回值: 字符串<br/>内容说明 <br/>本函数将字符串 str 中和 from 有关的字符一一转成 to 的字符。<br/>substr取部分字符串。<br/>语法: string substr(string string, int start, int [length]);<br/>返回值: 字符串<br/>内容说明 <br/>本函数将字符串 string 的第 start 位起的字符串取出 length 个字符。若 start 为负数，则从字符串尾端算起。若可省略的参数 length 存在，但为负数，则表示取到倒数第 length 个字符。<br/><br/><br/>使用范例 <br/><?<br/>echo substr(&#8220;abcdef&#8221;, 1, 3);<br/>// 返回 &#8220;bcd&#8221;<br/>echo substr(&#8220;abcdef&#8221;, -2);<br/>// 返回 &#8220;ef&#8221;<br/>echo substr(&#8220;abcdef&#8221;, -3, 1); // 返回 &#8220;d&#8221;<br/>echo substr(&#8220;abcdef&#8221;, 1, -1); // 返回 &#8220;bcde&#8221;<br/>?> <br/>trim截去字符串首尾的空格。<br/>语法: string trim(string str);<br/>返回值: 字符串<br/>内容说明 <br/>本函数返回字符串 string 首尾的空白字符去除后的字符串。<br/>ucfirst将字符串第一个字符改大写。<br/>语法: string ucfirst(string str);<br/>返回值: 字符串<br/>内容说明 <br/>本函数返回字符串 str 第一个字的字首字母改成大写。<br/>ucwords将字符串每个字第一个字母改大写。<br/>语法: string ucwords(string str);<br/>返回值: 字符串<br/>内容说明 <br/>本函数返回字符串 str 每个字的字首字母全都改成大写。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.richiebox.com/bdqn/php/218.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>常用sql语句备份</title>
		<link>http://www.richiebox.com/bdqn/sqlserver/205.html</link>
		<comments>http://www.richiebox.com/bdqn/sqlserver/205.html#comments</comments>
		<pubDate>Fri, 19 Sep 2008 17:01:19 +0000</pubDate>
		<dc:creator>richie</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[代码]]></category>

		<guid isPermaLink="false">http://www.richiebox.com?p=205</guid>
		<description><![CDATA[下列语句部分是Mssql语句，不可以在access中使用。SQL分类： DDL—数据定义语言(CREATE，ALTER，DROP，DECLARE) DML—数据操纵语言(SELECT，DELETE，UPDATE，INSERT) DCL—数据控制语言(GRANT，REVOKE，COMMIT，ROLLBACK)首先,简要介绍基础语句：1、说明：创建数据库CREATE DATABASE database-name 2、说明：删除数据库drop database dbname3、说明：备份sql server&#8212; 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice &#39;disk&#39;, &#39;testBack&#39;, &#39;c:&#92;mssql7backup&#92;MyNwind_1.dat&#39;&#8212; 开始 备份BACKUP DATABASE pubs TO testBack 4、说明：创建新表create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)根据已有的表创建新表： A：create table tab_new like tab_old (使用旧表创建新表)B：create table tab_new as select col1,col2… from tab_old definition only5、说明：删除新表 phperz.comdrop table tabname 6、说明：增加一个列Alter table [...]]]></description>
			<content:encoded><![CDATA[<p>下列语句部分是Mssql语句，不可以在access中使用。<br/><br/>SQL分类： <br/>DDL—数据定义语言(CREATE，ALTER，DROP，DECLARE) <br/>DML—数据操纵语言(SELECT，DELETE，UPDATE，INSERT) <br/>DCL—数据控制语言(GRANT，REVOKE，COMMIT，ROLLBACK)<br/><br/>首先,简要介绍基础语句：<br/>1、说明：创建数据库<br/>CREATE DATABASE database-name <br/>2、说明：删除数据库<br/>drop database dbname<br/>3、说明：备份sql server<br/>&#8212; 创建 备份数据的 device<br/>USE master<br/>EXEC sp_addumpdevice &#39;disk&#39;, &#39;testBack&#39;, &#39;c:&#92;mssql7backup&#92;MyNwind_1.dat&#39;<br/>&#8212; 开始 备份<br/>BACKUP DATABASE pubs TO testBack <br/>4、说明：创建新表<br/>create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)<br/>根据已有的表创建新表： <br/>A：create table tab_new like tab_old (使用旧表创建新表)<br/>B：create table tab_new as select col1,col2… from tab_old definition only<br/>5、说明：删除新表 <br/>phperz.com<br/><br/><br/>drop table tabname <br/>6、说明：增加一个列<br/>Alter table tabname add column col type<br/>注：列增加后将不能删除。DB2中列加上后数据类型也不能改变，唯一能改变的是增加varchar类型的长度。<br/>7、说明：添加主键： Alter table tabname add primary key(col) <br/>说明：删除主键： Alter table tabname drop primary key(col) <br/>8、说明：创建索引：create [unique] index idxname on tabname(col….) <br/>删除索引：drop index idxname<br/>注：索引是不可更改的，想更改必须删除重新建。<br/>9、说明：创建视图：create view viewname as select statement <br/>删除视图：drop view viewname<br/>10、说明：几个简单的基本的sql语句<br/>选择：select * from table1 where 范围<br/>插入：insert into table1(field1,field2) values(value1,value2)<br/>删除：delete from table1 where 范围<br/>更新：update table1 set field1=value1 where 范围<br/>查找：select * from table1 where field1 like ’%value1%’ &#8212;like的语法很精妙，查资料! <br/>www.phperz.com<br/><br/><br/>排序：select * from table1 order by field1,field2 [desc]<br/>总数：select count(*) as totalcount from table1<br/>求和：select sum(field1) as sumvalue from table1<br/>平均：select avg(field1) as avgvalue from table1<br/>最大：select max(field1) as maxvalue from table1<br/>最小：select min(field1) as minvalue from table1<br/>11、说明：几个高级查询运算词<br/>A： UNION 运算符 <br/>UNION 运算符通过组合其他两个结果表（例如 TABLE1 和 TABLE2）并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时（即 UNION ALL），不消除重复行。两种情况下，派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 <br/>B： EXCEPT 运算符 <br/>EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL)，不消除重复行。 <br/>C： INTERSECT 运算符<br/>INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL)，不消除重复行。 <br/>注：使用运算词的几个查询结果行必须是一致的。 <br/>phperz.com<br/><br/><br/>12、说明：使用外连接 <br/>A、left outer join： <br/>左外连接（左连接）：结果集几包括连接表的匹配行，也包括左连接表的所有行。 <br/>SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c<br/>B：right outer join: <br/>右外连接(右连接)：结果集既包括连接表的匹配连接行，也包括右连接表的所有行。 <br/>C：full outer join： <br/>全外连接：不仅包括符号连接表的匹配行，还包括两个连接表中的所有记录。<br/><br/>其次，大家来看一些不错的sql语句<br/>1、说明：复制表(只复制结构,源表名：a 新表名：b) (Access可用)<br/>法一：select * into b from a where 1<>1<br/>法二：select top 0 * into b from a<br/><br/>2、说明：拷贝表(拷贝数据,源表名：a 目标表名：b) (Access可用)<br/>insert into b(a, b, c) select d,e,f from b;<br/><br/>3、说明：跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)<br/>insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件<br/>例子：..from b in &#39;&#8221;&#038;Server.MapPath(&#8220;.&#8221;)&#038;&#8221;&#92;data.mdb&#8221; &#038;&#8221;&#39; where.. <br/>www~phperz~com<br/><br/><br/>4、说明：子查询(表名1：a 表名2：b)<br/>select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)<br/><br/>5、说明：显示文章、提交人和最后回复时间<br/>select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b<br/><br/>6、说明：外连接查询(表名1：a 表名2：b)<br/>select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c<br/><br/>7、说明：在线视图查询(表名1：a )<br/>select * from (SELECT a,b,c FROM a) T where t.a > 1;<br/><br/>8、说明：between的用法,between限制查询数据范围时包括了边界值,not between不包括<br/>select * from table1 where time between time1 and time2<br/>select a,b,c, from table1 where a not between 数值1 and 数值2<br/><br/>9、说明：in 的使用方法<br/>select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’) phperz.com <br/><br/>10、说明：两张关联表，删除主表中已经在副表中没有的信息 <br/>delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )<br/><br/>11、说明：四表联查问题：<br/>select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where &#8230;..<br/><br/>12、说明：日程安排提前五分钟提醒 <br/>SQL: select * from 日程安排 where datediff(&#39;minute&#39;,f开始时间,getdate())>5<br/><br/>13、说明：一条sql 语句搞定数据库分页<br/>select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段<br/><br/>14、说明：读取前10条记录<br/>select top 10 * form table1 where 范围<br/><br/>15、说明：选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.) <br/>phperz.com<br/><br/><br/>select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)<br/><br/>16、说明：包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表<br/>(select a from tableA ) except (select a from tableB) except (select a from tableC)<br/><br/>17、说明：随机取出10条数据<br/>select top 10 * from tablename order by newid()<br/><br/>18、说明：随机选择记录<br/>select newid()<br/><br/>19、说明：删除重复记录<br/>Delete from tablename where id not in (select max(id) from tablename group by col1,col2,&#8230;)<br/><br/>20、说明：列出数据库里所有的表名<br/>select name from sysobjects where type=&#39;U&#39; <br/><br/>21、说明：列出表里的所有的<br/>select name from syscolumns where id=object_id(&#39;TableName&#39;)<br/><br/>22、说明：列示type、vender、pcs字段，以type字段排列，case可以方便地实现多重选择，类似select 中的case。<br/>select type,sum(case vender when &#39;A&#39; then pcs else 0 end),sum(case vender when &#39;C&#39; then pcs else 0 end),sum(case vender when &#39;B&#39; then pcs else 0 end) FROM tablename group by type <br/>www.phperz.com<br/><br/><br/>显示结果：<br/>type vender pcs<br/>电脑 A 1<br/>电脑 A 1<br/>光盘 B 2<br/>光盘 A 2<br/>手机 B 3<br/>手机 C 3<br/><br/>23、说明：初始化表table1<br/>TRUNCATE TABLE table1<br/><br/>24、说明：选择从10到15的记录<br/>select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc<br/>　　<br/>随机选择数据库记录的方法（使用Randomize函数，通过SQL语句实现）<br/>　　对存储在数据库中的数据来说，随机数特性能给出上面的效果，但它们可能太慢了些。你不能要求ASP“找个随机数”然后打印出来。实际上常见的解决方案是建立如下所示的循环： <br/>Randomize <br/>RNumber = Int(Rnd*499) +1 <br/>　<br/>While Not objRec.EOF <br/>If objRec(&#8220;ID&#8221;) = RNumber THEN <br/>&#8230; 这里是执行脚本 &#8230; <br/>end if <br/>objRec.MoveNext <br/>Wend <br/>　<br/>　　这很容易理解。首先，你取出1到500范围之内的一个随机数（假设500就是数据库内记录的总数）。然后，你遍历每一记录来测试ID 的值、检查其是否匹配RNumber。满足条件的话就执行由THEN 关键字开始的那一块代码。假如你的RNumber 等于495，那么要循环一遍数据库花的时间可就长了。虽然500这个数字看起来大了些，但相比更为稳固的企业解决方案这还是个小型数据库了，后者通常在一个数据库内就包含了成千上万条记录。这时候不就死定了？ <br/>php程序员站<br/><br/><br/>　　采用SQL，你就可以很快地找出准确的记录并且打开一个只包含该记录的recordset，如下所示： <br/>Randomize <br/>RNumber = Int(Rnd*499) + 1 <br/>　<br/>SQL = &#8220;SELECT * FROM Customers WHERE ID = &#8221; &#038; RNumber <br/>　<br/>set objRec = ObjConn.Execute(SQL) <br/>Response.WriteRNumber &#038; &#8221; = &#8221; &#038; objRec(&#8220;ID&#8221;) &#038; &#8221; &#8221; &#038; objRec(&#8220;c_email&#8221;) <br/>　<br/>　　不必写出RNumber 和ID，你只需要检查匹配情况即可。只要你对以上代码的工作满意，你自可按需操作“随机”记录。Recordset没有包含其他内容，因此你很快就能找到你需要的记录这样就大大降低了处理时间。 <br/>再谈随机数 <br/>　　现在你下定决心要榨干Random 函数的最后一滴油，那么你可能会一次取出多条随机记录或者想采用一定随机范围内的记录。把上面的标准Random 示例扩展一下就可以用SQL应对上面两种情况了。 <br/>　　为了取出几条随机选择的记录并存放在同一recordset内，你可以存储三个随机数，然后查询数据库获得匹配这些数字的记录： <br/>SQL = &#8220;SELECT * FROM Customers WHERE ID = &#8221; &#038; RNumber &#038; &#8221; OR ID = &#8221; &#038; RNumber2 &#038; &#8221; OR ID = &#8221; &#038; RNumber3 phperz~com <br/>　<br/>　　假如你想选出10条记录（也许是每次页面装载时的10条链接的列表），你可以用BETWEEN 或者数学等式选出第一条记录和适当数量的递增记录。这一操作可以通过好几种方式来完成，但是 SELECT 语句只显示一种可能（这里的ID 是自动生成的号码）： <br/>SQL = &#8220;SELECT * FROM Customers WHERE ID BETWEEN &#8221; &#038; RNumber &#038; &#8221; AND &#8221; &#038; RNumber &#038; &#8220;+ 9&#8243; <br/><br/>　　注意：以上代码的执行目的不是检查数据库内是否有9条并发记录。<br/><br/>　<br/>随机读取若干条记录，测试过<br/>Access语法：SELECT top 10 * From 表名 ORDER BY Rnd(id)<br/>Sql server:select top n * from 表名 order by newid()<br/>mysql select * From 表名 Order By rand() Limit n<br/>Access左连接语法(最近开发要用左连接,Access帮助什么都没有,网上没有Access的SQL说明,只有自己测试, 现在记下以备后查)<br/>语法 select table1.fd1,table1,fd2,table2.fd2 From table1 left join table2 on table1.fd1,table2.fd1 where &#8230;<br/>使用SQL语句 用&#8230;代替过长的字符串显示<br/>语法：<br/>SQL数据库：select case when len(field)>10 then left(field,10)+&#39;&#8230;&#39; else field end as news_name,news_id from tablename php程序员站 <br/>Access数据库：SELECT iif(len(field)>2,left(field,2)+&#39;&#8230;&#39;,field) FROM tablename; <br/>　<br/>Conn.Execute说明<br/>Execute方法<br/>　　该方法用于执行SQL语句。根据SQL语句执行后是否返回记录集，该方法的使用格式分为以下两种：<br/>　　　　1．执行SQL查询语句时，将返回查询得到的记录集。用法为：<br/>　　　　Set 对象变量名=连接对象.Execute(&#8220;SQL 查询语言&#8221;)<br/>　　　Execute方法调用后，会自动创建记录集对象，并将查询结果存储在该记录对象中，通过Set方法，将记录集赋给指定的对象保存，以后对象变量就代表了该记录集对象。<br/><br/>　　　　2．执行SQL的操作性语言时，没有记录集的返回。此时用法为：<br/>　　　　连接对象.Execute &#8220;SQL 操作性语句&#8221; [, RecordAffected][, Option]<br/>　　　　　　·RecordAffected 为可选项，此出可放置一个变量，SQL语句执行后，所生效的记录数会自动保存到该变量中。通过访问该变量，就可知道SQL语句队多少条记录进行了操作。<br/>　　　　　　·Option 可选项，该参数的取值通常为adCMDText，它用于告诉ADO，应该将Execute方法之后的第一个字符解释为命令文本。通过指定该参数，可使执行更高效。 www.phperz.com <br/><br/>·BeginTrans、RollbackTrans、CommitTrans方法<br/>　　这三个方法是连接对象提供的用于事务处理的方法。BeginTrans用于开始一个事物；RollbackTrans用于回滚事务；CommitTrans用于提交所有的事务处理结果，即确认事务的处理。<br/>　　事务处理可以将一组操作视为一个整体，只有全部语句都成功执行后，事务处理才算成功；若其中有一个语句执行失败，则整个处理就算失败，并恢复到处里前的状态。<br/>　　BeginTrans和CommitTrans用于标记事务的开始和结束，在这两个之间的语句，就是作为事务处理的语句。判断事务处理是否成功，可通过连接对象的Error集合来实现，若Error集合的成员个数不为0，则说明有错误发生，事务处理失败。Error集合中的每一个Error对象，代表一个错误信息。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.richiebox.com/bdqn/sqlserver/205.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>6月4日 第七章 用ADO.NET查询和操作数据库</title>
		<link>http://www.richiebox.com/bdqn/csharp/182.html</link>
		<comments>http://www.richiebox.com/bdqn/csharp/182.html#comments</comments>
		<pubDate>Thu, 05 Jun 2008 15:54:57 +0000</pubDate>
		<dc:creator>richie</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[北大青鸟]]></category>
		<category><![CDATA[学习]]></category>
		<category><![CDATA[程序]]></category>

		<guid isPermaLink="false">http://www.richiebox.com?p=182</guid>
		<description><![CDATA[想要从数据库中读取多条记录就要使用Command对象的ExecuteReader()方法，方法返回一个DataReader对象用DataReader读取数据时 不能够对他们进行修改，所以他是只读的，而且在读取数据时要始终保持与数据库的链接主要属性方法属性HasRows 是否返回了结果FieldCount 当前行中的列数方法Read 前进到下一条记录 如果读到记录 返回trueClose 关闭DataReader对象使用方法Datareader对象比较特殊 使用时 需要调用Command对象的ExecuteReader()方法，返回值就是一个DateReader 对象 然后可以调用Read()方法来读取一行数据使用步骤如下1.创建Command对象2.调用Command对象的 ExecuteReader()方法 创建一个DataReader对象3.使用Read()方法逐行读取数据。4.读取当前行的某列数据 要进行类型转换(类型) dataReader["列名"]5.关闭DataReader对象dataReader.Close();操作数据执行类似于update insert delete语句使用Command对象的 ExecuteNonQuery()方法 返回是受影响行数最后还讲了一个新的空间ListView控件属性不说了说一下把数据加入到listview详细视图的步骤吧首先//创建一个ListView项ListViewItem lv =new ListViewItem(变量); //将哪个变量作为主项//给主项内添加子项lv.SubItem.AddRange(new string[] {子项变量,子项变量,子项变量,})；//将数据加入到ListView中ListView.Items.Add(lv);还讲了一个ContextMenuStrip空间 右键快捷菜单和菜单控件差不多有点难度 需要吸收吸收
]]></description>
			<content:encoded><![CDATA[<p>想要从数据库中读取多条记录<br/>就要使用Command对象的ExecuteReader()方法，方法返回一个DataReader对象<br/><br/>用DataReader读取数据时 不能够对他们进行修改，所以他是只读的，而且在读取数据时要始终保持与数据库的链接<br/><br/>主要属性方法<br/>属性<br/>HasRows 是否返回了结果<br/>FieldCount 当前行中的列数<br/><br/>方法<br/>Read 前进到下一条记录 如果读到记录 返回true<br/>Close 关闭DataReader对象<br/><br/>使用方法<br/>Datareader对象比较特殊 使用时 需要调用Command对象的ExecuteReader()方法，返回值就是一个DateReader 对象 然后可以调用Read()方法来读取一行数据<br/><br/>使用步骤如下<br/>1.创建Command对象<br/>2.调用Command对象的 ExecuteReader()方法 创建一个DataReader对象<br/>3.使用Read()方法逐行读取数据。<br/>4.读取当前行的某列数据 要进行类型转换<br/>(类型) dataReader["列名"]<br/>5.关闭DataReader对象<br/>dataReader.Close();<br/><br/><br/>操作数据<br/>执行类似于update insert delete语句<br/>使用Command对象的 ExecuteNonQuery()方法 <br/>返回是受影响行数<br/><br/><br/><br/>最后还讲了一个新的空间<br/>ListView控件<br/>属性不说了<br/>说一下把数据加入到listview详细视图的步骤吧<br/><br/>首先<br/>//创建一个ListView项<br/>ListViewItem lv =new ListViewItem(变量); //将哪个变量作为主项<br/>//给主项内添加子项<br/>lv.SubItem.AddRange(new string[] {子项变量,子项变量,子项变量,})；<br/>//将数据加入到ListView中<br/>ListView.Items.Add(lv);<br/><br/>还讲了一个ContextMenuStrip空间 右键快捷菜单<br/>和菜单控件差不多<br/><br/>有点难度 需要吸收吸收<br/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.richiebox.com/bdqn/csharp/182.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>第六章 用ADO.NET链接数据库</title>
		<link>http://www.richiebox.com/bdqn/csharp/181.html</link>
		<comments>http://www.richiebox.com/bdqn/csharp/181.html#comments</comments>
		<pubDate>Thu, 05 Jun 2008 15:11:55 +0000</pubDate>
		<dc:creator>richie</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[北大青鸟]]></category>
		<category><![CDATA[学习]]></category>
		<category><![CDATA[程序]]></category>

		<guid isPermaLink="false">http://www.richiebox.com?p=181</guid>
		<description><![CDATA[这章主要讲了2个对象Connection对象Command对象我们主要是讲解的链使用sqlserver数据库所以要使用ado必须先导入命名空间using System.Data.SqlClient;创建Connection对象string 链接字符串名 =&#8221;Data Source=服务器名;Initial Catalog=数据库名;User ID=用户名;Pwd=密码&#8221;SqlConnection 对象名 =new SqlConnection(链接字符串);//也可以先创建对象 SqlConnection 对象名;再利用 对象名.ConnectionString=&#8221;";来设定链接字符串打开与数据库的链接使用Connection.Open();方法关闭与数据库的链接Connection.Close();方法异常处理讲了try catch finally结构try{可能出现异常的代码；}catch{出现异常后的解决；}finally{每次都执行的代码；}使用Command对象Command对象 主要是用来 操作数据库的 再连接后 我们来对数据进行 增删改查来处理创建Command对象SqlCommand 对象名 =new SqlCommand(&#8220;Sql语句&#8221;,Connection对象);执行Sql语句只讲了一个ExecuteScalar 返回单个值 需进行类型转换 如（count(*)）对数据库进行操作的步骤1.创建数据库链接 也就是创建一个connection对象2.定义一个执行的Sql语句3.创建Command对象4.执行Sql语句
]]></description>
			<content:encoded><![CDATA[<p>这章主要讲了2个对象<br/>Connection对象<br/>Command对象<br/><br/>我们主要是讲解的链使用sqlserver数据库<br/>所以要使用ado必须先导入命名空间<br/>using System.Data.SqlClient;<br/><br/>创建Connection对象<br/>string 链接字符串名 =&#8221;Data Source=服务器名;Initial Catalog=数据库名;User ID=用户名;Pwd=密码&#8221;<br/>SqlConnection 对象名 =new SqlConnection(链接字符串);<br/>//也可以先创建对象 SqlConnection 对象名;再利用 对象名.ConnectionString=&#8221;";来设定链接字符串<br/><br/>打开与数据库的链接<br/>使用<br/>Connection.Open();方法<br/><br/>关闭与数据库的链接<br/>Connection.Close();方法<br/><br/>异常处理<br/>讲了try catch finally结构<br/>try<br/>{<br/>可能出现异常的代码；<br/>}<br/>catch<br/>{<br/>出现异常后的解决；<br/>}<br/>finally<br/>{<br/>每次都执行的代码；<br/>}<br/><br/>使用Command对象<br/><br/>Command对象 主要是用来 操作数据库的 再连接后 我们来对数据进行 增删改查来处理<br/>创建Command对象<br/>SqlCommand 对象名 =new SqlCommand(&#8220;Sql语句&#8221;,Connection对象);<br/>执行Sql语句<br/>只讲了一个<br/>ExecuteScalar 返回单个值 需进行类型转换 如（count(*)）<br/><br/>对数据库进行操作的步骤<br/>1.创建数据库链接 也就是创建一个connection对象<br/>2.定义一个执行的Sql语句<br/>3.创建Command对象<br/>4.执行Sql语句<br/><br/><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.richiebox.com/bdqn/csharp/181.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

