ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>国产综合在线观看,日本久久一区二区,日韩美女免费线视频http://www.aygfsteel.com/zhukuanglong/矿矿 的编½E‹ç”Ÿ‹z?/description>zh-cnTue, 17 Jun 2025 20:16:02 GMTTue, 17 Jun 2025 20:16:02 GMT60巧用ps提高求职成功率[转]http://www.aygfsteel.com/zhukuanglong/archive/2008/11/21/241891.html矿矿矿矿Fri, 21 Nov 2008 12:01:00 GMThttp://www.aygfsteel.com/zhukuanglong/archive/2008/11/21/241891.htmlhttp://www.aygfsteel.com/zhukuanglong/comments/241891.htmlhttp://www.aygfsteel.com/zhukuanglong/archive/2008/11/21/241891.html#Feedback1http://www.aygfsteel.com/zhukuanglong/comments/commentRss/241891.htmlhttp://www.aygfsteel.com/zhukuanglong/services/trackbacks/241891.html

  åœ?#8220;补充说明”ä¸­å¡«å†™çš„æœ€ä½³ä¿¡æ¯å› äºø™€Œå¼‚åQŒè¿™å–决于求职者的职业目标和背景。请è®îC½åQŒæ±‚职简历是自我营销的手ŒDµï¼Œå…¶ä¸­çš„信息应当有助于向用人单位推销自己åQŒä»¥å®žçŽ°è‡ªå·±çš„èŒä¸šç›®æ ‡ã€‚å¯ä»¥è¿™æ ¯‚€ƒè™‘问题åQšå¦‚果这是向潜在的用人单位推销自己的最会机会,你会说些什么?

  以下是一些填å†?#8220;补充说明”的思èµ\åQŒä¾›å¤§å®¶å‚考:

  能力或业¾l©æ€È»“

  在补充说明对自己的能力和职业生æ„Ó˜q›è¡Œæ€È»“。在能力或业¾l©æ€È»“中要½Hå‡ºè‡ªå·±ä¸»è¦çš?#8220;卖点”和成功案例——这一切都应当与你惌™¦åº”聘的职位有关系ã€?

  获奖情况

  用列举自å·Þqš„èŽ·å¥–æƒ…å†µä½œäØ“æ±‚èŒ½Ž€åŽ†çš„¾l“束åQŒä¼š¾l™ç”¨äººå•位留下深åˆÕd°è±¡ã€?

  证明书或推荐�/strong>

  你是否收到过对于你的工作情况表示满意的推荐信或业¾l©è¯„估证明?如果有,可以摘选其中的¾_ùN‡‡éƒ¨åˆ†ä½œäØ““补充说明”ã€?

  发表作品

  如果在报刊、杂志上发表˜q‡ä½œå“ï¼Œå¯ä»¥è€ƒè™‘åœ?#8220;补充说明”里罗列出来ã€?

  专利

  如果拥有专利åQˆåŒ…括正在申è¯ïLš„åQ‰ï¼Œè¯·åœ¨“补充说明”中列出ã€?

  演讲能力

  许多职位要有演讲能力才能胜ä“Q。列举自己参加过的演讌Ӏä¸»é¢˜å‘­a€ä¼šç»™ç”¨äh单位留下好印象ã€?

ã€€ã€€è®¡ç®—æœø™¿ç”¨æŠ€èƒ?/strong>

  åœ?#8220;补充说明”中列举自己在计算机操作系¾lŸã€ç½‘¾lœå’Œ¼‹¬äšg½{‰æ–¹é¢çš„æŠ€èƒ½ï¼Œå¤šå¤šç›Šå–„ã€?

  培训情况

  åœ?#8220;补充说明”ä¸­åˆ—å‡ø™‡ªå·±å‚加过的专ä¸?span>培训和ç‘ô¾l­æ•™è‚ŒÓ€?

ã€€ã€€å†æ¬¡å¼ø™°ƒå·¥ä½œåœ°ç‚¹

  åœ?#8220;补充说明”中再‹Æ¡å¼ºè°ƒå·¥ä½œåœ°ç‚¹ä¸å¤×ƒØ“¾l“束求职½Ž€åŽ†çš„å¥½åŠžæ³•ã€?

  说明自己愿意出差

  如果愿意出差åQŒå¯ä»¥åœ¨è¡¥å……说明中加以说明,用ähå•ä½æˆ–è®¸ä¼šå› ä¸ø™¿™ä¸€ç‚¹è€Œçœ‹ä¸Šä½ ã€?

  应该省略的内�/strong>

  补充说明不要涉及婚姻状况、年龄、有多少个孩子等情况åQŒå¦‚果兴­‘£çˆ±å¥½ä¸Žå·¥ä½œæ— å…³åQŒæœ€å¥½ä¹Ÿä¸è¦æåŠã€?br />
 æ¥æº:中华英才¾|?/a> 

]]>
正则表达式元字符列表http://www.aygfsteel.com/zhukuanglong/archive/2008/11/21/241888.html矿矿矿矿Fri, 21 Nov 2008 11:35:00 GMThttp://www.aygfsteel.com/zhukuanglong/archive/2008/11/21/241888.htmlhttp://www.aygfsteel.com/zhukuanglong/comments/241888.htmlhttp://www.aygfsteel.com/zhukuanglong/archive/2008/11/21/241888.html#Feedback0http://www.aygfsteel.com/zhukuanglong/comments/commentRss/241888.htmlhttp://www.aygfsteel.com/zhukuanglong/services/trackbacks/241888.html

下表是元字符及其在正则表辑ּä¸Šä¸‹æ–‡ä¸­çš„行为的一个完整列表:

字符 æè¿°
ž®†ä¸‹ä¸€ä¸ªå­—½W¦æ ‡è®îCؓ一个特ŒDŠå­—½W¦ã€æˆ–一个原义字½W¦ã€æˆ–一个后向引用、或一个八˜q›åˆ¶è½¬ä¹‰½W¦ã€‚例如,'n' åŒšw…å­—符 "n"ã€?\n' åŒšw…ä¸€ä¸ªæ¢è¡Œç¬¦ã€‚序åˆ?nbsp;'\' åŒšw… "" è€?nbsp;"\(" åˆ™åŒ¹é…?nbsp;"("ã€?/font>
^
匚w…è¾“入字符串的开始位¾|®ã€‚如果设¾|®äº† RegExp å¯¹è±¡çš?nbsp;Multiline å±žæ€§ï¼Œ^ ä¹ŸåŒ¹é…?nbsp;'\n' æˆ?nbsp;'\r' ä¹‹åŽçš„位¾|®ã€?/font>
$
匚w…è¾“入字符串的¾l“束位置。如果设¾|®äº†RegExp å¯¹è±¡çš?nbsp;Multiline å±žæ€§ï¼Œ$ ä¹ŸåŒ¹é…?nbsp;'\n' æˆ?nbsp;'\r' ä¹‹å‰çš„位¾|®ã€?/font>
*
匚w…å‰é¢çš„子表达式零‹Æ¡æˆ–多次。例如,zo* èƒ½åŒ¹é…?nbsp;"z" ä»¥åŠ "zoo"ã€?nbsp;* ½{‰ä­h于{0,}。[/size]
+
匚w…å‰é¢çš„子表达式一‹Æ¡æˆ–多次。例如,'zo+' èƒ½åŒ¹é…?nbsp;"zo" ä»¥åŠ "zoo"åQŒä½†ä¸èƒ½åŒšw… "z"ã€? ½{‰ä­häº?nbsp;{1,}ã€?/font>
?
匚w…å‰é¢çš„子表达式零‹Æ¡æˆ–一‹Æ¡ã€‚例如,"do(es)?" å¯ä»¥åŒšw… "do" æˆ?nbsp;"does" ä¸­çš„"do" ã€? ½{‰ä­häº?nbsp;{0,1}ã€?/font>
{n}
是一个非负整数。匹配确定的 n ‹Æ¡ã€‚例如,'o{2}' ä¸èƒ½åŒšw… "Bob" ä¸­çš„ 'o'åQŒä½†æ˜¯èƒ½åŒšw… "food" ä¸­çš„两个 oã€?/font>
{n,}
是一个非负整数。至ž®‘匹配n ‹Æ¡ã€‚例如,'o{2,}' ä¸èƒ½åŒšw… "Bob" ä¸­çš„ 'o'åQŒä½†èƒ½åŒ¹é…?nbsp;"foooood" ä¸­çš„æ‰€æœ?nbsp;oã€?o{1,}' ½{‰ä­häº?nbsp;'o+'ã€?o{0,}' åˆ™ç­‰ä»·äºŽ 'o*'ã€?/font>
{n,m}
å’?nbsp;n å‡äؓ非负整数åQŒå…¶ä¸­n <= m。最ž®‘匹é…?nbsp;n ‹Æ¡ä¸”最多匹é…?nbsp;m ‹Æ¡ã€‚刘åQ?nbsp;"o{1,3}" ž®†åŒ¹é…?nbsp;"fooooood" ä¸­çš„前三ä¸?nbsp;oã€?o{0,1}' ½{‰ä­häº?nbsp;'o?'。请注意在逗号和两个数之间不能有空根{€?/font>
?
当该字符紧跟在ä“Q何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) åŽé¢æ—Óž¼ŒåŒšw…æ¨¡å¼æ˜¯éžè´ªå©ªçš„。非贪婪模式ž®½å¯èƒ½å°‘的匹配所搜烦的字½W¦ä¸²åQŒè€Œé»˜è®¤çš„贪婪模式则尽可能多的匚w…æ‰€æœçƒ¦çš„å­—½W¦ä¸²ã€‚例如,对于字符ä¸?nbsp;"oooo"åQ?o+?' ž®†åŒ¹é…å•ä¸?nbsp;"o"åQŒè€?nbsp;'o+' ž®†åŒ¹é…æ‰€æœ?nbsp;'o'ã€?/font>
.
匚w…é™?nbsp;"\n" ä¹‹å¤–çš„ä“Q何单个字½W¦ã€‚要匚w…åŒ…括 '\n' åœ¨å†…çš„ä“Q何字½W¦ï¼Œè¯·ä‹É用象 '[.\n]' çš„æ¨¡å¼ã€?/font>
(pattern)
匚w…pattern òq¶èŽ·å–è¿™ä¸€åŒšw…ã€‚所获取的匹配可以从产生çš?nbsp;Matches é›†åˆå¾—到åQŒåœ¨VBScript ä¸­ä‹Éç”?nbsp;SubMatches é›†åˆåQŒåœ¨JScript ä¸­åˆ™ä½¿ç”¨ {CONTENT}… å±žæ€§ã€‚要匚w…åœ†æ‹¬å·å­—½W¦ï¼Œè¯·ä‹Éç”?nbsp;'\(' æˆ?nbsp;'\)'ã€?/font>
(?:pattern)
匚w… pattern ä½†ä¸èŽ·å–åŒšw…¾l“æžœåQŒä¹Ÿž®±æ˜¯è¯´è¿™æ˜¯ä¸€ä¸ªéžèŽ·å–åŒšw…åQŒä¸˜q›è¡Œå­˜å‚¨ä¾›ä»¥åŽä‹É用。这在ä‹Éç”?nbsp;"æˆ? å­—符 (|) æ¥ç»„合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) ž®±æ˜¯ä¸€ä¸ªæ¯” 'industry|industries' æ›´ç®€ç•¥çš„表达式ã€?/font>
(?=pattern)
正向预查åQŒåœ¨ä»ÖM½•匚w… pattern çš„å­—½W¦ä¸²å¼€å§‹å¤„匚w…æŸ¥æ‰¾å­—符丌Ӏ‚这是一个非获取匚w…åQŒä¹Ÿž®±æ˜¯è¯ß_¼Œè¯¥åŒ¹é…ä¸éœ€è¦èŽ·å–ä¾›ä»¥åŽä½¿ç”¨ã€‚ä¾‹å¦‚ï¼Œ 'Windows (?=95|98|NT|2000)' èƒ½åŒ¹é…?nbsp;"Windows 2000" ä¸­çš„ "Windows" åQŒä½†ä¸èƒ½åŒšw… "Windows 3.1" ä¸­çš„ "Windows"。预查不消耗字½W¦ï¼Œä¹Ÿå°±æ˜¯è¯´åQŒåœ¨ä¸€ä¸ªåŒ¹é…å‘生后åQŒåœ¨æœ€åŽä¸€‹Æ¡åŒ¹é…ä¹‹åŽç«‹å›_¼€å§‹ä¸‹ä¸€‹Æ¡åŒ¹é…çš„æœçƒ¦åQŒè€Œä¸æ˜¯ä»ŽåŒ…含预查的字½W¦ä¹‹åŽå¼€å§‹ã€?/font>
(?!pattern)
负向预查åQŒåœ¨ä»ÖM½•不匹配Negative lookahead matches the search string at any point where a string not matching pattern çš„å­—½W¦ä¸²å¼€å§‹å¤„匚w…æŸ¥æ‰¾å­—符丌Ӏ‚这是一个非获取匚w…åQŒä¹Ÿž®±æ˜¯è¯ß_¼Œè¯¥åŒ¹é…ä¸éœ€è¦èŽ·å–ä¾›ä»¥åŽä½¿ç”¨ã€‚ä¾‹å¦?Windows (?!95|98|NT|2000)' èƒ½åŒ¹é…?nbsp;"Windows 3.1" ä¸­çš„ "Windows"åQŒä½†ä¸èƒ½åŒšw… "Windows 2000" ä¸­çš„ "Windows"。预查不消耗字½W¦ï¼Œä¹Ÿå°±æ˜¯è¯´åQŒåœ¨ä¸€ä¸ªåŒ¹é…å‘生后åQŒåœ¨æœ€åŽä¸€‹Æ¡åŒ¹é…ä¹‹åŽç«‹å›_¼€å§‹ä¸‹ä¸€‹Æ¡åŒ¹é…çš„æœçƒ¦åQŒè€Œä¸æ˜¯ä»ŽåŒ…含预查的字½W¦ä¹‹åŽå¼€å§?/font>
x|y
匚w… x æˆ?nbsp;y。例如,'z|food' èƒ½åŒ¹é…?nbsp;"z" æˆ?nbsp;"food"ã€?(z|f)ood' åˆ™åŒ¹é…?nbsp;"zood" æˆ?nbsp;"food"ã€?/font>
[xyz]
字符集合。匹配所包含的ä“Q意一个字½W¦ã€‚例如, '[abc]' å¯ä»¥åŒšw… "plain" ä¸­çš„ 'a'ã€?/font>
[^xyz]
负值字½W¦é›†åˆã€‚匹配未包含的ä“Q意字½W¦ã€‚例如, '[^abc]' å¯ä»¥åŒšw… "plain" ä¸­çš„'p'ã€?/font>
[a-z]
字符范围。匹配指定范围内的ä“Q意字½W¦ã€‚例如,'[a-z]' å¯ä»¥åŒšw… 'a' åˆ?nbsp;'z' èŒƒå›´å†…çš„ä»ÀL„ž®å†™å­—母字符ã€?/font>
[^a-z]
负值字½W¦èŒƒå›´ã€‚匹配ä“Q何不在指定范围内的ä“Q意字½W¦ã€‚例如,'[^a-z]' å¯ä»¥åŒšw…ä»ÖM½•不在 'a' åˆ?nbsp;'z' èŒƒå›´å†…çš„ä»ÀL„å­—符ã€?/font>
\b
匚w…ä¸€ä¸ªå•词边界,也就是指单词和空格间的位¾|®ã€‚例如, 'er\b' å¯ä»¥åŒšw…"never" ä¸­çš„ 'er'åQŒä½†ä¸èƒ½åŒšw… "verb" ä¸­çš„ 'er'ã€?/font>
\B
匚w…éžå•词边界ã€?er\B' èƒ½åŒ¹é…?nbsp;"verb" ä¸­çš„ 'er'åQŒä½†ä¸èƒ½åŒšw… "never" ä¸­çš„ 'er'ã€?/font>
\cx
匚w…ç”±x指明的控制字½W¦ã€‚例如, \cM åŒšw…ä¸€ä¸?nbsp;Control-M æˆ–回车符ã€?nbsp;x çš„值必™åÖMØ“ A-Z æˆ?nbsp;a-z ä¹‹ä¸€ã€‚否则,ž®?nbsp;c è§†äؓ一个原义的 'c' å­—符ã€?/font>
\d
匚w…ä¸€ä¸ªæ•°å­—å­—½W¦ã€‚等价于 [0-9]ã€?/font>
\D
匚w…ä¸€ä¸ªéžæ•°å­—字符。等价于 [^0-9]ã€?/font>
\f
匚w…ä¸€ä¸ªæ¢™å늬¦ã€‚等价于 \x0c å’?nbsp;\cLã€?/font>
\n
匚w…ä¸€ä¸ªæ¢è¡Œç¬¦ã€‚等价于 \x0a å’?nbsp;\cJã€?/font>
\r
匚w…ä¸€ä¸ªå›žè½¦ç¬¦ã€‚等价于 \x0d å’?nbsp;\cMã€?/font>
\s
匚w…ä»ÖM½•½Iºç™½å­—符åQŒåŒ…括空根{€åˆ¶è¡¨ç¬¦ã€æ¢™å늬¦½{‰ç­‰ã€‚等价于 [ \f\n\r\t\v]ã€?/font>
\S
匚w…ä»ÖM½•非空白字½W¦ã€‚等价于 [^ \f\n\r\t\v]ã€?/font>
\t
匚w…ä¸€ä¸ªåˆ¶è¡¨ç¬¦ã€‚等价于 \x09 å’?nbsp;\cIã€?/font>
\v
匚w…ä¸€ä¸ªåž‚直制表符。等价于 \x0b å’?nbsp;\cKã€?/font>
\w
匚w…åŒ…括下划¾U¿çš„ä»ÖM½•单词字符。等价于'[A-Za-z0-9_]'ã€?/font>
\W
匚w…ä»ÖM½•非单词字½W¦ã€‚等价于 '[^A-Za-z0-9_]'ã€?/font>
\xn
匚w… nåQŒå…¶ä¸?nbsp;n ä¸ºåå…­è¿›åˆ¶è{义倹{€‚十六进制è{义值必™åÖMØ“¼‹®å®šçš„两个数字长。例如, '\x41' åŒšw… "A"ã€?\x041' åˆ™ç­‰ä»·äºŽ '\x04' & "1"。正则表辑ּä¸­å¯ä»¥ä‹Éç”?nbsp;ASCII ¾~–码ã€?
\num
匚w… numåQŒå…¶ä¸?nbsp;num æ˜¯ä¸€ä¸ªæ­£æ•´æ•°ã€‚对所获取的匹配的引用。例如,'(.)' åŒšw…ä¸¤ä¸ª˜qžç®‹çš„相同字½W¦ã€?/font>
\n
标识一个八˜q›åˆ¶è½¬ä¹‰å€¼æˆ–一个后向引用。如æž?nbsp;\n ä¹‹å‰è‡›_°‘ n ä¸ªèŽ·å–çš„å­è¡¨è¾‘Ö¼åQŒåˆ™ n ä¸ºåŽå‘引用。否则,如果 n ä¸ºå…«˜q›åˆ¶æ•°å­— (0-7)åQŒåˆ™ n ä¸ÞZ¸€ä¸ªå…«˜q›åˆ¶è½¬ä¹‰å€¹{€?/font>
\nm
标识一个八˜q›åˆ¶è½¬ä¹‰å€¼æˆ–一个后向引用。如æž?nbsp;\nm ä¹‹å‰è‡›_°‘有is preceded by at least nm ä¸ªèŽ·å–å¾—å­è¡¨è¾‘Ö¼åQŒåˆ™ nm ä¸ºåŽå‘引用。如æž?nbsp;\nm ä¹‹å‰è‡›_°‘æœ?nbsp;n ä¸ªèŽ·å–ï¼Œåˆ?nbsp;n ä¸ÞZ¸€ä¸ªåŽè·Ÿæ–‡å­?nbsp;m çš„后向引用。如果前面的条äšg都不满èƒöåQŒè‹¥ n å’?nbsp;m å‡äؓ八进制数å­?nbsp;(0-7)åQŒåˆ™ \nm ž®†åŒ¹é…å…«˜q›åˆ¶è½¬ä¹‰å€?nbsp;nmã€?/font>
\nml
如果 n ä¸ºå…«˜q›åˆ¶æ•°å­— (0-3)åQŒä¸” m å’?nbsp;l å‡äؓ八进制数å­?nbsp;(0-7)åQŒåˆ™åŒšw…å…«è¿›åˆ¶è{义å€?nbsp;nmlã€?/font>
\un
匚w… nåQŒå…¶ä¸?nbsp;n æ˜¯ä¸€ä¸ªç”¨å››ä¸ªåå…­˜q›åˆ¶æ•°å­—表示çš?nbsp;Unicode å­—符。例如,\u00A9 åŒšw…ç‰ˆæƒ½W¦å· (?)ã€?/font>



]]>
常用正则表达å¼?/title><link>http://www.aygfsteel.com/zhukuanglong/archive/2008/11/21/241814.html</link><dc:creator>矿矿</dc:creator><author>矿矿</author><pubDate>Fri, 21 Nov 2008 02:58:00 GMT</pubDate><guid>http://www.aygfsteel.com/zhukuanglong/archive/2008/11/21/241814.html</guid><wfw:comment>http://www.aygfsteel.com/zhukuanglong/comments/241814.html</wfw:comment><comments>http://www.aygfsteel.com/zhukuanglong/archive/2008/11/21/241814.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.aygfsteel.com/zhukuanglong/comments/commentRss/241814.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/zhukuanglong/services/trackbacks/241814.html</trackback:ping><description><![CDATA[<div id="wmqeeuq" class="Section0" style="layout-grid: 15.6pt none"> <p class="p0" style="margin-top: 0pt; background: rgb(255,255,255); margin-bottom: 7.5pt; line-height: 150%"><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">匚w…ä¸­æ–‡å­—符的正则表辑ּåQ?nbsp;[u4e00-u9fa5]</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">评注åQšåŒ¹é…ä¸­æ–‡è¿˜çœŸæ˜¯ä¸ªå¤´ç–¼çš„事,有了˜q™ä¸ªè¡¨è¾¾å¼å°±å¥½åŠžäº?/font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class="p0" style="margin-top: 5pt; background: rgb(255,255,255); margin-bottom: 5pt; line-height: 150%"><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">匚w…åŒå­—节字½W?包括汉字在内)åQš[^x00-xff]</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">评注åQšå¯ä»¥ç”¨æ¥è®¡½Ž—å­—½W¦ä¸²çš„长度(一个双字节字符长度è®?åQŒASCII字符è®?åQ?/font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class="p0" style="margin-top: 5pt; background: rgb(255,255,255); margin-bottom: 5pt; line-height: 150%"><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">匚w…½Iºç™½è¡Œçš„æ­£åˆ™è¡¨è¾¾å¼ï¼šns*r</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">评注åQšå¯ä»¥ç”¨æ¥åˆ é™¤ç©ºç™½è¡Œ</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class="p0" style="margin-top: 5pt; background: rgb(255,255,255); margin-bottom: 5pt; line-height: 150%"><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">匚w…HTML标记的正则表辑ּåQ?lt;(S*?)[^>]*>.*?|<.*? /></font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">评注åQšç½‘上流传的版本太糟¾p•,上面˜q™ä¸ªä¹Ÿä»…仅能匚w…éƒ¨åˆ†åQŒå¯¹äºŽå¤æ‚的嵌套标记依旧无能为力</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class="p0" style="margin-top: 5pt; background: rgb(255,255,255); margin-bottom: 5pt; line-height: 150%"><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">匚w…é¦–å°¾½Iºç™½å­—符的正则表辑ּåQš^s*|s*$</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">评注åQšå¯ä»¥ç”¨æ¥åˆ é™¤è¡Œé¦–行ž®„¡š„½Iºç™½å­—符(包括½Iºæ ¼ã€åˆ¶è¡¨ç¬¦ã€æ¢™å늬¦½{‰ç­‰)åQŒéžå¸¸æœ‰ç”¨çš„表达å¼?/font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class="p0" style="margin-top: 5pt; background: rgb(255,255,255); margin-bottom: 5pt; line-height: 150%"><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">匚w…Email地址的正则表辑ּåQšw+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">评注åQšè¡¨å•验证时很实ç”?/font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class="p0" style="margin-top: 5pt; background: rgb(255,255,255); margin-bottom: 5pt; line-height: 150%"><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">匚w…¾|‘址URL的正则表辑ּåQš[a-zA-z]+://[^s]*</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">评注åQšç½‘上流传的版本功能很有限,上面˜q™ä¸ªåŸºæœ¬å¯ä»¥æ»¡èƒö需æ±?/font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class="p0" style="margin-top: 5pt; background: rgb(255,255,255); margin-bottom: 5pt; line-height: 150%"><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">匚w…å¸å·æ˜¯å¦åˆæ³•(字母开å¤ß_¼Œå…è®¸5-16字节åQŒå…è®¸å­—母数字下划线)åQš^[a-zA-Z][a-zA-Z0-9_]{4,15}$</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">评注åQšè¡¨å•验证时很实ç”?/font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class="p0" style="margin-top: 5pt; background: rgb(255,255,255); margin-bottom: 5pt; line-height: 150%"><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">匚w…å›½å†…电话åïL åQšd{3}-d{8}|d{4}-d{7}</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">评注åQšåŒ¹é…åŞ式如 0511-4405222 æˆ?nbsp;021-87888822</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class="p0" style="margin-top: 5pt; background: rgb(255,255,255); margin-bottom: 5pt; line-height: 150%"><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">匚w…è…¾è®¯QQåøP¼š[1-9][0-9]{4,}</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">评注åQšè…¾è®¯QQ号从10000å¼€å§?/font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class="p0" style="margin-top: 5pt; background: rgb(255,255,255); margin-bottom: 5pt; line-height: 150%"><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">匚w…ä¸­å›½é‚®æ”¿¾~–码åQš[1-9]d{5}(?!d)</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">评注åQšä¸­å›½é‚®æ”¿ç¼–ç äØ“6位数å­?/font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class="p0" style="margin-top: 5pt; background: rgb(255,255,255); margin-bottom: 5pt; line-height: 150%"><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">匚w…íw«ä†¾è¯ï¼šd{15}|d{18}</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">评注åQšä¸­å›½çš„íw«ä†¾è¯äØ“15位或18ä½?/font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class="p0" style="margin-top: 5pt; background: rgb(255,255,255); margin-bottom: 5pt; line-height: 150%"><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">匚w…ip地址åQšd+.d+.d+.d+</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">评注åQšæå–ip地址时有ç”?/font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class="p0" style="margin-top: 5pt; background: rgb(255,255,255); margin-bottom: 5pt; line-height: 150%"><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">匚w…ç‰¹å®šæ•°å­—åQ?/font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">^[1-9]d*$<font face="宋体">  ã€€ //匚w…æ­£æ•´æ•?/font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">^-[1-9]d*$ <font face="宋体">  //匚w…è´Ÿæ•´æ•?/font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">^-?[1-9]d*$<font face="宋体">   //匚w…æ•´æ•°</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">^[1-9]d*|0$<font face="宋体">  //匚w…éžè´Ÿæ•´æ•°åQˆæ­£æ•´æ•° + 0åQ?/font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">^-[1-9]d*|0$<font face="宋体">   //匚w…éžæ­£æ•´æ•°åQˆè´Ÿæ•´æ•° + 0åQ?/font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">^[1-9]d*.d*|0.d*[1-9]d*$<font face="宋体">   //匚w…æ­£æÕQç‚ÒŽ•°</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">^-([1-9]d*.d*|0.d*[1-9]d*)$<font face="宋体">  //匚w…è´ŸæÕQç‚ÒŽ•°</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$<font face="宋体">  //匚w…‹¹®ç‚¹æ•?/font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$<font face="宋体">   //匚w…éžè´Ÿ‹¹®ç‚¹æ•ŽÍ¼ˆæ­£æÕQç‚ÒŽ•° + 0åQ?/font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$<font face="宋体">  //匚w…éžæ­£‹¹®ç‚¹æ•ŽÍ¼ˆè´ŸæÕQç‚ÒŽ•° + 0åQ?/font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">评注åQšå¤„理大量数据时有用åQŒå…·ä½“应用时注意修正</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class="p0" style="margin-top: 5pt; background: rgb(255,255,255); margin-bottom: 5pt; line-height: 150%"><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">匚w…ç‰¹å®šå­—符ä¸ÔŒ¼š</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">^[A-Za-z]+$<font face="宋体">  //匚w…ç”?6个英文字母组成的字符ä¸?/font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">^[A-Z]+$<font face="宋体">  //匚w…ç”?6个英文字母的大写¾l„成的字½W¦ä¸²</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">^[a-z]+$<font face="宋体">  //匚w…ç”?6个英文字母的ž®å†™¾l„成的字½W¦ä¸²</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">^[A-Za-z0-9]+$<font face="宋体">  //匚w…ç”±æ•°å­—å’Œ26个英文字母组成的字符ä¸?/font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">^w+$<font face="宋体">  //匚w…ç”±æ•°å­—ã€?6个英文字母或者下划线¾l„成的字½W¦ä¸²</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class="p0" style="margin-top: 5pt; background: rgb(255,255,255); margin-bottom: 5pt; line-height: 150%"><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">在ä‹É用RegularExpressionValidator验证控äšg时的验证功能及其验证表达式介¾lå¦‚ä¸?</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class="p0" style="margin-top: 5pt; background: rgb(255,255,255); margin-bottom: 5pt; line-height: 150%"><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">只能输入数字åQ?#8220;^[0-9]*$”</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">只能输入n位的数字åQ?#8220;^d{n}$”</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">只能输入臛_°‘n位数字:“^d{n,}$”</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">只能输入m-n位的数字åQ?#8220;^d{m,n}$”</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">只能输入零和非零开头的数字åQ?#8220;^(0|[1-9][0-9]*)$”</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">只能输入有两位小数的正实敎ͼš“^[0-9]+(.[0-9]{2})?$”</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">只能输入æœ?-3位小数的正实敎ͼš“^[0-9]+(.[0-9]{1,3})?$”</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">只能输入非零的正整数åQ?#8220;^+?[1-9][0-9]*$”</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">只能输入非零的负整数åQ?#8220;^-[1-9][0-9]*$”</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">只能输入长度ä¸?的字½W¦ï¼š“^.{3}$”</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">只能输入ç”?6个英文字母组成的字符ä¸ÔŒ¼š“^[A-Za-z]+$”</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">只能输入ç”?6个大写英文字母组成的字符ä¸ÔŒ¼š“^[A-Z]+$”</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">只能输入ç”?6个小写英文字母组成的字符ä¸ÔŒ¼š“^[a-z]+$”</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">只能输入由数字和26个英文字母组成的字符ä¸ÔŒ¼š“^[A-Za-z0-9]+$”</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">只能输入由数字ã€?6个英文字母或者下划线¾l„成的字½W¦ä¸²åQ?#8220;^w+$”</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">验证用户密码:“^[a-zA-Z]w{5,17}$”正确格式为:以字母开å¤ß_¼Œé•¿åº¦åœ?-18之间åQ?/font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class="p0" style="margin-top: 5pt; background: rgb(255,255,255); margin-bottom: 5pt; line-height: 150%"><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">只能包含字符、数字和下划¾Uѝ€?/font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">验证是否含有^%&',;=?$"½{‰å­—½W¦ï¼š“[^%&',;=?$x22]+”</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">只能输入汉字åQ?#8220;^[u4e00-u9fa5],{0,}$”</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">验证Email地址åQ?#8220;^w+[-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$”</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">验证InternetURLåQ?#8220;^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$”</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">验证电话åïL åQ?#8220;^((d{3,4})|d{3,4}-)?d{7,8}$”</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class="p0" style="margin-top: 5pt; background: rgb(255,255,255); margin-bottom: 5pt; line-height: 150%"><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">正确格式为:“XXXX-XXXXXXX”åQ?#8220;XXXX-XXXXXXXX”åQ?#8220;XXX-XXXXXXX”åQ?/font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class="p0" style="margin-top: 5pt; background: rgb(255,255,255); margin-bottom: 5pt; line-height: 150%"><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">“XXX-XXXXXXXX”<font face="宋体">åQ?#8220;XXXXXXX”åQ?#8220;XXXXXXXX”ã€?/font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">验证íw«ä†¾è¯å·åQ?5位或18位数字)åQ?#8220;^d{15}|d{}18$”</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">验证一òq´çš„12个月åQ?#8220;^(0?[1-9]|1[0-2])$”正确格式为:“01”-“09”å’?#8220;1”“12”</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">验证一个月çš?1天:“^((0?[1-9])|((1|2)[0-9])|30|31)$”</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class="p0" style="margin-top: 5pt; background: rgb(255,255,255); margin-bottom: 5pt; line-height: 150%"><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">正确格式为:“01”“09”å’?#8220;1”“31”ã€?/font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class="p0" style="margin-top: 5pt; background: rgb(255,255,255); margin-bottom: 5pt; line-height: 150%"><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">匚w…ä¸­æ–‡å­—符的正则表辑ּåQ?nbsp;[u4e00-u9fa5]</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">匚w…åŒå­—节字½W?包括汉字在内)åQš[^x00-xff]</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">匚w…½Iø™¡Œçš„æ­£åˆ™è¡¨è¾‘Ö¼åQšn[s| ]*r</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">匚w…HTML标记的正则表辑ּåQ?<(.*)>.*</1>|<(.*) />/</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">匚w…é¦–å°¾½Iºæ ¼çš„æ­£åˆ™è¡¨è¾‘Ö¼åQ?^s*)|(s*$)</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">匚w…Email地址的正则表辑ּåQšw+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">匚w…¾|‘址URL的正则表辑ּåQ?/font></span><span><a href="http://([w-]+.)+[w-]+(/[w"><span style="font-size: 8pt; background: rgb(255,255,255); color: rgb(51,102,153); font-family: 'Verdana'; mso-spacerun: 'yes'">http://([w-]+.)+[w-]+(/[w</span></a></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">- ./?%&=]*)?</span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class="p0" style="margin-top: 5pt; background: rgb(255,255,255); margin-bottom: 5pt; line-height: 150%"><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">(1)<font face="宋体">应用åQšè®¡½Ž—å­—½W¦ä¸²çš„长度(一个双字节字符长度è®?åQŒASCII字符è®?åQ?/font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">String.prototype.len=function(){return this.replace([^x00-xff]/g,"aa").length;}</span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class="p0" style="margin-top: 5pt; background: rgb(255,255,255); margin-bottom: 5pt; line-height: 150%"><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">(2)<font face="宋体">应用åQšjavascript中没有像vbscript那样的trim函数åQŒæˆ‘们就可以利用˜q™ä¸ªè¡¨è¾¾å¼æ¥å®žçް</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">String.prototype.trim = function()</span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">{</span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">return this.replace(/(^s*)|(s*$)/g, "");</span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">}</span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">(3)<font face="宋体">应用åQšåˆ©ç”¨æ­£åˆ™è¡¨è¾‘Ö¼åˆ†è§£å’Œè{换IP地址</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">function IP2V(ip) //IP<font face="宋体">地址转换成对应数å€?/font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">{</span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">re=/(d+).(d+).(d+).(d+)/g //<font face="宋体">匚w…IP地址的正则表辑ּ</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">if(re.test(ip))</span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">{</span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1</span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">}</span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">else</span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">{</span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">throw new Error("Not a valid IP address!")</span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">}</span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">}</span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">(4)<font face="宋体">应用åQšä»ŽURL地址中提取文件名的javascript½E‹åº</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">s="</span><span><a ><span style="font-size: 8pt; background: rgb(255,255,255); color: rgb(51,102,153); font-family: 'Verdana'; mso-spacerun: 'yes'">http://www.9499.net/page1.htm</span></a></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">";</span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">s=s.replace(/(.*/){0,}([^.]+).*/ig,"$2") ; //Page1.htm</span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'">(5)<font face="宋体">应用åQšåˆ©ç”¨æ­£åˆ™è¡¨è¾‘Ö¼é™åˆ¶¾|‘页表单里的文本框输入内å®?/font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">用正则表辑ּé™åˆ¶åªèƒ½è¾“入中文åQšonkeyup="value=value.replace(/[^u4E00-u9FA5]/g,'') " onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^u4E00-u9FA5]/g,''))"</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">用正则表辑ּé™åˆ¶åªèƒ½è¾“入全角字符åQ?nbsp;onkeyup="value=value.replace(/[^uFF00-uFFFF]/g,'') " onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^uFF00-uFFFF]/g,''))"</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">用正则表辑ּé™åˆ¶åªèƒ½è¾“入数字åQšonkeyup="value=value.replace(/[^d]/g,'') "onbeforepaste= "clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''))"</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><br /> </span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><font face="宋体">用正则表辑ּé™åˆ¶åªèƒ½è¾“入数字和英文:onkeyup="value=value.replace(/[W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''</font></span><span style="font-size: 8pt; background: rgb(255,255,255); font-family: 'Verdana'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p> </div> <!--endfragment--> <img src ="http://www.aygfsteel.com/zhukuanglong/aggbug/241814.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/zhukuanglong/" target="_blank">矿矿</a> 2008-11-21 10:58 <a href="http://www.aygfsteel.com/zhukuanglong/archive/2008/11/21/241814.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java调用SQL Server的存储过½E‹è¯¦è§£[转]http://www.aygfsteel.com/zhukuanglong/archive/2008/11/07/239337.html矿矿矿矿Fri, 07 Nov 2008 14:21:00 GMThttp://www.aygfsteel.com/zhukuanglong/archive/2008/11/07/239337.htmlhttp://www.aygfsteel.com/zhukuanglong/comments/239337.htmlhttp://www.aygfsteel.com/zhukuanglong/archive/2008/11/07/239337.html#Feedback0http://www.aygfsteel.com/zhukuanglong/comments/commentRss/239337.htmlhttp://www.aygfsteel.com/zhukuanglong/services/trackbacks/239337.html[转]自天极网

1使用不带参数的存储过½E?/strong>

  使用 JDBC 驱动½E‹åºè°ƒç”¨ä¸å¸¦å‚数的存储过½E‹æ—¶åQŒå¿…™åÖM‹Éç”?call SQL 转义序列。不带参数的 call 转义序列的语法如下所½Cºï¼š

  

以下是引用片ŒDµï¼š
{call procedure-name}

ã€€ã€€ä½œäØ“å®žä¾‹åQŒåœ¨ SQL Server 2005 AdventureWorks ½CÞZ¾‹æ•°æ®åº“中创徏以下存储˜q‡ç¨‹åQ?/p>

  

以下是引用片ŒDµï¼š
CREATE PROCEDURE GetContactFormalNames
  AS
  BEGIN
   SELECT TOP 10 Title + ' ' + FirstName + ' ' + LastName AS FormalName
   FROM Person.Contact
  END
此存储过½E‹è¿”回单个结果集åQŒå…¶ä¸­åŒ…含一列数æ?ç”?Person.Contact 表中前十个联¾pÖMh的称呹{€å¿U°å’Œå§“氏¾l„成)ã€?

  在下面的实例中,ž®†å‘此函æ•îC¼ é€?AdventureWorks ½CÞZ¾‹æ•°æ®åº“的打开˜qžæŽ¥åQŒç„¶åŽä‹Éç”?executeQuery æ–ÒŽ³•调用 GetContactFormalNames 存储˜q‡ç¨‹ã€?/p>

 

以下是引用片ŒDµï¼š
  public static void executeSprocNoParams(Connection con) ...{
   try ...{
   Statement stmt = con.createStatement();
  ResultSet rs = stmt.executeQuery("{call dbo.GetContactFormalNames}");
  
   while (rs.next()) ...{
 System.out.println(rs.getString("FormalName"));
  }
  rs.close();
  stmt.close();
  }
  catch (Exception e) ...{
  e.printStackTrace();
  }
  }

  2使用带有输入参数的存储过½E?/strong>

  使用 JDBC 驱动½E‹åºè°ƒç”¨å¸¦å‚数的存储˜q‡ç¨‹æ—Óž¼Œå¿…é¡»¾l“合 SQLServerConnection ¾cȝš„ prepareCall æ–ÒŽ³•使用 call SQL 转义序列。带æœ?IN 参数çš?call 转义序列的语法如下所½Cºï¼š

  

以下是引用片ŒDµï¼š
{call procedure-name[([parameter][,[parameter]]...)]}

  构é€?call 转义序列æ—Óž¼Œè¯·ä‹Éç”??(问号)字符来指å®?IN 参数。此字符充当要传递给该存储过½E‹çš„参数值的占位½W¦ã€‚可以ä‹Éç”?SQLServerPreparedStatement ¾cȝš„ setter æ–ÒŽ³•之一为参数指定倹{€‚可使用çš?setter æ–ÒŽ³•ç”?IN 参数的数据类型决定ã€?/p>

  å?setter æ–ÒŽ³•传递值时åQŒä¸ä»…需要指定要在参æ•îC¸­ä½¿ç”¨çš„实际å€û|¼Œ˜q˜å¿…™åÀLŒ‡å®šå‚数在存储˜q‡ç¨‹ä¸­çš„序数位置。例如,如果存储˜q‡ç¨‹åŒ…含单个 IN 参数åQŒåˆ™å…¶åºæ•°å€égØ“ 1。如果存储过½E‹åŒ…含两个参敎ͼŒåˆ™ç¬¬ä¸€ä¸ªåºæ•°å€égØ“ 1åQŒç¬¬äºŒä¸ªåºæ•°å€égØ“ 2ã€?/p>

ã€€ã€€ä½œäØ“å¦‚ä½•è°ƒç”¨åŒ…å« IN 参数的存储过½E‹çš„实例åQŒä‹Éç”?SQL Server 2005 AdventureWorks ½CÞZ¾‹æ•°æ®åº“中çš?uspGetEmployeeManagers 存储˜q‡ç¨‹ã€‚此存储˜q‡ç¨‹æŽ¥å—åäØ“ EmployeeID 的单个输入参æ•?它是一个整数å€?åQŒç„¶åŽåŸºäºŽæŒ‡å®šçš„ EmployeeID ˜q”回雇员及其¾lç†çš„递归列表。下面是调用此存储过½E‹çš„ Java 代码åQ?/p>

  

 

以下是引用片ŒDµï¼š
  public static void executeSprocInParams(Connection con) ...{
   try ...{
   PreparedStatement pstmt = con.prepareStatement("{call dbo.uspGetEmployeeManagers(?)}");
   pstmt.setInt(1, 50);
   ResultSet rs = pstmt.executeQuery();
   while (rs.next()) ...{
   System.out.println("EMPLOYEE:");
   System.out.println(rs.getString("LastName") + ", " + rs.getString("FirstName"));
   System.out.println("MANAGER:");
   System.out.println(rs.getString("ManagerLastName") + ", " + rs.getString("ManagerFirstName"));
   System.out.println();
   }
   rs.close();
   pstmt.close();
   }
   catch (Exception e) ...{
   e.printStackTrace();
   }
  }

  3使用带有输出参数的存储过½E?/strong>

  使用 JDBC 驱动½E‹åºè°ƒç”¨æ­¤ç±»å­˜å‚¨˜q‡ç¨‹æ—Óž¼Œå¿…é¡»¾l“合 SQLServerConnection ¾cȝš„ prepareCall æ–ÒŽ³•使用 call SQL 转义序列。带æœ?OUT 参数çš?call 转义序列的语法如下所½Cºï¼š

  

以下是引用片ŒDµï¼š
{call procedure-name[([parameter][,[parameter]]...)]}

  构é€?call 转义序列æ—Óž¼Œè¯·ä‹Éç”??(问号)字符来指å®?OUT 参数。此字符充当要从该存储过½E‹è¿”回的参数值的占位½W¦ã€‚要ä¸?OUT 参数指定å€û|¼Œå¿…须在运行存储过½E‹å‰ä½¿ç”¨ SQLServerCallableStatement ¾cȝš„ registerOutParameter æ–ÒŽ³•指定各参数的数据¾cÕdž‹ã€?/p>

  使用 registerOutParameter æ–ÒŽ³•ä¸?OUT 参数指定的值必™åÀL˜¯ java.sql.Types 所包含çš?JDBC 数据¾cÕdž‹ä¹‹ä¸€åQŒè€Œå®ƒåˆè¢«æ˜ å°„成本åœ?SQL Server 数据¾cÕdž‹ä¹‹ä¸€ã€‚有å…?JDBC å’?SQL Server 数据¾cÕdž‹çš„详¾l†ä¿¡æ¯ï¼Œè¯·å‚阅了è§?JDBC 驱动½E‹åºæ•°æ®¾cÕdž‹ã€?/p>

  当您对于 OUT 参数å?registerOutParameter æ–ÒŽ³•传递一个值时åQŒä¸ä»…å¿…™åÀLŒ‡å®šè¦ç”¨äºŽæ­¤å‚数的数据¾cÕdž‹åQŒè€Œä¸”必须在存储过½E‹ä¸­æŒ‡å®šæ­¤å‚数的序号位置或此参数的名¿U°ã€‚例如,如果存储˜q‡ç¨‹åŒ…含单个 OUT 参数åQŒåˆ™å…¶åºæ•°å€égØ“ 1;如果存储˜q‡ç¨‹åŒ…含两个参数åQŒåˆ™½W¬ä¸€ä¸ªåºæ•°å€égØ“ 1åQŒç¬¬äºŒä¸ªåºæ•°å€égØ“ 2ã€?/p>

ã€€ã€€ä½œäØ“å®žä¾‹åQŒåœ¨ SQL Server 2005 AdventureWorks ½CÞZ¾‹æ•°æ®åº“中创徏以下存储˜q‡ç¨‹åQ?æ ÒŽ®æŒ‡å®šçš„æ•´æ•?IN 参数 (employeeID)åQŒè¯¥å­˜å‚¨˜q‡ç¨‹ä¹Ÿè¿”回单个整æ•?OUT 参数 (managerID)。根æ?HumanResources.Employee 表中包含çš?EmployeeIDåQŒOUT 参数中返回的å€égØ“ ManagerIDã€?/p>

  在下面的实例中,ž®†å‘此函æ•îC¼ é€?AdventureWorks ½CÞZ¾‹æ•°æ®åº“的打开˜qžæŽ¥åQŒç„¶åŽä‹Éç”?execute æ–ÒŽ³•调用 GetImmediateManager 存储˜q‡ç¨‹åQ?/p>

 

以下是引用片ŒDµï¼š
  public static void executeStoredProcedure(Connection con) ...{
   try ...{
   CallableStatement cstmt = con.prepareCall("{call dbo.GetImmediateManager(?, ?)}");
   cstmt.setInt(1, 5);
   cstmt.registerOutParameter(2, java.sql.Types.INTEGER);
   cstmt.execute();
   System.out.println("MANAGER ID: " + cstmt.getInt(2));
   }
   catch (Exception e) ...{
   e.printStackTrace();
   }
  } 

本示例ä‹É用序号位¾|®æ¥æ ‡è¯†å‚数。或者,也可以ä‹É用参数的名称(而非其序号位¾|?来标识此参数。下面的代码½CÞZ¾‹ä¿®æ”¹äº†ä¸Šä¸€ä¸ªç¤ºä¾‹ï¼Œä»¥è¯´æ˜Žå¦‚何在 Java 应用½E‹åºä¸­ä‹É用命名参数。请注意åQŒè¿™äº›å‚数名¿U°å¯¹åº”于存储˜q‡ç¨‹çš„定义中的参数名¿UŽÍ¼š CREATE PROCEDURE GetImmediateManager

 
以下是引用片ŒDµï¼š
 @employeeID INT,
   @managerID INT OUTPUT
  AS
  BEGIN
   SELECT @managerID = ManagerID
   FROM HumanResources.Employee
   WHERE EmployeeID = @employeeID
  END
  存储˜q‡ç¨‹å¯èƒ½˜q”回更新计数和多个结果集。Microsoft SQL Server 2005 JDBC Driver 遵åó@ JDBC 3.0 规范åQŒæ­¤è§„范规定在检ç´?OUT 参数之前应检索多个结果集和更新计数。也ž®±æ˜¯è¯ß_¼Œåº”用½E‹åºåº”å…ˆ‹‚€ç´¢æ‰€æœ?ResultSet 对象和更新计敎ͼŒç„¶åŽä½¿ç”¨ CallableStatement.getter æ–ÒŽ³•‹‚€ç´?OUT 参数。否则,当检ç´?OUT 参数æ—Óž¼Œž®šæœª‹‚€ç´¢çš„ ResultSet 对象和更新计数将丢失ã€?

  4 使用带有˜q”回状态的存储˜q‡ç¨‹

  使用 JDBC 驱动½E‹åºè°ƒç”¨˜q™ç§å­˜å‚¨˜q‡ç¨‹æ—Óž¼Œå¿…é¡»¾l“合 SQLServerConnection ¾cȝš„ prepareCall æ–ÒŽ³•使用 call SQL 转义序列。返回状态参数的 call 转义序列的语法如下所½Cºï¼š

 

以下是引用片ŒDµï¼š
 {[?=]call procedure-name[([parameter][,[parameter]]...)]}
  构é€?call 转义序列æ—Óž¼Œè¯·ä‹Éç”??(问号)字符来指定返回状态参数。此字符充当要从该存储过½E‹è¿”回的参数值的占位½W¦ã€‚è¦ä¸ø™¿”回状态参数指定å€û|¼Œå¿…须在执行存储过½E‹å‰ä½¿ç”¨ SQLServerCallableStatement ¾cȝš„ registerOutParameter æ–ÒŽ³•指定参数的数据类型ã€?

  此外åQŒå‘ registerOutParameter æ–ÒŽ³•传递返回状态参数值时åQŒä¸ä»…需要指定要使用的参数的数据¾cÕdž‹åQŒè¿˜å¿…须指定参数在存储过½E‹ä¸­çš„序æ•îC½¾|®ã€‚对于返回状态参敎ͼŒå…¶åºæ•îC½¾|®å§‹¾lˆäØ“ 1åQŒè¿™æ˜¯å› ä¸ºå®ƒå§‹ç»ˆæ˜¯è°ƒç”¨å­˜å‚¨è¿‡½E‹æ—¶çš„第一个参数。尽½Ž?SQLServerCallableStatement ¾cÀL”¯æŒä‹É用参数的名称来指½Cºç‰¹å®šå‚敎ͼŒä½†æ‚¨åªèƒ½å¯¹è¿”回状态参æ•îC‹É用参数的序号位置¾~–号ã€?/p>

ã€€ã€€ä½œäØ“å®žä¾‹åQŒåœ¨ SQL Server 2005 AdventureWorks ½CÞZ¾‹æ•°æ®åº“中创徏以下存储˜q‡ç¨‹åQ?/p>

  

以下是引用片ŒDµï¼š
CREATE PROCEDURE CheckContactCity
   (@cityName CHAR(50))
  AS
  BEGIN
   IF ((SELECT COUNT(*)
   FROM Person.Address
   WHERE City = @cityName) > 1)
   RETURN 1
  ELSE
   RETURN 0
  END
  该存储过½E‹è¿”回状态å€?1 æˆ?0åQŒè¿™å–决于是否能在表 Person.Address 中找åˆ?cityName 参数指定的城市ã€?

  在下面的实例中,ž®†å‘此函æ•îC¼ é€?AdventureWorks ½CÞZ¾‹æ•°æ®åº“的打开˜qžæŽ¥åQŒç„¶åŽä‹Éç”?execute æ–ÒŽ³•调用 CheckContactCity 存储˜q‡ç¨‹åQ?/p>

 

以下是引用片ŒDµï¼š
 public static void executeStoredProcedure(Connection con) ...{
   try ...{
   CallableStatement cstmt = con.prepareCall("{? = call dbo.CheckContactCity(?)}");
   cstmt.registerOutParameter(1, java.sql.Types.INTEGER);
   cstmt.setString(2, "Atlanta");
   cstmt.execute();
   System.out.println("RETURN STATUS: " + cstmt.getInt(1));
   }
   cstmt.close();
   catch (Exception e) ...{
   e.printStackTrace();
   }
  }
  5 使用带有更新计数的存储过½E?/strong>

  使用 SQLServerCallableStatement ¾cÀLž„建对存储˜q‡ç¨‹çš„调用之后,可以使用 execute æˆ?executeUpdate æ–ÒŽ³•中的ä»ÀL„ä¸€ä¸ªæ¥è°ƒç”¨æ­¤å­˜å‚¨è¿‡½E‹ã€‚executeUpdate æ–ÒŽ³•ž®†è¿”回一ä¸?int å€û|¼Œè¯¥å€¼åŒ…含受此存储过½E‹åª„响的行数åQŒä½† execute æ–ÒŽ³•不返回此倹{€‚如果ä‹Éç”?execute æ–ÒŽ³•åQŒåƈ且希望获得受影响的行数计敎ͼŒåˆ™å¯ä»¥åœ¨˜qè¡Œå­˜å‚¨˜q‡ç¨‹åŽè°ƒç”?getUpdateCount æ–ÒŽ³•ã€?/p>

ã€€ã€€ä½œäØ“å®žä¾‹åQŒåœ¨ SQL Server 2005 AdventureWorks ½CÞZ¾‹æ•°æ®åº“中创徏以下表和存储˜q‡ç¨‹åQ?/p>

  

以下是引用片ŒDµï¼š
CREATE TABLE TestTable
   (Col1 int IDENTITY,
   Col2 varchar(50),
   Col3 int);
  
  CREATE PROCEDURE UpdateTestTable
   @Col2 varchar(50),
   @Col3 int
  AS
  BEGIN
   UPDATE TestTable
   SET Col2 = @Col2, Col3 = @Col3
  END;
在下面的实例中,ž®†å‘此函æ•îC¼ é€?AdventureWorks ½CÞZ¾‹æ•°æ®åº“的打开˜qžæŽ¥åQŒåƈ使用 execute æ–ÒŽ³•调用 UpdateTestTable 存储˜q‡ç¨‹åQŒç„¶åŽä‹Éç”?getUpdateCount æ–ÒŽ³•˜q”回受存储过½E‹åª„响的行计数ã€?
以下是引用片ŒDµï¼š
public static void executeUpdateStoredProcedure(Connection con) ...{
   try ...{
   CallableStatement cstmt = con.prepareCall("{call dbo.UpdateTestTable(?, ?)}");
   cstmt.setString(1, "A");
   cstmt.setInt(2, 100);
   cstmt.execute();
   int count = cstmt.getUpdateCount();
   cstmt.close();
  
   System.out.println("ROWS AFFECTED: " + count);
   }
   catch (Exception e) ...{
   e.printStackTrace();
   }
  }


]]>
Java调用SQL Server的存储过½E‹è¯¦è§£[转]http://www.aygfsteel.com/zhukuanglong/archive/2008/11/07/239335.html矿矿矿矿Fri, 07 Nov 2008 14:16:00 GMThttp://www.aygfsteel.com/zhukuanglong/archive/2008/11/07/239335.htmlhttp://www.aygfsteel.com/zhukuanglong/comments/239335.htmlhttp://www.aygfsteel.com/zhukuanglong/archive/2008/11/07/239335.html#Feedback0http://www.aygfsteel.com/zhukuanglong/comments/commentRss/239335.htmlhttp://www.aygfsteel.com/zhukuanglong/services/trackbacks/239335.html[转]自天极网

1使用不带参数的存储过½E?/strong>

  使用 JDBC 驱动½E‹åºè°ƒç”¨ä¸å¸¦å‚数的存储过½E‹æ—¶åQŒå¿…™åÖM‹Éç”?call SQL 转义序列。不带参数的 call 转义序列的语法如下所½Cºï¼š

  

以下是引用片ŒDµï¼š
{call procedure-name}

ã€€ã€€ä½œäØ“å®žä¾‹åQŒåœ¨ SQL Server 2005 AdventureWorks ½CÞZ¾‹æ•°æ®åº“中创徏以下存储˜q‡ç¨‹åQ?/p>

  

以下是引用片ŒDµï¼š
CREATE PROCEDURE GetContactFormalNames
  AS
  BEGIN
   SELECT TOP 10 Title + ' ' + FirstName + ' ' + LastName AS FormalName
   FROM Person.Contact
  END
此存储过½E‹è¿”回单个结果集åQŒå…¶ä¸­åŒ…含一列数æ?ç”?Person.Contact 表中前十个联¾pÖMh的称呹{€å¿U°å’Œå§“氏¾l„成)ã€?

  在下面的实例中,ž®†å‘此函æ•îC¼ é€?AdventureWorks ½CÞZ¾‹æ•°æ®åº“的打开˜qžæŽ¥åQŒç„¶åŽä‹Éç”?executeQuery æ–ÒŽ³•调用 GetContactFormalNames 存储˜q‡ç¨‹ã€?/p>

 

以下是引用片ŒDµï¼š
  public static void executeSprocNoParams(Connection con) ...{
   try ...{
   Statement stmt = con.createStatement();
  ResultSet rs = stmt.executeQuery("{call dbo.GetContactFormalNames}");
  
   while (rs.next()) ...{
 System.out.println(rs.getString("FormalName"));
  }
  rs.close();
  stmt.close();
  }
  catch (Exception e) ...{
  e.printStackTrace();
  }
  }

  2使用带有输入参数的存储过½E?/strong>

  使用 JDBC 驱动½E‹åºè°ƒç”¨å¸¦å‚数的存储˜q‡ç¨‹æ—Óž¼Œå¿…é¡»¾l“合 SQLServerConnection ¾cȝš„ prepareCall æ–ÒŽ³•使用 call SQL 转义序列。带æœ?IN 参数çš?call 转义序列的语法如下所½Cºï¼š

  

以下是引用片ŒDµï¼š
{call procedure-name[([parameter][,[parameter]]...)]}

  构é€?call 转义序列æ—Óž¼Œè¯·ä‹Éç”??(问号)字符来指å®?IN 参数。此字符充当要传递给该存储过½E‹çš„参数值的占位½W¦ã€‚可以ä‹Éç”?SQLServerPreparedStatement ¾cȝš„ setter æ–ÒŽ³•之一为参数指定倹{€‚可使用çš?setter æ–ÒŽ³•ç”?IN 参数的数据类型决定ã€?/p>

  å?setter æ–ÒŽ³•传递值时åQŒä¸ä»…需要指定要在参æ•îC¸­ä½¿ç”¨çš„实际å€û|¼Œ˜q˜å¿…™åÀLŒ‡å®šå‚数在存储˜q‡ç¨‹ä¸­çš„序数位置。例如,如果存储˜q‡ç¨‹åŒ…含单个 IN 参数åQŒåˆ™å…¶åºæ•°å€égØ“ 1。如果存储过½E‹åŒ…含两个参敎ͼŒåˆ™ç¬¬ä¸€ä¸ªåºæ•°å€égØ“ 1åQŒç¬¬äºŒä¸ªåºæ•°å€égØ“ 2ã€?/p>

ã€€ã€€ä½œäØ“å¦‚ä½•è°ƒç”¨åŒ…å« IN 参数的存储过½E‹çš„实例åQŒä‹Éç”?SQL Server 2005 AdventureWorks ½CÞZ¾‹æ•°æ®åº“中çš?uspGetEmployeeManagers 存储˜q‡ç¨‹ã€‚此存储˜q‡ç¨‹æŽ¥å—åäØ“ EmployeeID 的单个输入参æ•?它是一个整数å€?åQŒç„¶åŽåŸºäºŽæŒ‡å®šçš„ EmployeeID ˜q”回雇员及其¾lç†çš„递归列表。下面是调用此存储过½E‹çš„ Java 代码åQ?/p>

  

 

以下是引用片ŒDµï¼š
  public static void executeSprocInParams(Connection con) ...{
   try ...{
   PreparedStatement pstmt = con.prepareStatement("{call dbo.uspGetEmployeeManagers(?)}");
   pstmt.setInt(1, 50);
   ResultSet rs = pstmt.executeQuery();
   while (rs.next()) ...{
   System.out.println("EMPLOYEE:");
   System.out.println(rs.getString("LastName") + ", " + rs.getString("FirstName"));
   System.out.println("MANAGER:");
   System.out.println(rs.getString("ManagerLastName") + ", " + rs.getString("ManagerFirstName"));
   System.out.println();
   }
   rs.close();
   pstmt.close();
   }
   catch (Exception e) ...{
   e.printStackTrace();
   }
  }

  3使用带有输出参数的存储过½E?/strong>

  使用 JDBC 驱动½E‹åºè°ƒç”¨æ­¤ç±»å­˜å‚¨˜q‡ç¨‹æ—Óž¼Œå¿…é¡»¾l“合 SQLServerConnection ¾cȝš„ prepareCall æ–ÒŽ³•使用 call SQL 转义序列。带æœ?OUT 参数çš?call 转义序列的语法如下所½Cºï¼š

  

以下是引用片ŒDµï¼š
{call procedure-name[([parameter][,[parameter]]...)]}

  构é€?call 转义序列æ—Óž¼Œè¯·ä‹Éç”??(问号)字符来指å®?OUT 参数。此字符充当要从该存储过½E‹è¿”回的参数值的占位½W¦ã€‚要ä¸?OUT 参数指定å€û|¼Œå¿…须在运行存储过½E‹å‰ä½¿ç”¨ SQLServerCallableStatement ¾cȝš„ registerOutParameter æ–ÒŽ³•指定各参数的数据¾cÕdž‹ã€?/p>

  使用 registerOutParameter æ–ÒŽ³•ä¸?OUT 参数指定的值必™åÀL˜¯ java.sql.Types 所包含çš?JDBC 数据¾cÕdž‹ä¹‹ä¸€åQŒè€Œå®ƒåˆè¢«æ˜ å°„成本åœ?SQL Server 数据¾cÕdž‹ä¹‹ä¸€ã€‚有å…?JDBC å’?SQL Server 数据¾cÕdž‹çš„详¾l†ä¿¡æ¯ï¼Œè¯·å‚阅了è§?JDBC 驱动½E‹åºæ•°æ®¾cÕdž‹ã€?/p>

  当您对于 OUT 参数å?registerOutParameter æ–ÒŽ³•传递一个值时åQŒä¸ä»…å¿…™åÀLŒ‡å®šè¦ç”¨äºŽæ­¤å‚数的数据¾cÕdž‹åQŒè€Œä¸”必须在存储过½E‹ä¸­æŒ‡å®šæ­¤å‚数的序号位置或此参数的名¿U°ã€‚例如,如果存储˜q‡ç¨‹åŒ…含单个 OUT 参数åQŒåˆ™å…¶åºæ•°å€égØ“ 1;如果存储˜q‡ç¨‹åŒ…含两个参数åQŒåˆ™½W¬ä¸€ä¸ªåºæ•°å€égØ“ 1åQŒç¬¬äºŒä¸ªåºæ•°å€égØ“ 2ã€?/p>

ã€€ã€€ä½œäØ“å®žä¾‹åQŒåœ¨ SQL Server 2005 AdventureWorks ½CÞZ¾‹æ•°æ®åº“中创徏以下存储˜q‡ç¨‹åQ?æ ÒŽ®æŒ‡å®šçš„æ•´æ•?IN 参数 (employeeID)åQŒè¯¥å­˜å‚¨˜q‡ç¨‹ä¹Ÿè¿”回单个整æ•?OUT 参数 (managerID)。根æ?HumanResources.Employee 表中包含çš?EmployeeIDåQŒOUT 参数中返回的å€égØ“ ManagerIDã€?/p>

  在下面的实例中,ž®†å‘此函æ•îC¼ é€?AdventureWorks ½CÞZ¾‹æ•°æ®åº“的打开˜qžæŽ¥åQŒç„¶åŽä‹Éç”?execute æ–ÒŽ³•调用 GetImmediateManager 存储˜q‡ç¨‹åQ?/p>

 

以下是引用片ŒDµï¼š
  public static void executeStoredProcedure(Connection con) ...{
   try ...{
   CallableStatement cstmt = con.prepareCall("{call dbo.GetImmediateManager(?, ?)}");
   cstmt.setInt(1, 5);
   cstmt.registerOutParameter(2, java.sql.Types.INTEGER);
   cstmt.execute();
   System.out.println("MANAGER ID: " + cstmt.getInt(2));
   }
   catch (Exception e) ...{
   e.printStackTrace();
   }
  } 

本示例ä‹É用序号位¾|®æ¥æ ‡è¯†å‚数。或者,也可以ä‹É用参数的名称(而非其序号位¾|?来标识此参数。下面的代码½CÞZ¾‹ä¿®æ”¹äº†ä¸Šä¸€ä¸ªç¤ºä¾‹ï¼Œä»¥è¯´æ˜Žå¦‚何在 Java 应用½E‹åºä¸­ä‹É用命名参数。请注意åQŒè¿™äº›å‚数名¿U°å¯¹åº”于存储˜q‡ç¨‹çš„定义中的参数名¿UŽÍ¼š CREATE PROCEDURE GetImmediateManager

 
以下是引用片ŒDµï¼š
 @employeeID INT,
   @managerID INT OUTPUT
  AS
  BEGIN
   SELECT @managerID = ManagerID
   FROM HumanResources.Employee
   WHERE EmployeeID = @employeeID
  END
  存储˜q‡ç¨‹å¯èƒ½˜q”回更新计数和多个结果集。Microsoft SQL Server 2005 JDBC Driver 遵åó@ JDBC 3.0 规范åQŒæ­¤è§„范规定在检ç´?OUT 参数之前应检索多个结果集和更新计数。也ž®±æ˜¯è¯ß_¼Œåº”用½E‹åºåº”å…ˆ‹‚€ç´¢æ‰€æœ?ResultSet 对象和更新计敎ͼŒç„¶åŽä½¿ç”¨ CallableStatement.getter æ–ÒŽ³•‹‚€ç´?OUT 参数。否则,当检ç´?OUT 参数æ—Óž¼Œž®šæœª‹‚€ç´¢çš„ ResultSet 对象和更新计数将丢失ã€?

  4 使用带有˜q”回状态的存储˜q‡ç¨‹

  使用 JDBC 驱动½E‹åºè°ƒç”¨˜q™ç§å­˜å‚¨˜q‡ç¨‹æ—Óž¼Œå¿…é¡»¾l“合 SQLServerConnection ¾cȝš„ prepareCall æ–ÒŽ³•使用 call SQL 转义序列。返回状态参数的 call 转义序列的语法如下所½Cºï¼š

 

以下是引用片ŒDµï¼š
 {[?=]call procedure-name[([parameter][,[parameter]]...)]}
  构é€?call 转义序列æ—Óž¼Œè¯·ä‹Éç”??(问号)字符来指定返回状态参数。此字符充当要从该存储过½E‹è¿”回的参数值的占位½W¦ã€‚è¦ä¸ø™¿”回状态参数指定å€û|¼Œå¿…须在执行存储过½E‹å‰ä½¿ç”¨ SQLServerCallableStatement ¾cȝš„ registerOutParameter æ–ÒŽ³•指定参数的数据类型ã€?

  此外åQŒå‘ registerOutParameter æ–ÒŽ³•传递返回状态参数值时åQŒä¸ä»…需要指定要使用的参数的数据¾cÕdž‹åQŒè¿˜å¿…须指定参数在存储过½E‹ä¸­çš„序æ•îC½¾|®ã€‚对于返回状态参敎ͼŒå…¶åºæ•îC½¾|®å§‹¾lˆäØ“ 1åQŒè¿™æ˜¯å› ä¸ºå®ƒå§‹ç»ˆæ˜¯è°ƒç”¨å­˜å‚¨è¿‡½E‹æ—¶çš„第一个参数。尽½Ž?SQLServerCallableStatement ¾cÀL”¯æŒä‹É用参数的名称来指½Cºç‰¹å®šå‚敎ͼŒä½†æ‚¨åªèƒ½å¯¹è¿”回状态参æ•îC‹É用参数的序号位置¾~–号ã€?/p>

ã€€ã€€ä½œäØ“å®žä¾‹åQŒåœ¨ SQL Server 2005 AdventureWorks ½CÞZ¾‹æ•°æ®åº“中创徏以下存储˜q‡ç¨‹åQ?/p>

  

以下是引用片ŒDµï¼š
CREATE PROCEDURE CheckContactCity
   (@cityName CHAR(50))
  AS
  BEGIN
   IF ((SELECT COUNT(*)
   FROM Person.Address
   WHERE City = @cityName) > 1)
   RETURN 1
  ELSE
   RETURN 0
  END
  该存储过½E‹è¿”回状态å€?1 æˆ?0åQŒè¿™å–决于是否能在表 Person.Address 中找åˆ?cityName 参数指定的城市ã€?

  在下面的实例中,ž®†å‘此函æ•îC¼ é€?AdventureWorks ½CÞZ¾‹æ•°æ®åº“的打开˜qžæŽ¥åQŒç„¶åŽä‹Éç”?execute æ–ÒŽ³•调用 CheckContactCity 存储˜q‡ç¨‹åQ?/p>

 

以下是引用片ŒDµï¼š
 public static void executeStoredProcedure(Connection con) ...{
   try ...{
   CallableStatement cstmt = con.prepareCall("{? = call dbo.CheckContactCity(?)}");
   cstmt.registerOutParameter(1, java.sql.Types.INTEGER);
   cstmt.setString(2, "Atlanta");
   cstmt.execute();
   System.out.println("RETURN STATUS: " + cstmt.getInt(1));
   }
   cstmt.close();
   catch (Exception e) ...{
   e.printStackTrace();
   }
  }
  5 使用带有更新计数的存储过½E?/strong>

  使用 SQLServerCallableStatement ¾cÀLž„建对存储˜q‡ç¨‹çš„调用之后,可以使用 execute æˆ?executeUpdate æ–ÒŽ³•中的ä»ÀL„ä¸€ä¸ªæ¥è°ƒç”¨æ­¤å­˜å‚¨è¿‡½E‹ã€‚executeUpdate æ–ÒŽ³•ž®†è¿”回一ä¸?int å€û|¼Œè¯¥å€¼åŒ…含受此存储过½E‹åª„响的行数åQŒä½† execute æ–ÒŽ³•不返回此倹{€‚如果ä‹Éç”?execute æ–ÒŽ³•åQŒåƈ且希望获得受影响的行数计敎ͼŒåˆ™å¯ä»¥åœ¨˜qè¡Œå­˜å‚¨˜q‡ç¨‹åŽè°ƒç”?getUpdateCount æ–ÒŽ³•ã€?/p>

ã€€ã€€ä½œäØ“å®žä¾‹åQŒåœ¨ SQL Server 2005 AdventureWorks ½CÞZ¾‹æ•°æ®åº“中创徏以下表和存储˜q‡ç¨‹åQ?/p>

  

以下是引用片ŒDµï¼š
CREATE TABLE TestTable
   (Col1 int IDENTITY,
   Col2 varchar(50),
   Col3 int);
  
  CREATE PROCEDURE UpdateTestTable
   @Col2 varchar(50),
   @Col3 int
  AS
  BEGIN
   UPDATE TestTable
   SET Col2 = @Col2, Col3 = @Col3
  END;
在下面的实例中,ž®†å‘此函æ•îC¼ é€?AdventureWorks ½CÞZ¾‹æ•°æ®åº“的打开˜qžæŽ¥åQŒåƈ使用 execute æ–ÒŽ³•调用 UpdateTestTable 存储˜q‡ç¨‹åQŒç„¶åŽä‹Éç”?getUpdateCount æ–ÒŽ³•˜q”回受存储过½E‹åª„响的行计数ã€?
以下是引用片ŒDµï¼š
public static void executeUpdateStoredProcedure(Connection con) ...{
   try ...{
   CallableStatement cstmt = con.prepareCall("{call dbo.UpdateTestTable(?, ?)}");
   cstmt.setString(1, "A");
   cstmt.setInt(2, 100);
   cstmt.execute();
   int count = cstmt.getUpdateCount();
   cstmt.close();
  
   System.out.println("ROWS AFFECTED: " + count);
   }
   catch (Exception e) ...{
   e.printStackTrace();
   }
  }


]]>
SQL高çñ”之简易银行系¾l?/title><link>http://www.aygfsteel.com/zhukuanglong/archive/2008/10/31/237873.html</link><dc:creator>矿矿</dc:creator><author>矿矿</author><pubDate>Fri, 31 Oct 2008 11:31:00 GMT</pubDate><guid>http://www.aygfsteel.com/zhukuanglong/archive/2008/10/31/237873.html</guid><wfw:comment>http://www.aygfsteel.com/zhukuanglong/comments/237873.html</wfw:comment><comments>http://www.aygfsteel.com/zhukuanglong/archive/2008/10/31/237873.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/zhukuanglong/comments/commentRss/237873.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/zhukuanglong/services/trackbacks/237873.html</trackback:ping><description><![CDATA[<p>--创徏数据åº?br /> use master <br /> go<br /> if exists(select * from sysdatabases where name = 'BankDB')<br /> drop database BankDB<br /> go<br /> exec xp_cmdshell 'md E:\æœÞqŸ¿é¾?,NO_OUTPUT<br /> create database BankDB<br /> go<br /> use BankDB<br /> --创徏帐户信息表AccountInfo<br /> if exists(select * from sysobjects where name = 'AccountInfo')<br /> drop table AccountInfo<br /> go<br /> create table AccountInfo<br /> (<br /> CustID int identity(1,1) primary key,<br /> CustName varchar(20) not null,<br /> IDCard varchar(18) check(len(IDCard) = 15 or len(IDCard) = 18),<br /> TelePhone varchar(13) check(len(TelePhone)=11 or len(TelePhone) like'[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9]' or len(TelePhone) like'[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]') ,<br /> Address varchar(50) default '地址不详'<br /> )<br /> go<br /> --创徏信用卡信息表CardInfo<br /> if exists(select * from sysobjects where name = 'CardInfo')<br /> drop table CardInfo<br /> go<br /> create table CardInfo<br /> (<br /> CardID varchar(19) check(len(CardID)=19) primary key,<br /> CardPassWord varchar(6) default'888888',<br /> CustID int references AccountInfo(CustID),<br /> SaveType varchar(10) not null check(SaveType in('‹zÀLœŸ','定期')),<br /> OpenDate datetime not null default(getdate()),<br /> OpenMoney money not null check(OpenMoney >= 1),<br /> LeftMoney money not null check(LeftMoney >= 1),<br /> IsLoss varchar(2) not null check(IsLoss in('æ˜?,'å?)) default 'å?<br /> )<br /> go<br /> --创徏交易信息表TransInfo<br /> if exists(select * from sysobjects where name = 'TransInfo')<br /> drop table TransInfo<br /> go<br /> create table TransInfo<br /> (<br /> CardID varchar(19) not null,<br /> TransType varchar(4) not null check(TransType in('存入','支取')),<br /> TransMoney money not null check(TransMoney > 0),<br /> TransDate datetime default(getdate())<br /> )<br /> go</p> <p><br /> -------------------------------插入‹¹‹è¯•数据-------------------------------------<br /> ---为AccountInfo表插入测试数æ?br /> insert into AccountInfo values('孙悟½I?,'422322123902140019','027-8888988','花果å±?)<br /> insert into AccountInfo values('唐僧','422322001902140019','027-8536896','大唐')<br /> insert into AccountInfo values('沙和ž®?,'410334020157144719','13295654665','通天æ²?)<br /> ---为CardInfo表插入测试数æ?br /> insert into CardInfo values('1027 3726 1536 1135',default,1,'定期',default,500.00,500.00,default)<br /> insert into CardInfo values('1029 3526 1235 1235',default,2,'‹zÀLœŸ',default,1500.00,1500.00,default)<br /> insert into CardInfo values('1324 7532 1536 1935',default,3,'‹zÀLœŸ',default,4500.00,4500.00,default)</p> <p><br /> ---表的查看<br /> select * from AccountInfo</p> <p>select * from CardInfo</p> <p>select * from TransInfo</p> <p>-----------------T-SQL----------------------------<br /> --孙悟½IÞZ¿®æ”¹å¯†ç ?br /> update CardInfo set CardPassWord = 611234 where CustID = 1</p> <p>--孙悟½Iºå–é’?br /> --事务开å§?br /> begin transaction tran_Qu<br /> --定义一个用于记录错误的变量<br /> declare @tran_error int<br /> set @tran_error = 0;<br /> --ž®†å­™æ‚Ÿç©ºäº¤æ˜“˜q›è¡Œè®°å½•<br /> insert into TransInfo values('1027 3726 1536 1135','支取',200.00,getdate())<br /> set @tran_error = @tran_error + @@error<br /> --从孙悟空的帐户中减去200.00<br /> update CardInfo set LeftMoney = LeftMoney - 200<br /> where CardID = '1027 3726 1536 1135'<br /> set @tran_error = @tran_error + @@error<br /> if @tran_error <> 0<br />    begin<br />       --执行错误åQŒå›žæ»šäº‹åŠ?br />       rollback transaction<br />       print '支取å¤ÞpÓ|åQŒäº¤æ˜“已取消'<br />    end<br /> else<br />   begin<br />     --没有发现错误åQŒæäº¤äº‹åŠ?br />     commit transaction<br />     print'交易成功åQŒå·²ä¿å­˜æ–°æ•°æ?<br />   end<br /> go<br /> select * from CardInfo where CustID = 1</p> <p>--沙和ž®šå­˜é’?br /> begin transaction tran_bring<br /> declare @tran_error int<br /> set @tran_error = 0;<br /> insert into TransInfo values('1324 7532 1536 1935','存入',1200.00,getdate())<br /> set @tran_error = @tran_error + @@error<br /> update CardInfo set LeftMoney = LeftMoney + 1200<br /> where CardID = '1324 7532 1536 1935'<br /> set @tran_error = @tran_error + @@error<br /> if @tran_error <> 0<br />    begin<br />       rollback transaction<br />       print '存入å¤ÞpÓ|åQŒäº¤æ˜“已取消'<br />    end<br /> else<br />   begin<br />     commit transaction<br />     print'交易成功åQŒå·²ä¿å­˜æ–°æ•°æ?<br />   end<br /> go<br /> select * from CardInfo where CustID = 3</p> <p>--唐僧卡丢å¤?br /> update CardInfo set IsLoss='æ˜? where CustID = 2</p> <p>--查询最˜q?0å¼€æˆïLš„银行卡信æ?br /> select * from CardInfo where datediff(dd,OpenDate,getdate()) <= 10</p> <p>--查询最大交易的卡信æ?br /> declare @maxMoney money<br /> select @maxMoney = max(TransMoney) from TransInfo<br /> select * from CardInfo where CardID in(select CardID from TransInfo where TransMoney = @maxMoney)</p> <p>--查询交易信息表中æ€Èš„交易<br /> declare @allMoney money<br /> declare @QuMoney money<br /> declare @CunMoney money<br /> select @allMoney = sum(TransMoney) from TransInfo<br /> select @QuMoney = sum(TransMoney) from TransInfo where TransType = '支取'<br /> select @CunMoney = sum(TransMoney) from TransInfo where TransType = '存入'<br /> print 'æ€ÖMº¤æ˜“金额:' + convert(varchar(10),@allMoney)<br /> print '支取交易金额åQ? + convert(varchar(10),@QuMoney)<br /> print '存入交易金额åQ? + convert(varchar(10),@CunMoney)</p> <p>--¾l™äº¤æ˜“信息表加上非聚集烦引,òq¶åˆ©ç”¨éžèšé›†ç´¢å¼•查询数据<br /> if exists(select * from sysobjects where name = 'IX_CardID')<br /> drop index BankDB.IX_CardID<br /> go<br /> create nonclustered index IX_CardID<br /> on TransInfo(CardID)<br /> with fillfactor = 30<br /> go<br /> select * from TransInfo with(index = IX_CardID) where CardID = '1324 7532 1536 1935'</p> <p>--查询挂失的è̎户信æ?br /> select * from AccountInfo where CustID in(select CustID from CardInfo where IsLoss = 'æ˜?)</p> <p><br /> --账户信息视图<br /> if exists(select * from sysobjects where name = 'view_AccountCardInfo')<br /> drop view view_AccountCardInfo<br /> go<br /> create view view_AccountCardInfo<br /> as<br /> select AccountInfo.CustID '帐户¾~–号',CustName '帐户姓名',IDCard'íw«ä†¾è¯å·ç ?,TelePhone'客户电话',Address'客户地址',<br />         CardID'信用卡编å?,SaveType'储蓄¾cÕdž‹',OpenDate'å¼€æˆäh—¥æœ?,OpenMoney'开户金é¢?,IsLoss'是否挂失'<br /> from AccountInfo join CardInfo<br /> on AccountInfo.CustID = CardInfo.CustID<br /> go<br /> select * from view_AccountCardInfo</p> <p>--交易信息视图<br /> if exists(select * from sysobjects where name = 'view_TransInfo')<br /> drop view view_TransInfo<br /> go<br /> create view view_TransInfo<br /> as<br /> select CardID '卡号',TransType '交易¾cÕdž‹',TransMoney '交易金额',TransDate '交易旉™—´'<br /> from TransInfo<br /> go<br /> go<br /> select * from view_TransInfo</p> <p>---------------½W¬ä¸‰é˜¶æ®µ----------------<br /> --------T-SQL-------------<br /> if exists(select name from sysobjects where name = 'Tri_TransInfo_Insert')<br /> drop trigger Tri_TransInfo_Insert<br /> go<br /> create trigger Tri_TransInfo_Insert on TransInfo for insert<br /> as<br />  declare @TempTransType varchar(10)     --定义临时的变量存放交易类åž?br />  declare @TempTransMoney money          --定义临时的变量存放交易金é¢?br />  declare @TempCardID varchar(19)        --定义临时的变量存攑֍¡å?br />  declare @TempLeftMoney money           --定义临时的变量存攑֮¢æˆïLš„余额<br />  <br /> --从inserted临时表中取出数据赋å€?br /> select @TempTransType = TransType,@TempTransMoney = TransMoney,@TempCardID = CardID<br /> from inserted<br /> select @TempLeftMoney = LeftMoney from CardInfo where CardID = @TempCardID</p> <p>if(@TempTransType = '支取')       <br />   begin<br />     if(@TempLeftMoney - @TempTransMoney >=1)   <br />        begin<br />           update CardInfo set LeftMoney = @TempLeftMoney - @TempTransMoney where CardID = @TempCardID<br />           print '交易成功åQ?<br />        end<br />      else<br />        begin<br />           rollback transaction<br />           print '余额不èƒöåQŒäº¤æ˜“失败!'<br />        end<br />   end<br /> else<br />   begin<br />     update CardInfo set LeftMoney = @TempLeftMoney + @TempTransMoney where CardID = @TempCardID<br />     print '交易成功åQ?<br />   end<br /> select @TempLeftMoney = LeftMoney from CardInfo where CardID = @TempCardID   <br /> print '卡号åQ? + convert(varchar(19),@TempCardID) + '  余额åQ? + convert(varchar(10),@TempLeftMoney)<br /> go<br /> set nocount on   --不显½Cø™¯­å¥åª„响记录行æ•?br /> --‹¹‹è¯•触发å™?沙和ž®šæ”¯å?br /> insert into TransInfo(CardID,TransType,TransMoney) values('9645 9087 9371 4492','支取',500)<br /> go</p> <p>select * from TransInfo<br /> select * from accountinfo<br /> select * from CardInfo</p> <p>--利用存储˜q‡ç¨‹å®žçŽ°å¤‡ä†¾äº¤æ˜“ä¿¡æ¯çš„ä¸šåŠ?br /> if exists(select *from sysobjects where name = 'Proc_Backup_TransInfo')<br />     drop procedure Proc_Backup_TransInfo<br /> go<br /> create procedure Proc_Backup_TransInfo<br /> @BackupDate datetime<br /> as<br /> declare @MyError int<br /> set @MyError = 0<br /> print '开始备ä»?.....'<br /> if exists(select * from sysobjects where name ='Back_TransInfo')<br /> begin<br />  begin tran  <br />  insert into Back_TransInfo select * from TransInfo where datediff(dd,TransDate,getdate()) >=0<br /> set @MyError = @MyError + @@error<br /> if @MyError != 0<br />    begin<br />        rollback transaction<br />       print '备䆾å¤ÞpÓ|'<br />    end<br /> else<br />   begin<br />       commit transaction<br />        print'备䆾成功'<br />    end<br />   end<br /> else <br />   begin<br />     begin tran  <br />     select * into Back_TransInfo from TransInfo where datediff(dd,TransDate,getdate()) >=0<br />     set @MyError = @MyError + @@error<br /> if @MyError != 0<br />    begin<br />       rollback transaction<br />       print '备䆾å¤ÞpÓ|!'<br />    end<br /> else<br />    begin<br />       commit transaction<br />       print '备䆾成功!'<br />    end<br /> end<br /> go<br /> insert into TransInfo values('1324 7532 1536 1935','支取',500.00,getdate())  <br /> insert into TransInfo values('1324 7532 1536 1935','支取',500.00,getdate())<br /> insert into TransInfo values('1324 7532 1536 1935','支取',500.00,getdate())<br /> declare @BackDate datetime<br /> set @BackDate = getDate()<br /> exec Proc_Backup_TransInfo '2008-10-31'<br /> go<br /> select * from Back_TransInfo</p> <p>--实现银行卡的存储˜q‡ç¨‹<br /> if exists(select * from sysobjects where name = 'Proc_GetCardID')<br />     drop procedure Proc_GetCardID<br /> go<br /> create procedure Proc_GetCardID<br /> @CardID varchar(19) output<br /> as<br /> declare @TempRand numeric(18,16)<br /> declare @TempStr varchar(18)<br /> set @TempRand = rand(datepart(ms,getdate())*10000)<br /> set @TempStr = convert(varchar(18),@TempRand)<br /> set @CardID = substring(@TempStr,3,4)+' '+substring(@TempStr,7,4)+' '+substring(@TempStr,11,4)+' '+substring(@TempStr,15,4)<br /> go<br /> declare @MyCardID varchar(19)<br /> exec Proc_GetCardID @MyCardID output<br /> print '产生的随卛_¡åäh˜¯åQ? + @MyCardID<br /> go</p> <p>--实现开æˆïLš„存储˜q‡ç¨‹<br /> if exists(select * from sysobjects where name = 'Proc_OpenAcount')<br />     drop procedure Proc_OpenAcount<br /> go<br /> create procedure Proc_OpenAcount<br /> @CustName varchar(20),<br /> @IDCard varchar(18),<br /> @Telephone varchar(13),<br /> @OpenMoney money = 1,<br /> @SaveType varchar(10) = '‹zÀLœŸ',<br /> @Address varchar(50)= '地址不详'<br /> as<br />  declare @MyCardID varchar(19)<br />  declare @MyCustID int<br />  exec Proc_GetCardID @MyCardID output<br /> while(1=1)<br />  begin<br />  if exists(select * from CardInfo where CardID = @MyCardID)<br />  exec Proc_GetCardID @MyCardID output<br /> else<br />  break<br />  end<br /> insert into AccountInfo values(@CustName,@IDCard,@TelePhone,@Address)   <br /> select @MyCustID = CustID from AccountInfo where IDCard = @IDCard       <br /> insert into CardInfo values(@MyCardID,default,@MyCustID,@SaveType,default,@OpenMoney,@OpenMoney,default)<br /> print 'ž®Šæ•¬çš„å®¢æˆøP¼š' +@CustName +'å¼€æˆähˆåŠŸï¼Œå¡å·ä¸ºï¼š'+@MyCardId</p> <p>print 'äº§ç”Ÿçš„éšæœºå¡å·äØ“åQ? + @MyCardID<br /> exec Proc_OpenAcount '白骨¾_?,'245687556977812345','12478964568'<br /> exec Proc_OpenAcount '嫦娥公主','745687476912812335','14796653141',@Address = '月亮'</p> <p>----销æˆ?br /> if exists(select * from sysobjects where name = 'Proc_DropAcount')<br />     drop procedure Proc_DropAcount<br /> go<br /> create procedure Proc_DropAcount<br />  --@CardID varchar(19)<br /> @IDCard varchar(18) --íw«ä†¾è¯å·<br /> as<br /> declare @TempCustID int<br /> declare @TempLeftMoney money<br /> --select @TempCustID = CustID from CardInfo where CardID = @CardID  <br /> --select @TempLeftMoney = LeftMoney from CardInfo where CardID = @CardID <br /> print '该帐户余额:' +convert(varchar(10),@TempLeftMoney)+'正在取出。。ã€?<br /> delete from CardInfo where custid in(select custid from accountinfo where IDCard=@IDCard)<br /> delete from  AccountInfo where IDCard=@IDCard<br /> go<br /> declare @CardID varchar(19)<br /> select @CardID = CardID from CardInfo where CustID in(select CustID from AccountInfo where CustName = '唐僧')<br /> exec Proc_DropAcount '422322001902140019'--æ ÒŽ®íw«ä†¾è¯å·åˆ é™¤<br /> go<br /> ---表的查看<br /> select * from AccountInfo<br /> select * from CardInfo</p> <img src ="http://www.aygfsteel.com/zhukuanglong/aggbug/237873.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/zhukuanglong/" target="_blank">矿矿</a> 2008-10-31 19:31 <a href="http://www.aygfsteel.com/zhukuanglong/archive/2008/10/31/237873.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA 新手学习åQ?3åQ‰[˜qžè²]http://www.aygfsteel.com/zhukuanglong/archive/2008/10/26/236752.html矿矿矿矿Sun, 26 Oct 2008 13:04:00 GMThttp://www.aygfsteel.com/zhukuanglong/archive/2008/10/26/236752.htmlhttp://www.aygfsteel.com/zhukuanglong/comments/236752.htmlhttp://www.aygfsteel.com/zhukuanglong/archive/2008/10/26/236752.html#Feedback0http://www.aygfsteel.com/zhukuanglong/comments/commentRss/236752.htmlhttp://www.aygfsteel.com/zhukuanglong/services/trackbacks/236752.html¾cÕd’Œå¯¹è±¡åQ?br />  ¾c»ï¼šä¸»è§‚抽象åQŒæ˜¯å¯¹è±¡çš„æ¨¡æ¿ï¼Œå¯ä»¥å®žä¾‹åŒ–对è±?br />   ä¹ æƒ¯ä¸Šç±»çš„定义格式:
   package xxx;  
   import xxx;  
   public class Xxxx{
    å±žæ€?······;
    
    æž„造器 ······;
    
    æ–ÒŽ³• ······;
   }

  å®šä¹‰å±žæ€§ï¼šå®žä¾‹å˜é‡
   æ ¼å¼åQš[ 修饰½W?]  ¾cÕdž‹ 变量å?nbsp; [ = ? ]
   å®žä¾‹å˜é‡å®šä¹‰åœ¨ç±»ä¸­ä½†åœ¨ä“Q何方法之外ã€?br />    å®žä¾‹å˜é‡æœ‰é»˜è®¤å€û|¼šå„种各样çš?ã€?同数¾l?
   å®žä¾‹å˜é‡çš„作用域臛_°‘在本¾cÕd†…部,受访问控制符的限制ã€?br />    åœ¨é‡åˆä½œç”¨åŸŸåQŒå®žä¾‹å˜é‡å’Œå±€éƒ¨å˜é‡å…è®¸æœ‰å‘½åå†²çªåQ?#8220;局部优å…?#8221;ã€?br />    
  å®šä¹‰æ–ÒŽ³•åQ?br />    æ ¼å¼åQ?[ 修饰½W?]  ˜q”回¾cÕdž‹ æ–ÒŽ³•å? 参数列表 ) [ throws  异常 ] { ······ }
   java中所有参数都是å€ég¼ é€’ã€?br />       å½“æ²¡æœ‰å€ÆD¿”回时åQŒè¿”回类型必™å»è¢«å®šä¹‰ä¸ºvoidã€?
   ˜q”回¾cÕdž‹å¿…须与方法名盔R‚»åQŒå…¶ä»–修饰符可以调换位置ã€?br />    
  æž„造器åQ?br />    åœ¨åˆ›å»ºå¯¹è±¡çš„˜q‡ç¨‹ä¸­è°ƒç”¨çš„æ–ÒŽ³•ã€?br />    æž„造器没有˜q”回¾cÕdž‹ã€?br />    æž„造器的名字与¾cÕdç›¸åŒã€?br />    æ ¼å¼ä¸ºï¼š[ 修饰½W?]  ¾cÕd( 参数列表 ){  }åQŒä¿®é¥°ç¬¦å¯ä»¥æ˜¯privateã€?protectedã€?default、private
   åœ¨ä¸€ä¸ªå¯¹è±¡çš„生成周期中构造器只用一‹Æ¡ï¼Œç”Þq³»¾lŸè‡ªåŠ¨è°ƒç”¨ï¼Œä¸å…è®¸æ‰‹å·¥è°ƒç”¨ã€?br />    ½E‹åºå‘˜æ²¡æœ‰æä¾›ä¸€ä¸ªæž„造器åQŒç³»¾lŸä¼šè‡ªåŠ¨æä¾›ä¸€ä¸ªæ— å‚çš„æž„é€ å™¨ã€?br />    èŽ·å¾—å¯¹è±¡çš„æ–¹å¼ï¼š
    é€šè¿‡newåQˆåœ¨å †ç©ºé—´ä¸­ç”Œ™¯·åˆ†é…½Iºé—´åQ‰ï¼Œnew ¾cÕd()åQŒå¯ä»¥é€šè¿‡˜q™ç§å½¢å¼æˆ–的一个对象,˜q™æ—¶çš„对象是无法使用åQŒå¿…™åÀLŠŠä»–çš„åœ°å€å­˜æ”¾˜q›ä¸€ä¸ªå¯¹è±¡å˜é‡æ‰èƒ½å¤Ÿä½¿ç”¨ã€?br />     ä¾‹å¦‚ åQ?br />      Car c=new Car();
   æ³¨æ„åQ?br />     æœ€å¥½åœ¨å†™ç±»æ—¶æä¾›ä¸€ä¸ªæ— å‚的构造器ã€?br />       
  this关键字:
   this是个隐式参数åQŒä»£è¡¨å½“前对è±?
    publie class Student{
     private String name;
     public void setName(String name){
      this.name=name;  //this.name为当前对象的成员变量
     }
    }
    
   å¦‚果某个构造方法的½W¬ä¸€ä¸ªè¯­å¥å…·æœ‰åŞ式this( ··· )åQŒé‚£ä¹ˆè¿™ä¸ªæž„造方法将调用同一¾cÖM¸­çš„其他构造方法ã€?br />    
          æ³¨æ„åQ?br />            åœ¨æž„造器中this(...)必须攑֜¨è¯¥æž„造器的第一行ã€?br />     this不能出现在静态方法里é?nbsp; 
 
 ¾c…R€å¯¹è±¡ã€å®žä¾‹ä¸‰è€…的关系åQ?br />   ¾c»ï¼šæ˜¯å¯¹è±¡çš„æ¨¡æ¿åQŒå¯ä»¥å®žä¾‹åŒ–对象
  å¯¹è±¡åQšç±»çš„个ä½?br />   å®žä¾‹åQšå®žçŽ°çš„å¯¹è±¡
  student s; 
  s=new student();
   å…¶ä¸­ Student为类åQŒs为对象,new Student()为实例,s赋值后也是实例了ã€?/p>

æ–ÒŽ³•重蝲åQ?br />  æ–ÒŽ³•名相同,参数表不同,不考虑˜q”回值类åž?但最好还是ä‹É˜q”回¾cÕdž‹ä¸€è‡?ã€?br />  ¾~–译器根据参敎ͼŒé€‰æ‹©ä¸€ä¸ªæ–¹æ³•,如果没有完全匚w…çš„,对于参数表采ç”?#8220;向上ž®Þp¿‘匚w…åŽŸåˆ™”åQŒä½†ä¸å…è®¸æ¨¡‹‚׃¸¤å¯ã€?br />  æ–ÒŽ³•重蝲屏蔽了一个对象的同一¾cÀL–¹æ³•由于参æ•îC¸åŒæ‰€é€ æˆçš„差异ã€?br />    
ž®è£…åQ?br />  ¾cȝš„属性加private修饰½W¦ï¼Œæ¥é™åˆ¶åªèƒ½å¤Ÿåœ¨ç±»çš„内部进行访问,有效的保护数据ã€?br />  å¯¹äºŽ¾cÖM¸­çš„私有属性,要对其给å‡ÞZ¸€å¯ÒŽ–¹æ³•getXxx()åQŒsetXxx()讉K—®¿Uæœ‰å±žæ€§ï¼Œä¿è¯å¯¹ç§æœ‰å±žæ€§çš„æ“ä½œçš„安全性ã€?br />  æ–ÒŽ³•公开的是æ–ÒŽ³•的声明,卛_ª™åȝŸ¥é“参数和˜q”回值就可以调用该方法,隐藏æ–ÒŽ³•的实现的¾l†èŠ‚ã€?br />  ä¸€ä¸ªå¯¹è±¡å’Œå¤–界的联¾pÕdº”当通过一个统一的接口,应当公开的公开åQŒåº”当隐藏的隐藏ã€?br />   
¾l§æ‰¿åQ?br />  çˆ¶ç±»åˆ°å­¾cÀL˜¯ä»Žä¸€èˆ¬åˆ°ç‰ÒŽ®Šçš„å…³¾p…R€?br />   æ³›åŒ–åQšå°†ä¸åŒå­ç±»ä¸­çš„共性抽象成父类的过½E‹ã€?br />   ç‰¹åŒ–åQšåœ¨åŽŸæœ‰çˆ¶ç±»çš„åŸº¼‹€ä¸ŠåŠ å…¥ä¸€äº›ä¸ªæ€§çš„˜q‡ç¨‹ã€?br />   åŽŸåˆ™åQšçˆ¶¾cÀL”¾å…±æ€§ï¼Œå­ç±»æ”¾ä¸ªæ€§ã€?br />  ¾l§æ‰¿çš„关键字åQšextends
 Java只支持单¾l§æ‰¿åQšä¸€ä¸ªç±»æœ€å¤šåªæœ‰ä¸€ä¸ªç›´æŽ¥çš„父类ã€?/p>

      æ–ÒŽ³•覆盖åQ?br />   æ–ÒŽ³•名:相同
  å‚数表:相同
  è®‰K—®é™åˆ¶½W¦ï¼šç›¸åŒæˆ–者更å®?br />   ˜q”回值类型:相同或者子¾c»è¿”回的¾cÕdž‹æ˜¯çˆ¶¾c»è¿”回的¾cÕdž‹çš„子¾c»ï¼ˆåœ¨JDK5.0以后åQ?br />   æŠ›å‡ºçš„异常:不能比父¾cÀL›´å®½ã€?br />     
      super关键字:
  super()表示调用父类的构造器
  super()也和this()一样必™åÀL”¾åœ¨æ–¹æ³•çš„½W¬ä¸€å?br />   super()å’Œthis()不能同时出现        
  super可以屏蔽子类属性和父类属性重名时带来的属性遮盖,super. 表示调用父类的方法或属æ€?br />   åœ¨å­¾cÈš„æž„造器中如果没有指定调用父¾cȝš„哪一个构造器åQŒé‚£ä¹ˆå°±ä¼šè°ƒç”¨çˆ¶¾cÈš„æ— å‚构造器åQŒå³super()
  
 æ³¨æ„åQ?br />   çˆ¶ç±»çš„æž„造器不能被子¾cȝ‘ôæ‰?br />   æ–ÒŽ³•和属性可以被¾l§æ‰¿åQŒæƒé™ä¸é™åˆ¶èƒ½å¦¾l§æ‰¿˜q‡æ¥åQŒé™åˆ¶çš„æ˜¯èƒ½å¦ç›´æŽ¥è®¿é—?br />   å…ˆæž„造父¾c»ï¼ŒåŽæž„造子¾c»ï¼Œå…ˆthis后super
  
多态:
 å¤šæ€åˆ†ä¸ÞZ¸¤¿Uï¼š¾~–译时多态和˜qè¡Œæ—¶å¤šæ€ã€?br />   ¾~–译时类型:主观概念åQŒæŠŠå®ƒçœ‹ä½œä»€ä¹ˆã€?br />   ˜qè¡Œæ—¶ç±»åž‹ï¼šå®¢è§‚概念åQŒå®žé™…它是什么ã€?br />     ä¾‹ï¼šAnimal a=new Dog();
         æŒ‡ç€ç‹—é—®åQŒè¿™ä¸ªåŠ¨ç‰©æ˜¯ä»€ä¹ˆï¼Ÿ
         
      ˜qè¡Œæ—¶å¤šæ€çš„三原则:
  å¯¹è±¡¾cÕdž‹ä¸å˜ã€?br />   åªèƒ½å¯¹å¯¹è±¡è°ƒç”¨ç¼–译时¾cÕdž‹ä¸­å®šä¹‰çš„æ–ÒŽ³•ã€?br />   åœ¨ç¨‹åºçš„˜qè¡Œæ—Óž¼Œæ ÒŽ®å¯¹è±¡çš„运行时¾cÕdž‹åQŒæ‰¾è¦†ç›–后的æ–ÒŽ³•来调用。(˜qè¡Œæ—¶åŠ¨æ€ç±»åž‹ç»‘å®šï¼‰
  
      å¼ºåˆ¶¾cÕdž‹è½¬æ¢åQ?一定没有新对象生成ã€?父类的引用赋值给子类的引用需要进行强制类型è{æ?
      å…³é”®å­—:instanceof
           ç”¨æ³•åQšå¼•ç”?nbsp; instanceof  ¾cÕd    判断˜q™ä¸ªå¼•用所指向的对象是否属于这个类ã€?br />     ç”¨åœ¨å¼ºåˆ¶è½¬æ¢ä¹‹å‰åQŒé¿å…ç±»åž‹è{换异常ã€?br />    if(a instanceof Dog){
    Dog d=(Dog)a;
   }
   
 å¤šæ€çš„作用åQšæŠŠä¸åŒçš„å­¾cÕd¯¹è±¡éƒ½å½“作父类来看åQŒå¯ä»¥å±è”½ä¸åŒå­¾cÕd¯¹è±¡ä¹‹é—´çš„差异åQŒå†™å‡ºé€šç”¨çš„代码,做出通用的编½E‹ï¼Œä»¥é€‚应需求的不断变化ã€?/p>

]]>
变量--新手学习åQ?2åQ‰[˜qžè²]http://www.aygfsteel.com/zhukuanglong/archive/2008/10/20/235555.html矿矿矿矿Mon, 20 Oct 2008 14:43:00 GMThttp://www.aygfsteel.com/zhukuanglong/archive/2008/10/20/235555.htmlhttp://www.aygfsteel.com/zhukuanglong/comments/235555.htmlhttp://www.aygfsteel.com/zhukuanglong/archive/2008/10/20/235555.html#Feedback0http://www.aygfsteel.com/zhukuanglong/comments/commentRss/235555.htmlhttp://www.aygfsteel.com/zhukuanglong/services/trackbacks/235555.html局部变量:不是声明在类体括号里面的变量
 (1)必须要先赋å€û|¼ŒåŽä‹É用,否则通不˜q‡ç¼–译,局部变量没有默认初始化å€?br />  (2)作用范围åQšå®šä¹‰å¼€å§‹åˆ°å®šä¹‰å®ƒçš„代码块结æ?br />  (3)同一范围内,不允è®?个局部变量命名冲½H?/p>

 å‚数传递时åQŒç®€å•ç±»åž‹è¿›è¡Œå€ÆD{é€?nbsp;(参数˜q›è¡Œä¼ é€’时都会先去栈中生成一个副本的åQŒä‹É用结束后释放)
 
自动¾cÕdž‹æå‡åQ?br />  byte a = 1;
 byte b = 2;
 a = a+b;          //¾~–译出错自动¾cÕdž‹æå‡æˆint
 a += b;       //自加没有自动¾cÕdž‹æå‡é—®é¢˜
 ¾cÕdž‹è‡ªåŠ¨æå‡è§„åˆ™åQ?br />   aå’Œb作某¿Uè¿½Ž?br />   aå’Œb中有doubleåQŒç»“果就是double
  aå’Œb中有floatåQŒç»“果就是float
  aå’Œb中有longåQŒç»“果就是long
  é™¤æ­¤ä¹‹å¤–åQŒç»“果都是int
 æŠŠé«˜å­—节转成低字èŠ?需要作强制¾cÕdž‹è½¬æ¢. byte c=(byte)a+b;
 
¿UÖM½˜qç®—½W¦ï¼šæ•ˆçŽ‡æœ€é«?br />  >>   有符号右¿U»ï¼Œè¡¥ç¬¦å·ä½
  ¿U»è´Ÿæ•îC½åQŒåˆ™ž®†è¯¥æ•°å€¼åŠ 32后再˜q›è¡Œ¿UÖM½
  æ•°å€¼çš„2˜q›åˆ¶æ˜¯æŒ‰ç…§è¡¥ç ä¿å­˜çš„
 >>>  右移后高位都è¡?
 
逻辑˜qç®—½W¦ï¼š
 &/|也可以作为逻辑˜qç®—½W?br />  && å…ˆåˆ¤æ–­å‰é¢ä¸€ä¸ªæ¡ä»Óž¼Œå¦‚果为假åQŒåˆ™ä¸ç”¨è®¡ç®—后一个条ä»?br />  || å…ˆåˆ¤æ–­å‰é¢ä¸€ä¸ªæ¡ä»Óž¼Œå¦‚果为真åQŒåˆ™ä¸ç”¨è®¡ç®—后一个条ä»?br />  
" + "˜qç®—½W¦ï¼š
 ä¸¤ä¸ªæ“ä½œçš„对象是数值时åQŒæ˜¯åŠ æ³•
 å¦‚果有一个是字符串时åQŒåˆ™æ˜¯å­—½W¦ä¸²çš„连æŽ?br />  
‹¹ç¨‹æŽ§åˆ¶è¯­å¥åQ?br />  åŒCore C++
 switch中的变量¾cÕdž‹åªèƒ½æ˜¯byteã€?short、int、char四种¾cÕdž‹
 
数组åQ?br />  å£°æ˜Žæ•°ç»„åQ?nbsp; 
  æ•°ç»„能以下列形式声明åQ?br />    ¾cÕdž‹[] array;
   ¾cÕdž‹ array[]; 
  æ³¨ï¼š
   JAVA中推荐用åQšç±»åž‹[] array;
   ä¸€ä¸ªæ•°¾l„是一个对è±?br />    å£°æ˜Žä¸€ä¸ªæ•°¾l„没有创å»ÞZ¸€ä¸ªå¯¹è±?br />    å£°æ˜Žæ—¶ä¸ç”¨æŒ‡å®šé•¿åº?br />    
 åˆ›å¾æ•°ç»„åQ?br />   åˆ›å¾åŸºæœ¬æ•°æ®¾cÕdž‹æ•°ç»„åQšint[] i = new int[2];
  åˆ›å¾å¼•用数据¾cÕdž‹æ•°ç»„åQšStudent[] s = new Student[100];
  æ•°ç»„创徏后其中的元素有初始å€?br />    ¾cÕdž‹                     黙认å€?
   byte                      0
   short                     0
   int                       0
   long                      0l
   float                     0.0f
   double                   0.0d
   char                      \u0000
   boolean                 false
   reference types     null
  æ³¨ï¼š
   åˆ›å¾æ—¶ä¸€å®šè¦æŒ‡å®šé•¿åº¦
   int[] i2=new int[];            //error
   
 åˆå§‹åŒ–æ•°¾l„:
  å£°æ˜Žã€åˆ›å»ºã€åˆå§‹åŒ–分开åQ?
   int[] i;   //定义数组
   i = new int[2];  //分配½Iºé—´
   i[0] = 0;    //初始åŒ?br />    i[1] = 1;
   
  å£°æ˜Žã€åˆ›å»ºã€åˆå§‹åŒ–在同一旉™—´ åQ?br />    int[] i = {0,1};   //昄¡¤ºåˆå§‹åŒ?nbsp; {}中有几个å€?则数¾l„é•¿åº¦äØ“å‡?br />    Student[] s = {new Student(),new Student()};
   
  æ³¨ï¼š int[] i=new int[]{1,2,3};      //后面[]中不可以写数å€?br />    int[] i1=new int[3]{1,2,3};    //error
   
 äºŒç»´æ•°ç»„åQ?其实是一个一¾l´æ•°¾l„,它的每一个元素又是一个一¾l´æ•°¾l?
  int[][] i1 = new int[2][3];
  int[][] i4 = {{1,1,1},{2,2,2},{3,3,3}};
  int[][] i3 = new int[][3];  //不允讔R«˜¾l´æ²¡åˆ†é…½Iºé—´è€Œå…ˆ¾l™ä½Ž¾l´åˆ†é…ç©ºé—?br />   int[][] i2 = new int[2][];
  i2[0] = new int[2];
  i2[1] = new int[3];    
  
 æ•°ç»„长度åQ?br />   æ•°ç»„的属性length
  æ•°ç»„长度一旦确å®?不可改变    
  int[] i = new int[5]; 则i.length= 5
  
 æ•°ç»„拯‚´åQ?br />   ¾pȝ»Ÿ¾c»System提供çš?br />   static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
   srcåQ?源数¾l?nbsp; 
   srcPosåQ?从源数组哪个位置开始拷è´?位置指的是元素的下标)
   deståQ?目标数组
   destPosåQ?拯‚´çš„元素放到目标数¾l„的起始位置
   lengthåQ?拯‚´å¤šå°‘ä¸?br />    
 æ•°ç»„排序åQ?br />   è‡ªå·±å®žçŽ°ä¸€ä¸ªæŽ’åºæ–¹æ³•æ¥˜q›è¡ŒæŽ’序
  æˆ–者调用java.util.Arrays.sort(Object o)



]]>
配置java环境变量(新手学习01)http://www.aygfsteel.com/zhukuanglong/archive/2008/10/14/234298.html矿矿矿矿Tue, 14 Oct 2008 11:44:00 GMThttp://www.aygfsteel.com/zhukuanglong/archive/2008/10/14/234298.htmlhttp://www.aygfsteel.com/zhukuanglong/comments/234298.htmlhttp://www.aygfsteel.com/zhukuanglong/archive/2008/10/14/234298.html#Feedback0http://www.aygfsteel.com/zhukuanglong/comments/commentRss/234298.htmlhttp://www.aygfsteel.com/zhukuanglong/services/trackbacks/234298.htmlJAVA_HOMEåQšé…¾|®JDK的目å½?br />  CLASSPATHåQšæŒ‡å®šåˆ°å“ªé‡ŒåŽÀL‰¾˜qè¡Œæ—‰™œ€è¦ç”¨åˆ°çš„¾cÖM»£ç ï¼ˆå­—节码)
 PATHåQšæŒ‡å®šå¯æ‰§è¡Œ½E‹åºçš„位¾|?br />  
 LINUX¾pȝ»ŸåQˆåœ¨" .bash_profile "下的环境变量讄¡½®åQ?br />   JAVA_HOME=/opt/jdk1.5.0_06
  CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
  PATH=$PATH:$JAVA_HOME/bin:.
  export JAVA_HOME CLASSPATH PATH     (ž®†æŒ‡å®šçš„环境变量声明为全局çš?
   
 windows¾pȝ»ŸåQ?br />   å›_‡»æˆ‘的电脑-->属æ€?->高çñ”-->环境变量
  
Java的运行过½E‹ï¼š
 ¾~–译åQšç”Ÿæˆå¯æ‰§è¡Œæ–‡äšgåQŒå¦‚C++中利用g++生成a.outåQŒæ•ˆçŽ‡é«˜åQŒä½†ä¸è·¨òq›_°
 è§£é‡ŠåQšè§£é‡Šå™¨æŠŠæºæ–‡äšg逐行解释åQŒè·¨òq›_°ä½†æ•ˆçŽ‡ä¸é«?br />  
 åœ¨java中:先编译后解释åQŒæŠŠ.javaæ–‡äšg¾~–译æˆ?class字节码文ä»?br />   Java源代码文ä»?.javaæ–‡äšg)--->
  Java¾~–译å™?javac)--->
  Java字节码文ä»?.classæ–‡äšgåQŒåã^台无关的)--->
  Java解释å™?java)åQŒæ‰§è¡ŒJava字节ç ?/p>

Java的垃圑֛žæ”Óž¼š
 ç”׃¸€ä¸ªåŽå°çº¿½E‹gc˜q›è¡Œåžƒåœ¾å›žæ”¶
 è™šæ‹Ÿæœºåˆ¤å®šå†…存不够的时候会中断代码的运行,˜q™æ—¶å€™gc才进行垃圑֛žæ”?br />  ¾~ºç‚¹åQšä¸èƒ½å¤Ÿ¾_„¡¡®çš„去回收内存
 java.lang.System.gc(); å»ø™®®å›žæ”¶å†…å­˜åQŒä½†¾pȝ»Ÿä¸ä¸€å®šå›žåº”,他会先去看内存是否够用,够用则不予理睬,不够用才会去˜q›è¡Œåžƒåœ¾å›žæ”¶
 å†…存中什么算是垃圾:
  ä¸åœ¨è¢«å¼•用的对象(局部变量,没有指针指向çš?
  
java的安全性:
 æ²™ç®±æœºåˆ¶åQšåªèƒ½åšæ²™ç®±å…è®¸çš„æ“ä½?br />  é€šè¿‡ä¸‹é¢çŽ¯èŠ‚åQŒå®žçް安å…?br />   åŠ è²æœ‰ç”¨çš„ç±»æ–‡äšgåQŒä¸éœ€è¦çš„不加è½?br />   æ ¡éªŒå­—节码,查看允许的操ä½?br />    æŸ¥çœ‹ä»£ç å’Œè™šæ‹Ÿæœºçš„特性是否相½W?br />    æŸ¥çœ‹ä»£ç æ˜¯å¦æœ‰ç ´åæ€?br />    æŸ¥çœ‹æ˜¯å¦æœ‰è¿è§„操作,如越ç•?br />    æŸ¥çœ‹¾cÕdž‹æ˜¯å¦åŒšw…åQŒç±»åž‹è{换是否能正确执行
   
源程序:
 package mypack;  //相当于一个目å½?br />  
 public class HelloWorld{
  public static void main(String[] args){
   System.out.println(“Hello World”);
  }
 }
 æ³¨ï¼š
  1、文件名必须和public修饰的类名一è‡ß_¼Œä»?javaä½œäØ“æ–‡äšg后缀åQŒå¦‚果定义的¾cÖM¸æ˜¯public的,则文件名与类名可以不同ã€?br />   2、一ä¸?javaæ–‡äšg中可以有多个classåQŒä½†æ˜¯åªæœ‰ä¸€ä¸ªpublic修饰的类ã€?br />   3、java源代码文件编译后åQŒä¸€ä¸ªç±»å¯¹åº”生成一ä¸?classæ–‡äšg
  4、一个java应用½E‹åºåº”该包含一个main()æ–ÒŽ³•åQŒè€Œä¸”其签名是固定的,它是应用½E‹åºçš„入口方法,可以定义在ä“Q意一个类中,不一定是public修饰的类
  ¾~–译åQšjavac -d . HelloWorld.java
   å«æœ‰åŒ…çš„¾c»ï¼Œåœ¨ç¼–译的时候最好用上面的格式,-d指的是让该类生成的时候按照包¾l“æž„åŽÈ”Ÿæˆï¼Œ" . "指的是在当前路径下生æˆ?br />    å¦‚果不用上面的格式,也可以用javac HelloWorld.javaåQŒä½†æ˜¯éœ€è¦æ³¨æ„çš„æ˜¯åŒ…¾l“æž„ž®Þp¦ç”Þp‡ªå·±åŽ»å»ºç«‹åQŒç„¶åŽå°†ç”Ÿæˆçš?classæ–‡äšg攑ֈ°è¯¥ç›®å½•下
  æ‰§è¡ŒåQšjava mypack.HelloWorld
   ž®†å­—节码文äšg交给Java虚拟机去解释执行
   éœ€è¦æ³¨æ„çš„事,必须使用包名.¾cÕdåŽ»è§£é‡Šæ‰§è¡?br />    
åŒ?package)åQšæŠŠæºæ–‡ä»¶æ”¾åœ¨ç›®å½•ä¸‹
 ç”׃ºŽå·¥ç¨‹çš„需要,ž®†ä¸åŒçš„æºæ–‡ä»¶æ”¾åœ¨ä¸åŒçš„目录下,从而引入了包ã€?br />  åŒ…可以看作就是一个存放java源文件的目录ã€?br />  åœ¨æºç ä¸­å£°æ˜Žä¸€ä¸ªåŒ…名:package p;(只能攑֜¨½W¬ä¸€è¡Œï¼Œä¸”最多只能是一è¡?
 å¦‚果指定多层包,那么在包名之间我们可以用.ä½œäØ“åˆ†éš”½W¦ï¼špackage p1.p2.p3.p4;
 ç”?#8220;javac HelloWorld.java –d ¾lå¯¹è·¯å¾„”åQŒç¼–译后生成的字节码文äšgž®×ƒ¼šæ”‘Öœ¨æŒ‡å®šçš„包¾l“æž„ä¸?br />  æ‰§è¡Œè¯¥ç¨‹åºéœ€è¦ç”¨" java 包名.¾cÕd "
 å¼•进包中的某个类åQšimport 包名.¾cÕd;
 å¼•进包中的所有类åQšimport 包名.*;
   
注释åQ?br />  // å•行注释åQ?到本行结束的所有字½W¦ä¼šè¢«ç¼–译器忽略
 /* */ å¤šè¡Œæ³¨é‡ŠåQ?nbsp; åœ?*  */之间的所有字½W¦ä¼šè¢«ç¼–译器忽略
 /**  */   æ–‡æ¡£æ³¨é‡ŠåQ?javaç‰ÒŽœ‰çš„,åœ?**  */之间的所有字½W¦ä¼šè¢«ç¼–译器忽略
 å¯ä»¥ç”¨javadoc把java源程序中˜q™ç§æ³¨é‡ŠæŠ½å–出来形成html™åµé¢(只有写在包,¾c»ï¼Œå±žæ€§ï¼Œæ–ÒŽ³•åQŒæž„造器åQŒå¼•入之前的注释才可以进行抽å?
    
标识½W¦ï¼š
 å‘½åè§„则åQ?br />   (1) 由字母、数字、下划线ã€?¾l„成åQŒä¸èƒ½ä»¥æ•°å­—å¼€å¤?br />   (2) 大小写敏æ„?br />   (3) 不得使用java中的关键字和保留å­?br />  
 å…³é”®å­—:都是ž®å†™çš„,jdk1.2多了strictfp(¾lå‡†‹¹®ç‚¹åž?åQŒå…³é”®å­— jdk1.4多了assert(断言)关键字,  jdk1.5多了enum(æžšä‹D) 关键å­?br />   éšç€å­¦ä¹ ˜q›åº¦åQŒä¼šæ…¢æ…¢æŽ¥è§¦åˆ°çš„
  true、false、null严格说不应该½Ž—关键字åQŒåº”¿U°å…¶ä¸ÞZ¿ç•™å­—更合é€?br />  
 ä¹ æƒ¯åQ?br />   (1) 标识½W¦è¦½W¦åˆè¯­ä¹‰ä¿¡æ¯
  (2) 包名所有字母小å†?br />   (3) ¾cÕdæ¯ä¸ªå•词首字母大写,其它ž®å†™ //TarenaStudent
  (4) 变量和方法:½W¬ä¸€ä¸ªå•词小写,从第二个单词开始首字母大写 //tarenaStudent
  (5) 帔R‡åQšæ‰€æœ‰å­—æ¯å¤§å†™ï¼Œæ¯ä¸ªå•è¯ä¹‹é—´ç”? _ "˜qžæŽ¥
  
基本数据¾cÕdž‹åQ?¿U?br />  1) æ•´åž‹
  byte       1B  8ä½?nbsp;      -128åˆ?27
  short      2B  16ä½?nbsp;     -2^15åˆ?2^15)-1
  int          4B  32ä½?nbsp;     -2^31åˆ?2^31)-1
  long        8B  64ä½?nbsp;     -2^63åˆ?2^63)-1
 2) ‹¹®ç‚¹¾cÕdž‹
  float        4B   32ä½?nbsp;     
  double     8B   64ä½?
 3) 字符¾cÕdž‹
    char       2B 16ä½? 
 4) 布尔åž? 1B
  boolean    false/true
  
 æ³¨ï¼š
  1、Java中的自动¾cÕdž‹æå‡é—®é¢˜ã€?br />    1)、正向过½E‹ï¼šä»Žä½Žå­—节到高字节可以自动转换ã€?br />     byte->short->int->long->float->double
   2)、逆向˜q‡ç¨‹åQšä»Žé«˜å­—节到低字节用强制¾cÕdž‹è½¬æ¢ã€?br />     ä¾‹ï¼šint a = (int)4.562åQ?br />     æ³¨ï¼šé€†å‘转换ž®†ä¸¢å¤Þq²¾åº¦ã€?br />    2、booleanåQšåªæœ‰trueå’Œfalseã€?br />    3、charåQšJava中用" \u四位十六˜q›åˆ¶çš„æ•°å­?(即ä‹É在注释中出现\uåQŒåŽé¢å¦‚果跟的不æ˜?个数字,也会报错)"表示ž®†å­—½W¦è{换成对应的unicode¾~–码åQŒå­—½W¦ç±»åž‹è¦ç”¨å•引号括è“v来ã€?br />    4、黙认æÕQç‚¹ç±»åž‹äØ“doubleåQŒfloat数据¾cÕdž‹æœ‰ä¸€ä¸ªåŽ¾~€ä¸? f "æˆ? F "ã€?br />    5、long¾cÕdž‹æœ‰ä¸€ä¸ªåŽ¾~€åQŒäØ“" l " 或è€? L "
 
引用数据¾cÕdž‹åQ?br />  ¾c…R€æŽ¥å£ã€æ•°¾l?br />  å¼•用¾cÕdž‹ 变量å?= new 引用¾cÕdž‹å?参数);  //new后面一般跟的都是类的构造器
 æˆå‘˜åQšå†™åœ¨ç±»ä½“括号里面的
 
内存½Iºé—´çš„分配:
 å†…å­˜åˆ†äØ“åQ?br />   æ ˆï¼šå­˜æ”¾½Ž€å•数据类型变é‡?值和变量名都存在栈中)åQŒå­˜æ”‘Ö¼•用数据类型的变量名以及它所指向的实例的首地址
  å †ï¼šå­˜æ”¾å¼•用数据¾cÕdž‹çš„实ä¾?/p>

]]>
中国软äšg商机的“金角银边草肚皮”[转]http://www.aygfsteel.com/zhukuanglong/archive/2008/10/09/233417.html矿矿矿矿Thu, 09 Oct 2008 11:01:00 GMThttp://www.aygfsteel.com/zhukuanglong/archive/2008/10/09/233417.htmlhttp://www.aygfsteel.com/zhukuanglong/comments/233417.htmlhttp://www.aygfsteel.com/zhukuanglong/archive/2008/10/09/233417.html#Feedback0http://www.aygfsteel.com/zhukuanglong/comments/commentRss/233417.htmlhttp://www.aygfsteel.com/zhukuanglong/services/trackbacks/233417.html 

在中国,做èÊY件是当今最旉™«¦çš„事情,但做软äšg早已不仅仅是商业åQŒè€Œå·²¾lä¸Šå‡äؓ一门艺术;早已¾lä¸æ˜¯çœŸæ­£æžè½¯äšgçš„äh独占的地盘,而是融入房地产商、硬件厂商、服务商、各¾cÀLŠ•æœø™€…等三教九流无所不包的社会大‹‚‹å±€ã€‚  昄¡„¶åQŒè¿™æ˜¯ä¸€‹Æ¡å‡ åå¹´ä¸é‡çš„æ”¿½{–机遇,其最大ä­hå€ég¸åœ¨äºŽçœŸæ­£çš„èÊYä»¶äñ”业本íw«ï¼Œä¸åœ¨äºŽèÊY件业务本íw«ã€‚因为真正的中国软äšg市场现在撑死也就200个亿åQŒè€Œä¸”大部åˆ?2åQ?以上)由国外èÊY件公司所占有。但是,˜q™æ¬¡ä»¥èÊYä»¶äØ“åä¹‰çš„çƒ­æ½®ï¼Œå…¶è°ƒåŠ¨å’Œè½¬ç§»çš„èƒ¦å¯Œå’Œèµ„æºåQŒæ˜¯åƒäº¿ç”šè‡³ä¸‡äº¿è®¡çš„åQŒæ˜¯è½¯äšg业本íw«çš„1ï½?个数量çñ”以上åQŒç”šè‡³ä¹Ÿæ˜¯å‡ òq´å‰äº’联¾|‘热潮的2ï½?个数量çñ”以上。这是所有试图把握èÊY件机遇的人,必须首先判明的方向性问题ã€?
ã€€ã€€æˆ‘ä»¬å€Ÿç”¨å›´æ£‹çš„æœ¯è¯­ï¼Œå¯ä»¥æŠŠå•†æœºåˆ’åˆ†äØ““金角银边草肚çš?#8221;åQŒé²œæ˜Žåœ°åˆ†æžå¦‚下åQ?
  1、金角:最软的高科技和最土的房地产,鲜花插牛¾_ªä¹Ÿå¥½ï¼Œå¤©é€ ä¸€åŒåœ°é…ä¸€å¯¹ä¹Ÿå¥½ï¼Œåæ­£ä»ŠåŽä»Šå¹´ä»–们都将如胶似漆åQä»¥è½¯äšg的名义,全国各省市,各区厉Kƒ½ž®†æœ‰æˆåƒä¸Šä¸‡äº©çš„土地¾UïLº·æˆäؓ软äšg园,˜q™æ— ç–‘是房地产的大好机遇。因此,各地的èÊYä»¶å›­å’ŒèÊY件学院,以及其他以èÊY件名义腾出的地皮åQŒæ˜¯˜q™åœºè½¯äšg热潮的ä­h值核心ã€?
  2、银边:政策效应的最æ ÒŽœ¬ç‰¹ç‚¹ž®±æ˜¯å…¨å›½ä¸Šä¸‹ä¼šäº‰å…ˆæåŽï¼Œä¸€é½è·Ÿ˜q›ã€‚上上下下都会响应号召,出台各种扶持政策。包括税收减免、资金投入以及其他优先政½{–,都可以åŞ成不菲的政策资源。这些资源利用得当也可以及时转化为真金白银。因此,如果几年之内åQŒå…¨å›½çš„¼‹¬äšg公司、IT服务公司甚至其他行业的公司,全部或者大多都转变成èÊY件公司,你也不要大惊ž®æ€ªã€‚只要真正有利益。èÊY件业全国上下大繁荣,也是可以期待的。当ç„Óž¼Œ˜q™æ˜¯ä¸­å›½“特色”çš„èÊY件业åQŒæ˜¯˜qœè¿œ­‘…越了国际上一般标准的软äšg概念ã€?
  3、草肚皮åQšå¤§èŽ·å…¶åˆ©çš„å¾ˆå°‘æ˜¯çœŸæ­£çš„è½¯äšg公司。因为那些一门心思搞软äšgçš„ähåQŒå¤§å¤šç¬¨æ‰‹ç¬¨è„šã€‚热潮之下,供需严重å¤Þp¡¡åQŒèÊYä»¶äh才几òq´åŽå¾ˆå¯èƒ½æ“Ü为青菜萝卜一栗÷€‚不˜q‡ï¼Œé‚£äº›çœŸæ­£ä¸€å¤´æ‰Ž˜q›èÊYä»Óž¼ŒçœŸçš„做成软äšg公司åQŒä¹Ÿå¯èƒ½ä¸é”™çš„。虽ç„Óž¼Œéšç€è½¯äšg公司˜q…速繁衍,真的假的都来争夺有限的市场,竞争˜q›ä¸€æ­¥æ¿€åŒ–,十分辛苦。但是,现在哪一行不辛苦åQŸå¦‚果定位准¼‹®ï¼ŒçœŸçš„能够一不留¼œžåšæˆã€åšå¤§ï¼Œç„¶åŽèžèµ„上市åQŒä¹Ÿæ˜¯ä¸€æ­¥ç™»å¤©ã€?
  由此åQŒæ‰€æœ‰èµ¶æ½®èÊY件的人,从高åˆîC½ŽåQŒå¯ä»¥åˆ†ä¸ÞZ¸‰¾c»ï¼šæœ€ä¸Šç­‰æ˜?#8220;为地皮而èÊYä»?#8221;åQŒä¸­é—´æ˜¯“为政½{–而èÊYä»?#8221;åQŒæœ€ä¸‹ç­‰æ˜?#8220;䏸™ÊY件而èÊYä»?#8221;åQŒæž„成了食物铄¡š„金字塔。与国内其他行业的政½{–造市的基本规律没有本质差异ã€?
  面对软äšg热潮中的一些不和谐现象åQŒæˆ‘们没有必要只从消极和负面的角度来评判。毕竟,在这股热潮中åQŒå‡ä½œçœŸæ—¶å‡ä¹ŸçœŸåQŒèÊY件业之外的庞大资源肯定会有一ž®éƒ¨åˆ†è¦è½¬åŒ–到èÊYä»¶äñ”业。由于资源总量庞大åQŒæœ‰ç™‘Öˆ†ä¹‹ä¸€æˆ–者百分之几的转化åQŒå¯¹äºŽèÊY件业来说åQŒå°±æ˜?#8220;久旱逢甘é›?#8221;åQŒå°±æ˜¯æžå¤§çš„æ”¯æŒã€‚比如以国内软äšg园圈地最为成功的托普ä¸ÞZ¾‹åQŒå®ƒåœ¨å…¨å›½çš„几十个èÊY件园都是不错的房åœîCñ”™å¹ç›®åQŒè¿ä½œå¾—当,利润十分丰厚。拿å‡ÞZ¸€ž®éƒ¨åˆ†åˆ©æ¶¦æ¥æŠ•入软äšgåQŒè¡¥è´´èÊYä»Óž¼Œå‡ å¹´ä»¥åŽä¸€ä¸ç•™¼œžä¹Ÿä¼?#8220;培育”出真正的软äšg业务。毕竟,大家打的都是“软äšg”çš„æ——åøP¼Œå®Œå…¨æ²¡æœ‰è½¯äšgåQŒè¿™ä¸ªç¾Žå¦™çš„æ¸¸æˆä¹Ÿæ˜¯éš¾ä»¥ä¸ºç‘ô的。这一切æ€ÀL¯”那些¾U¯çÑa的房åœîCñ”商要好一些!
  因此åQŒåƒç€æˆ¿åœ°äº§çš„剩饭åQŒèÊY件也可能一点点长大成ähã€‚èµ°å‡ø™¿‡é—¨ï¼Œèµ°å‘世界åQ›æŒ‘战微软,打èÓ|印度åQŒä¹Ÿä¸æ˜¯å®Œå…¨æ²¡æœ‰å¯èƒ½ã€‚市场就是一个追逐利益最大化的棋局åQŒæ¶ˆæžçš„æ‰¹è¯„作用和意义不大。不如,我们正视现实åQŒæ‰¿è®¤ç§¯æžã€æ­£é¢çš„æ•ˆåº”åQŒå¦ç„¶åº”对这场势不可当的大热潮ã€?
  æ€ÖM¹‹åQŒæ”¿½{–å·²¾läؓ我们布好了巨大的‹‚‹ç›˜åQŒè‡³äºŽå¦‚何布局和下子,那就是一个各昑օ¶èƒ½çš„æ—¶å€™ã€‚我们当然真诚希望,那些真正有心推动中国软äšg业发展的人士åQŒèƒ½å¤Ÿè®¤æ¸…åŞ势,攑ּ€æ€èµ\。在˜q™åœºå¤§è§„模的财富与资源è{¿UÖM¸­åQŒä¸è¦å¤ªå›ºå®ˆæˆè§åQŒåº”攑ּ€æ‰‹è„šåQŒäº‰å–获得尽可能多的利益åQŒä‹É中国软äšg得到更好的推动ã€?img id="paperPicArea1" style="display: none; position: relative" src="http://imgcache.qq.com/ac/b.gif" alt="" />

]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º éŽ­ÏØ| °²ÈûÏØ| ÎߺþÏØ| ¿Æ¼¼| ÆÎÌïÊÐ| ±¨¼Û| ½òÊÐÊÐ| °¢À­¶ûÊÐ| ÇßÑôÊÐ| ÏæÌ¶ÊÐ| ºâÄÏÏØ| ÇɼÒÏØ| °¢°ÓÏØ| ËçµÂÏØ| äØÌ¶ÏØ| ƽÒõÏØ| ÓÀ·áÏØ| ÀæÊ÷ÏØ| ÑÓ±ß| ³àË®ÊÐ| ÎäÄþÏØ| ¹ãÆ½ÏØ| ÑôÉ½ÏØ| ÚüÖÝÊÐ| ×ñÒåÏØ| °×ɽÊÐ| ÉäºéÏØ| ÇåÔ·ÏØ| ¹óÄÏÏØ| ½¨²ýÏØ| ¹ÅÝþÏØ| ÎÚÇ¡ÏØ| ͨÖÝÇø| °²Í¼ÏØ| ¹ã¶«Ê¡| ÑôÉ½ÏØ| ×ó¹±ÏØ| ¸®¹ÈÏØ| °¢ºÏÆæÏØ| »ô³ÇÏØ| ÊæÀ¼ÊÐ|