在java算法(Scott robert ladd)中看到快速傅立葉變換,講的很詳細,摘錄下來跟大家分享!
以下正文:
FFT或許是已知的最有效的算法,他應(yīng)用范圍廣。從信號的處理到數(shù)據(jù)壓縮到地震分析和圖形放大,F(xiàn)FT通過領(lǐng)域間的信息轉(zhuǎn)換
提供了一個強有力的工具,本節(jié)講討論FFT如何改進多項式乘法的性能:
到目前為止,我用系數(shù)形式表示多項式,但有些應(yīng)用程序最適合用point-value形式表示多項式,任何多項式都可被n個點值
對來表示,這里,value是多項式在給定點point的值,許多數(shù)學(xué)應(yīng)用要使用FFT實現(xiàn)點值和系數(shù)之間的快速變換。
兩個多項式A和B快速相乘的過程如下:
1,用同一組值把A和B從十形式轉(zhuǎn)換為點值形式pA和pB。
2。pA和pB對應(yīng)的點值相乘,得到pC。
3。對pC進行插值得到系數(shù)多項式C,他等于A乘上B。
表面上看,上述算法比在mul中使用之際相乘并不高效--卻更復(fù)雜,選擇合適的計算值可以使點-值乘法非常快。
public class PolynomialFFTextends polynomial
{
//utility field
final protected static Complex p|2|=new Complex(0.0D,6.283185307179586D);
//utility methods
protected static int log2(int n)
{
int x=1;
int c=0;
while(true)
{
if (x>=n) break;
++c;
x<<=1;
if (x==0) break;
}
return c;
}
protected static int FlipBits(int k,int bits)
{
int lm=1<<(bits-1);
int rm=1;
int r=0;
while (lm != 0)
{
if ((k&rm)!=0)
{
r|=lm;
lm>>=1;
rm<<=1;
}
}
return r;
}
};
//increase degree to power of two
protected static PolynomialFFT stretchFFT(PolynomialFFT p)
{
int n=1;
int d=p.m_nDegree;
while(true)
{
if (d<=n) break;
n<<=1;
if (n==0)
{
throw new ArithmeticException("StretchFFT failed");
}
n<<=1;
return new PolynomialFFT(p.stretch(n));
}
}
//待續(xù)
ping命令詳解
對于Windows下ping命令相信大家已經(jīng)再熟悉不過了,但是能把ping的功能發(fā)揮到最大的人卻并不是很多,當(dāng)然我也并不是說我可以讓ping發(fā)揮最大的功能,我也只不過經(jīng)常用ping這個工具,也總結(jié)了一些小經(jīng)驗,現(xiàn)在和大家分享一下。
現(xiàn)在我就參照ping命令的幫助說明來給大家說說我使用ping時會用到的技巧,ping只有在安裝了TCP/IP協(xié)議以后才可以使用:
Options:
-t Ping the specified host until stopped.To see statistics and continue - type Control-Break;To stop - type Control-C.
不停的ping地方主機,直到你按下Control-C。
此功能沒有什么特別的技巧,不過可以配合其他參數(shù)使用,將在下面提到。
-a Resolve addresses to hostnames.
解析計算機NetBios名。
示例:C:\>ping -a 192.168.1.21
Pinging iceblood.yofor.com [192.168.1.21] with 32 bytes of data:
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Ping statistics for 192.168.1.21:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
從上面就可以知道IP為192.168.1.21的計算機NetBios名為iceblood.yofor.com。
-l size Send buffer size.
定義echo數(shù)據(jù)包大小。
在默認的情況下windows的ping發(fā)送的數(shù)據(jù)包大小為32byt,我們也可以自己定義它的大小,但有一個大小的限制,就是最大只能發(fā)送65500byt,也許有人會問為什么要限制到65500byt,因為Windows系列的系統(tǒng)都有一個安全漏洞(也許還包括其他系統(tǒng))就是當(dāng)向?qū)Ψ揭淮伟l(fā)送的數(shù)據(jù)包大于或等于65532時,對方就很有可能擋機,所以微軟公司為了解決這一安全漏洞于是限制了ping的數(shù)據(jù)包大小。雖然微軟公司已經(jīng)做了此限制,但這個參數(shù)配合其他參數(shù)以后危害依然非常強大,比如我們就可以通過配合-t參數(shù)來實現(xiàn)一個帶有攻擊性的命令:(以下介紹帶有危險性,僅用于試驗,請勿輕易施于別人機器上,否則后果自負)
C:\>ping -l 65500 -t 192.168.1.21
Pinging 192.168.1.21 with 65500 bytes of data:
Reply from 192.168.1.21: bytes=65500 time<10ms TTL=254
Reply from 192.168.1.21: bytes=65500 time<10ms TTL=254
………………
這樣它就會不停的向192.168.1.21計算機發(fā)送大小為65500byt的數(shù)據(jù)包,如果你只有一臺計算機也許沒有什么效果,但如果有很多計算機那么就可以使對方完全癱瘓,我曾經(jīng)就做過這樣的試驗,當(dāng)我同時使用10臺以上計算機ping一臺Win2000Pro系統(tǒng)的計算機時,不到5分鐘對方的網(wǎng)絡(luò)就已經(jīng)完全癱瘓,網(wǎng)絡(luò)嚴重堵塞,HTTP和FTP服務(wù)完全停止,由此可見威力非同小可。
r count Record route for count hops.
在“記錄路由”字段中記錄傳出和返回數(shù)據(jù)包的路由。
在一般情況下你發(fā)送的數(shù)據(jù)包是通過一個個路由才到達對方的,但到底是經(jīng)過了哪些路由呢?通過此參數(shù)就可以設(shè)定你想探測經(jīng)過的路由的個數(shù),不過限制在了9個,也就是說你只能跟蹤到9個路由,如果想探測更多,可以通過其他命令實現(xiàn),我將在以后的文章中給大家講解。以下為示例:
C:\>ping -n 1 -r 9 202.96.105.101 (發(fā)送一個數(shù)據(jù)包,最多記錄9個路由)
Pinging 202.96.105.101 with 32 bytes of data:
Reply from 202.96.105.101: bytes=32 time=10ms TTL=249
Route: 202.107.208.187 ->
202.107.210.214 ->
61.153.112.70 ->
61.153.112.89 ->
202.96.105.149 ->
202.96.105.97 ->
202.96.105.101 ->
202.96.105.150 ->
61.153.112.90
Ping statistics for 202.96.105.101:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 10ms, Maximum = 10ms, Average = 10ms
從上面我就可以知道從我的計算機到202.96.105.101一共通過了202.107.208.187 ,202.107.210.214 , 61.153.112.70 , 61.153.112.89 , 202.96.105.149 , 202.96.105.97這幾個路由。
ping命令的其他技巧:在一般情況下還可以通過ping對方讓對方返回給你的TTL值大小,粗略的判斷目標(biāo)主機的系統(tǒng)類型是Windows系列還是UNIX/Linux系列,一般情況下Windows系列的系統(tǒng)返回的TTL值在100-130之間,而UNIX/Linux系列的系統(tǒng)返回的TTL值在240-255之間,TTL 字段值可以幫助我們識別操作系統(tǒng)類型。
UNIX 及類 UNIX 操作系統(tǒng) ICMP 回顯應(yīng)答的 TTL 字段值為 255
Compaq Tru64 5.0 ICMP 回顯應(yīng)答的 TTL 字段值為 64
微軟 Windows NT/2K操作系統(tǒng) ICMP 回顯應(yīng)答的 TTL 字段值為 128
微軟 Windows 95 操作系統(tǒng) ICMP 回顯應(yīng)答的 TTL 字段值為 32
當(dāng)然TTL的值在對方的主機里是可以修改的,Windows系列的系統(tǒng)可以通過修改注冊表以下鍵值實現(xiàn):
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"DefaultTTL"=dword:000000ff
255---FF
128---80
64----40
32----20
好了,ping命令也基本上完全講解完了,其中還有-j,-k參數(shù)我還沒有詳細說明,由于某些原因也包括我自己所收集的資料過少這里也沒有向大家詳細介紹,請大家見諒,如果在看了這篇文章的朋友當(dāng)中有知道得比我更多的,以及其他使用技巧的也希望您能告訴我,并在此先謝過。
Windows 開始→運行→命令 集錦
winver---------檢查Windows版本
wmimgmt.msc----打開windows管理體系結(jié)構(gòu)(WMI)
wupdmgr--------windows更新程序
wscript--------windows腳本宿主設(shè)置
write----------寫字板
winmsd---------系統(tǒng)信息
wiaacmgr-------掃描儀和照相機向?qū)?nbsp;
winchat--------XP自帶局域網(wǎng)聊天
mem.exe--------顯示內(nèi)存使用情況
Msconfig.exe---系統(tǒng)配置實用程序
mplayer2-------簡易widnows media player
mspaint--------畫圖板
mstsc----------遠程桌面連接
mplayer2-------媒體播放機
magnify--------放大鏡實用程序
mmc------------打開控制臺
mobsync--------同步命令
dxdiag---------檢查DirectX信息
drwtsn32------ 系統(tǒng)醫(yī)生
devmgmt.msc--- 設(shè)備管理器
dfrg.msc-------磁盤碎片整理程序
diskmgmt.msc---磁盤管理實用程序
dcomcnfg-------打開系統(tǒng)組件服務(wù)
ddeshare-------打開DDE共享設(shè)置
dvdplay--------DVD播放器
net stop messenger-----停止信使服務(wù)
net start messenger----開始信使服務(wù)
notepad--------打開記事本
nslookup-------網(wǎng)絡(luò)管理的工具向?qū)?nbsp;
ntbackup-------系統(tǒng)備份和還原
narrator-------屏幕“講述人”
ntmsmgr.msc----移動存儲管理器
ntmsoprq.msc---移動存儲管理員操作請求
netstat -an----(TC)命令檢查接口
syncapp--------創(chuàng)建一個公文包
sysedit--------系統(tǒng)配置編輯器
sigverif-------文件簽名驗證程序
sndrec32-------錄音機
shrpubw--------創(chuàng)建共享文件夾
secpol.msc-----本地安全策略
syskey---------系統(tǒng)加密,一旦加密就不能解開,保護windows xp系統(tǒng)的雙重密碼
services.msc---本地服務(wù)設(shè)置
Sndvol32-------音量控制程序
sfc.exe--------系統(tǒng)文件檢查器
sfc /scannow---windows文件保護
tsshutdn-------60秒倒計時關(guān)機命令
tourstart------xp簡介(安裝完成后出現(xiàn)的漫游xp程序)
taskmgr--------任務(wù)管理器
eventvwr-------事件查看器
eudcedit-------造字程序
explorer-------打開資源管理器
packager-------對象包裝程序
perfmon.msc----計算機性能監(jiān)測程序
progman--------程序管理器
regedit.exe----注冊表
rsop.msc-------組策略結(jié)果集
regedt32-------注冊表編輯器
rononce -p ----15秒關(guān)機
regsvr32 /u *.dll----停止dll文件運行
regsvr32 /u zipfldr.dll------取消ZIP支持
cmd.exe--------CMD命令提示符
chkdsk.exe-----Chkdsk磁盤檢查
certmgr.msc----證書管理實用程序
calc-----------啟動計算器
charmap--------啟動字符映射表
cliconfg-------SQL SERVER 客戶端網(wǎng)絡(luò)實用程序
Clipbrd--------剪貼板查看器
conf-----------啟動netmeeting
compmgmt.msc---計算機管理
cleanmgr-------垃圾整理
ciadv.msc------索引服務(wù)程序
osk------------打開屏幕鍵盤
odbcad32-------ODBC數(shù)據(jù)源管理器
oobe/msoobe /a----檢查XP是否激活
lusrmgr.msc----本機用戶和組
logoff---------注銷命令
iexpress-------木馬捆綁工具,系統(tǒng)自帶
Nslookup-------IP地址偵測器
fsmgmt.msc-----共享文件夾管理器
utilman--------輔助工具管理器
gpedit.msc-----組策略
我想大家都看過各種各樣的滾動(最常用的就是用在新聞的更新上面),一般情況下只要不是圖片,都是用HTML本身就有提供一個很不錯的滾動標(biāo)記——marquee來完成的(用JS也可以同樣實現(xiàn)這種效果);當(dāng)然并不是說圖片就不能那樣做。
以下為marquee的一些基本的參數(shù):
該標(biāo)記語法格式如下:
<marquee
aligh=left|center|right|top|bottom
bgcolor=#n
direction=left|right|up|down
behavior=type
height=n
hspace=n
scrollamount=n
Scrolldelay=n
width=n
VSpace=n
loop=n>內(nèi)容</marquee>
下面解釋一下各參數(shù)的含義:
align:是設(shè)定活動字幕的位置,除了居左、居中、居右三種位置外,又增加靠上(top)和靠下(bottom)兩種位置。
Bgcolor:用于設(shè)定活動字幕的背景顏色,可以使用英文的單詞也可以是十六進制數(shù)的。
Direction:用于設(shè)定活動字幕的滾動方向是向左(left)、向右(right)、向上(up)、向下(down)。
Behavior:用于設(shè)定滾動的方式,主要由三種方式:
behavior="scroll"表示由一端滾動到另一端;
behavior="slide":表示由一端快速滑動到另一端,且不再重復(fù);
behavior="alternate"表示在兩端之間來回滾動。
Height:用于設(shè)定滾動字幕的高度。
Width:則設(shè)定滾動字幕的寬度。
Hspace和vspace:分別用于設(shè)定滾動字幕的左右邊框和上下邊框的寬度。
Scrollamount:用于設(shè)定活動字幕的滾動距離。數(shù)值越小,滾動的速度就越快。
scrolldelay:用于設(shè)定滾動兩次之間的延遲時間,數(shù)值越小,間隔就越小。
Loop:用于設(shè)定滾動的次數(shù),當(dāng)loop=-1表示一直滾動下去,直到頁面更新。其中默認情況是向左滾動無限次,字幕高度是文本高度;滾動范圍:水平滾動的寬度是當(dāng)前位置的寬度;垂直滾動的高度是當(dāng)前位置的高度。
現(xiàn)在要介紹的是一種新型的滾動,利用JS的方法來做字幕的滾動:向上,在中間停頓一到兩秒(就像經(jīng)典的這種):
將以下代碼貼到您要顯示的位置就可以了:
<script>
var marqueeContent=new Array(); //定義一個數(shù)組,用來存放顯示內(nèi)容
marqueeContent[0]='<A href="#" onclick="reinitMarquee()">刷新最新列表</FONT></A>';
marqueeContent[1]='<a href=http://www.blueidea.com/updatelist.asp target=_blank>站點最新更新六十條</a>';
marqueeContent[2]='<A href=http://www.blueidea.com/tech/graph/2003/875.asp target=_blank>羽毛效果制作教程</a>';
marqueeContent[3]='<A href=http://www.blueidea.com/tech/program/2003/831.asp target=_blank>MySQL&ASP</a>';
marqueeContent[4]='<A href=http://www.blueidea.com/tech/web/2003/874.asp target=_blank>初步了解CSS3</a>';
marqueeContent[5]='<A href=http://www.blueidea.com/tech/graph/2003/864.asp target=_blank>Fireworks MX 2004執(zhí)行面版操作</a>';
marqueeContent[6]='<A href=http://www.blueidea.com/tech/graph/2003/872.asp target=_blank>Fireworks MX 2004等高漸變填充</a>';
marqueeContent[7]='<A href=http://www.blueidea.com/photo/gallery/2003/873.asp target=_blank>瓶子里的花</a>';
marqueeContent[8]='<A href=http://www.blueidea.com/tech/graph/2003/871.asp target=_blank>Fireworks MX 實現(xiàn)選項卡式效果</a>';
marqueeContent[9]='<A href=http://www.blueidea.com/photo/gallery/2003/870.asp target=_blank>情侶:黑白的愛情空氣</a>';
marqueeContent[10]='<A href=http://www.blueidea.com/tech/graph/2003/866.asp target=_blank>制作 MAC 風(fēng)格的蘋果標(biāo)志</a>';
marqueeContent[11]='<A href=http://www.blueidea.com/tech/graph/2003/868.asp target=_blank>蛋殼制作及破殼而出的人物合成</a>';
var marqueeInterval=new Array(); //定義一些常用而且要經(jīng)常用到的變量
var marqueeId=0;
var marqueeDelay=4000;
var marqueeHeight=16;
//接下來的是定義一些要使用到的函數(shù)
Array.prototype.random=function() {
var a=this;
var l=a.length;
for(var i=0;i<l;i++) {
var r=Math.floor(Math.random()*(l-i));
a=a.slice(0,r).concat(a.slice(r+1)).concat(a[r]);
}
return a;
}
function initMarquee() {
marqueeContent=marqueeContent.random();
var str='';
for(var i=0;i<Math.min(3,marqueeContent.length);i++) str+=(i>0?' ':'')+marqueeContent[i];
document.write('<div id=marqueeBox style="overflow:hidden;height:'+marqueeHeight+'px" onmouseover="clearInterval(marqueeInterval[0])" onmouseout="marqueeInterval[0]=setInterval(\'startMarquee()\',marqueeDelay)"><div>'+str+'</div></div>');
marqueeId+=2;
if(marqueeContent.length>3)marqueeInterval[0]=setInterval("startMarquee()",marqueeDelay);
}
function reinitMarquee() {
js_scroll_content.src='scroll_content2.js';
marqueeContent=marqueeContent.random();
var str='';
for(var i=0;i<Math.min(3,marqueeContent.length);i++) str+=(i>0?' ':'')+marqueeContent[i];
marqueeBox.childNodes[(marqueeBox.childNodes.length==1?0:1)].innerHTML=str;
marqueeId=2;
}
function startMarquee() {
var str='';
for(var i=0;(i<3)&&(marqueeId+i<marqueeContent.length);i++) {
str+=(i>0?' ':'')+marqueeContent[marqueeId+i];
}
marqueeId+=3;
if(marqueeId>marqueeContent.length)marqueeId=0;
if(marqueeBox.childNodes.length==1) {
var nextLine=document.createElement('DIV');
nextLine.innerHTML=str;
marqueeBox.appendChild(nextLine);
}
else {
marqueeBox.childNodes[0].innerHTML=str;
marqueeBox.appendChild(marqueeBox.childNodes[0]);
marqueeBox.scrollTop=0;
}
clearInterval(marqueeInterval[1]);
marqueeInterval[1]=setInterval("scrollMarquee()",20);
}
function scrollMarquee() {
marqueeBox.scrollTop++;
if(marqueeBox.scrollTop%marqueeHeight==(marqueeHeight-1)){
clearInterval(marqueeInterval[1]);
}
}
initMarquee();
</script> 以上已經(jīng)將網(wǎng)站的這種滾動的做法做了一個大概的介紹。
<script> <!--
var limit="0:15"
if (document.images){ var parselimit=limit.split(":") parselimit=parselimit[0]*60+parselimit[1]*1 } function beginrefresh(){ if (!document.images) return if (parselimit==1) window.location.reload() else{ parselimit-=1 curmin=Math.floor(parselimit/60) cursec=parselimit%60 if (curmin!=0) curtime=curmin+"分"+cursec+"秒后重刷本頁!" else curtime=cursec+"秒后重刷本頁!" window.status=curtime setTimeout("beginrefresh()",1000) } }
window.onload=beginrefresh //--> </script>
以上代碼加入HEAD區(qū)即可。
說明:有人說,我可以使用<meta http-equiv="refresh">來刷新當(dāng)前頁面,為什么要用這個腳本呢?是的,的確是這樣。但是這個腳本可以在狀態(tài)欄顯示剩余的時間。不管怎樣,隨您的便。其實這個腳本可以作出其它許多花樣的。如果將window.location.reload()改成window.location.等地址,可以在規(guī)定時間到來后指向任意的頁面。 |
源程序講解:
var limit="0:10"
聲明一個變量,表示幾分幾秒。
if (document.images)
{ var parselimit=limit.split(":")
用“;”分隔變量limit。
parselimit=parselimit[0]*60+
parselimit[1]*1}
把limit變量變成秒數(shù),并返回整數(shù)。
function beginrefresh()
{ if (!document.images)
return
定義刷新函數(shù)。
if (parselimit==1)
window.location.reload()
else{ parselimit-=1
curmin=Math.floor(parselimit/60) cursec=parselimit%60
if (curmin!=0)
curtime=curmin+"分"+cursec+
"秒后重刷本頁!"
else curtime=cursec+"秒后重刷本頁!"
window.status=curtime
如果,還剩一秒,就刷新頁面,否則,對limit變量取整,在狀態(tài)欄中輸出“幾分幾秒后刷新本頁”。
setTimeout("beginrefresh()",1000) }} 一秒,調(diào)用一次beginrefresh()函數(shù)。
window.onload=beginrefresh 頁面一下載,就調(diào)用beginrefresh函數(shù)。
源程序講解:
var limit="0:10"
聲明一個變量,表示幾分幾秒。
if (document.images)
{ var parselimit=limit.split(":")
用“;”分隔變量limit。
parselimit=parselimit[0]*60+
parselimit[1]*1}
把limit變量變成秒數(shù),并返回整數(shù)。
function beginrefresh()
{ if (!document.images)
return
定義刷新函數(shù)。
if (parselimit==1)
window.location.reload()
else{ parselimit-=1
curmin=Math.floor(parselimit/60) cursec=parselimit%60
if (curmin!=0)
curtime=curmin+"分"+cursec+
"秒后重刷本頁!"
else curtime=cursec+"秒后重刷本頁!"
window.status=curtime
如果,還剩一秒,就刷新頁面,否則,對limit變量取整,在狀態(tài)欄中輸出“幾分幾秒后刷新本頁”。
setTimeout("beginrefresh()",1000) }} 一秒,調(diào)用一次beginrefresh()函數(shù)。
window.onload=beginrefresh 頁面一下載,就調(diào)用beginrefresh函數(shù)。
HTML源代碼加密/解密工具
->
腳本編碼/解碼工具
|
摘要: 標(biāo)準(zhǔn)顏色參考工具
該表所有顏色來自于W3C的SVG顏色關(guān)鍵詞,即X11的顏色列表,亦是CSS3顏色模塊所指定的顏色。詳情可參見: [X11顏色]和[SVG 1.0顏色關(guān)鍵詞名稱]及 [CSS3顏色模塊] 。
本表共147行顏色值,除去以grey名命的重復(fù)顏色7行,共140種命名顏色。該七種顏色為: darkgrey,暗灰色;darkslategrey,暗瓦灰色;dimgrey,暗灰色...
閱讀全文
顏色工具
- 資料來源:W3C
- 下面的每一個表代表一種色調(diào)。每個色調(diào)以30度間隔從色環(huán)取得。
- 表中的X軸代表飽和度(100%, 75%, 50%, 25%, 0%)。
- Y軸代表亮度。50% 屬于 '正常'。
|
0度 紅 |
|
|
|
100% |
75% |
50% |
25% |
0% |
100 |
#FFFFFF |
#FFFFFF |
#FFFFFF |
#FFFFFF |
#FFFFFF |
88 |
#FFBFBF |
#F7C7C7 |
#EFCFCF |
#E7D7D7 |
#DFDFDF |
75 |
#FF8080 |
#EF8F8F |
#DF9F9F |
#CFAFAF |
#BFBFBF |
63 |
#FF4040 |
#E75858 |
#CF7070 |
#B78787 |
#9F9F9F |
50 |
#FF0000 |
#DF2020 |
#BF4040 |
#9F6060 |
#808080 |
38 |
#BF0000 |
#A71818 |
#8F3030 |
#784848 |
#606060 |
25 |
#800000 |
#701010 |
#602020 |
#503030 |
#404040 |
13 |
#400000 |
#380808 |
#301010 |
#281818 |
#202020 |
0 |
#000000 |
#000000 |
#000000 |
#000000 |
#000000 |
|
30度 紅-黃 (=橙) |
|
飽和度 |
|
100% |
75% |
50% |
25% |
0% |
100 |
#FFFFFF |
#FFFFFF |
#FFFFFF |
#FFFFFF |
#FFFFFF |
88 |
#FFDFBF |
#F7DFC7 |
#EFDFCF |
#E7DFD7 |
#DFDFDF |
75 |
#FFBF80 |
#EFBF8F |
#DFBF9F |
#CFBFAF |
#BFBFBF |
63 |
#FF9F40 |
#E79F58 |
#CF9F70 |
#B79F87 |
#9F9F9F |
50 |
#FF8000 |
#DF8020 |
#BF8040 |
#9F8060 |
#808080 |
38 |
#BF6000 |
#A76018 |
#8F6030 |
#786048 |
#606060 |
25 |
#804000 |
#704010 |
#604020 |
#504030 |
#404040 |
13 |
#402000 |
#382008 |
#302010 |
#282018 |
#202020 |
0 |
#000000 |
#000000 |
#000000 |
#000000 |
#000000 |
|
60度 黃 |
|
飽和度 |
|
100% |
75% |
50% |
25% |
0% |
100 |
#FFFFFF |
#FFFFFF |
#FFFFFF |
#FFFFFF |
#FFFFFF |
88 |
#FFFFBF |
#F7F7C7 |
#EFEFCF |
#E7E7D7 |
#DFDFDF |
75 |
#FFFF80 |
#EFEF8F |
#DFDF9F |
#CFCFAF |
#BFBFBF |
63 |
#FFFF40 |
#E7E758 |
#CFCF70 |
#B7B787 |
#9F9F9F |
50 |
#FFFF00 |
#DFDF20 |
#BFBF40 |
#9F9F60 |
#808080 |
38 |
#BFBF00 |
#A7A718 |
#8F8F30 |
#787848 |
#606060 |
25 |
#808000 |
#707010 |
#606020 |
#505030 |
#404040 |
13 |
#404000 |
#383808 |
#303010 |
#282818 |
#202020 |
0 |
#000000 |
#000000 |
#000000 |
#000000 |
#000000 |
|
90度 黃-綠 |
|
飽和度 |
|
100% |
75% |
50% |
25% |
0% |
100 |
#FFFFFF |
#FFFFFF |
#FFFFFF |
#FFFFFF |
#FFFFFF |
88 |
#DFFFBF |
#DFF7C7 |
#DFEFCF |
#DFE7D7 |
#DFDFDF |
75 |
#BFFF80 |
#BFEF8F |
#BFDF9F |
#BFCFAF |
#BFBFBF |
63 |
#9FFF40 |
#9FE758 |
#9FCF70 |
#9FB787 |
#9F9F9F |
50 |
#80FF00 |
#80DF20 |
#80BF40 |
#809F60 |
#808080 |
38 |
#60BF00 |
#60A718 |
#608F30 |
#607848 |
#606060 |
25 |
#408000 |
#407010 |
#406020 |
#405030 |
#404040 |
13 |
#204000 |
#203808 |
#203010 |
#202818 |
#202020 |
0 |
#000000 |
#000000 |
#000000 |
#000000 |
#000000 |
|
120度 綠 |
|
飽和度 |
|
100% |
75% |
50% |
25% |
0% |
100 |
#FFFFFF |
#FFFFFF |
#FFFFFF |
#FFFFFF |
#FFFFFF |
88 |
#BFFFBF |
#C7F7C7 |
#CFEFCF |
#D7E7D7 |
#DFDFDF |
75 |
#80FF80 |
#8FEF8F |
#9FDF9F |
#AFCFAF |
#BFBFBF |
63 |
#40FF40 |
#58E758 |
#70CF70 |
#87B787 |
#9F9F9F |
50 |
#00FF00 |
#20DF20 |
#40BF40 |
#609F60 |
#808080 |
38 |
#00BF00 |
#18A718 |
#308F30 |
#487848 |
#606060 |
25 |
#008000 |
#107010 |
#206020 |
#305030 |
#404040 |
13 |
#004000 |
#083808 |
#103010 |
#182818 |
#202020 |
0 |
#000000 |
#000000 |
#000000 |
#000000 |
#000000 |
|
150度 綠-青 |
|
飽和度 |
|
100% |
75% |
50% |
25% |
0% |
100 |
#FFFFFF |
#FFFFFF |
#FFFFFF |
#FFFFFF |
#FFFFFF |
88 |
#BFFFDF |
#C7F7DF |
#CFEFDF |
#D7E7DF |
#DFDFDF |
75 |
#80FFBF |
#8FEFBF |
#9FDFBF |
#AFCFBF |
#BFBFBF |
63 |
#40FF9F |
#58E79F |
#70CF9F |
#87B79F |
#9F9F9F |
50 |
#00FF80 |
#20DF80 |
#40BF80 |
#609F80 |
#808080 |
38 |
#00BF60 |
#18A760 |
#308F60 |
#487860 |
#606060 |
25 |
#008040 |
#107040 |
#206040 |
#305040 |
#404040 |
13 |
#004020 |
#083820 |
#103020 |
#182820 |
#202020 |
0 |
#000000 |
#000000 |
#000000 |
#000000 |
#000000 |
|
180度 青 |
|
飽和度 |
|
100% |
75% |
50% |
25% |
0% |
100 |
#FFFFFF |
#FFFFFF |
#FFFFFF |
#FFFFFF |
#FFFFFF |
88 |
#BFFFFF |
#C7F7F7 |
#CFEFEF |
#D7E7E7 |
#DFDFDF |
75 |
#80FFFF |
#8FEFEF |
#9FDFDF |
#AFCFCF |
#BFBFBF |
63 |
#40FFFF |
#58E7E7 |
#70CFCF |
#87B7B7 |
#9F9F9F |
50 |
#00FFFF |
#20DFDF |
#40BFBF |
#609F9F |
#808080 |
38 |
#00BFBF |
#18A7A7 |
#308F8F |
#487878 |
#606060 |
25 |
#008080 |
#107070 |
#206060 |
#305050 |
#404040 |
13 |
#004040 |
#083838 |
#103030 |
#182828 |
#202020 |
0 |
#000000 |
#000000 |
#000000 |
#000000 |
#000000 |
|
210度 青-藍 |
|
飽和度 |
|
100% |
75% |
50% |
25% |
0% |
100 |
#FFFFFF |
#FFFFFF |
#FFFFFF |
#FFFFFF |
#FFFFFF |
88 |
#BFDFFF |
#C7DFF7 |
#CFDFEF |
#D7DFE7 |
#DFDFDF |
75 |
#80BFFF |
#8FBFEF |
#9FBFDF |
#AFBFCF |
#BFBFBF |
63 |
#409FFF |
#589FE7 |
#709FCF |
#879FB7 |
#9F9F9F |
50 |
#0080FF |
#2080DF |
#4080BF |
#60809F |
#808080 |
38 |
#0060BF |
#1860A7 |
#30608F |
#486078 |
#606060 |
25 |
#004080 |
#104070 |
#204060 |
#304050 |
#404040 |
13 |
#002040 |
#082038 |
#102030 |
#182028 |
#202020 |
0 |
#000000 |
#000000 |
#000000 |
#000000 |
#000000 |
|
240度 藍 |
|
飽和度 |
|
100% |
75% |
50% |
25% |
0% |
100 |
#FFFFFF |
#FFFFFF |
#FFFFFF |
#FFFFFF |
#FFFFFF |
88 |
#BFBFFF |
#C7C7F7 |
#CFCFEF |
#D7D7E7 |
#DFDFDF |
75 |
#8080FF |
#8F8FEF |
#9F9FDF |
#AFAFCF |
#BFBFBF |
63 |
#4040FF |
#5858E7 |
#7070CF |
#8787B7 |
#9F9F9F |
50 |
#0000FF |
#2020DF |
#4040BF |
#60609F |
#808080 |
38 |
#0000BF |
#1818A7 |
#30308F |
#484878 |
#606060 |
25 |
#000080 |
#101070 |
#202060 |
#303050 |
#404040 |
13 |
#000040 |
#080838 |
#101030 |
#181828 |
#202020 |
0 |
#000000 |
#000000 |
#000000 |
#000000 |
#000000 |
|
270度 藍-紫 |
|
飽和度 |
|
100% |
75% |
50% |
25% |
0% |
100 |
#FFFFFF |
#FFFFFF |
#FFFFFF |
#FFFFFF |
#FFFFFF |
88 |
#DFBFFF |
#DFC7F7 |
#DFCFEF |
#DFD7E7 |
#DFDFDF |
75 |
#BF80FF |
#BF8FEF |
#BF9FDF |
#BFAFCF |
#BFBFBF |
63 |
#9F40FF |
#9F58E7 |
#9F70CF |
#9F87B7 |
#9F9F9F |
50 |
#8000FF |
#8020DF |
#8040BF |
#80609F |
#808080 |
38 |
#6000BF |
#6018A7 |
#60308F |
#604878 |
#606060 |
25 |
#400080 |
#401070 |
#402060 |
#403050 |
#404040 |
13 |
#200040 |
#200838 |
#201030 |
#201828 |
#202020 |
0 |
#000000 |
#000000 |
#000000 |
#000000 |
#000000 |
|
300度 紫 |
|
飽和度 |
|
100% |
75% |
50% |
25% |
0% |
100 |
#FFFFFF |
#FFFFFF |
#FFFFFF |
#FFFFFF |
#FFFFFF |
88 |
#FFBFFF |
#F7C7F7 |
#EFCFEF |
#E7D7E7 |
#DFDFDF |
75 |
#FF80FF |
#EF8FEF |
#DF9FDF |
#CFAFCF |
#BFBFBF |
63 |
#FF40FF |
#E758E7 |
#CF70CF |
#B787B7 |
#9F9F9F |
50 |
#FF00FF |
#DF20DF |
#BF40BF |
#9F609F |
#808080 |
38 |
#BF00BF |
#A718A7 |
#8F308F |
#784878 |
#606060 |
25 |
#800080 |
#701070 |
#602060 |
#503050 |
#404040 |
13 |
#400040 |
#380838 |
#301030 |
#281828 |
#202020 |
0 |
#000000 |
#000000 |
#000000 |
#000000 |
#000000 |
|
330度 紫-紅 |
|
飽和度 |
|
100% |
75% |
50% |
25% |
0% |
100 |
#FFFFFF |
#FFFFFF |
#FFFFFF |
#FFFFFF |
#FFFFFF |
88 |
#FFBFDF |
#F7C7DF |
#EFCFDF |
#E7D7DF |
#DFDFDF |
75 |
#FF80BF |
#EF8FBF |
#DF9FBF |
#CFAFBF |
#BFBFBF |
63 |
#FF409F |
#E7589F |
#CF709F |
#B7879F |
#9F9F9F |
50 |
#FF0080 |
#DF2080 |
#BF4080 |
#9F6080 |
#808080 |
38 |
#BF0060 |
#A71860 |
#8F3060 |
#784860 |
#606060 |
25 |
#800040 |
#701040 |
#602040 |
#503040 |
#404040 |
13 |
#400020 |
#380820 |
#301020 |
#281820 |
#202020 |
0 |
#000000 |
#000000 |
#000000 |
#000000 |
#000000 |
1.Stream對象
組件:"Adodb.Stream"
有下列方法:
Cancel 方法
使用方法如下
Object.Cancel
說明:取消執(zhí)行掛起的異步 Execute 或 Open 方法的調(diào)用。
Close 方法
使用方法如下
Object.Close
:關(guān)閉對像
CopyTo 方法
使用方法如下
Object.CopyTo(destStream,[CharNumber])
說明:將對像的數(shù)據(jù)復(fù)制,destStream指向要復(fù)制的對像,CharNumber為可選參數(shù),指要復(fù)制的字節(jié)數(shù),不選為全部復(fù)制。
Flush 方法
使用方法如下
Object.Flush
說明:
LoadFromFile 方法
使用方法如下
Object.LoadFromFile(FileName)
說明:將FileName指定的文件裝入對像中,參數(shù)FileName為指定的用戶名。
Open 方法
使用方法如下
Object.Open(Source,[Mode],[Options],[UserName],[Password])
說明:打開對像,
參數(shù)說明:Sourece 對像源,可不指定
Mode 指定打開模式,可不指定,可選參數(shù)如下:
adModeRead =1
adModeReadWrite =3
adModeRecursive =4194304
adModeShareDenyNone =16
adModeShareDenyRead =4
adModeShareDenyWrite =8
adModeShareExclusive =12
adModeUnknown =0
adModeWrite =2
Options 指定打開的選項,可不指定,可選參數(shù)如下:
adOpenStreamAsync =1
adOpenStreamFromRecord =4
adOpenStreamUnspecified=-1
UserName 指定用戶名,可不指定。
Password 指定用戶名的密碼
Read 方法
使用方法如下:
Object.Read(Numbytes)
說明:讀取指定長度的二進制內(nèi)容。
參數(shù)說明:Numbytes指定的要讀取的找度,不指定則讀取全部。
ReadText 方法
使用方法如下:
Object.ReadText(NumChars)
說明:讀取指定長度的文本
參數(shù)說明:NumChars指定的要讀取的找度,不指定則讀取全部。
SaveToFile 方法
使用方法如下:
Object.SaveToFile(FileName,[Options])
說明:將對像的內(nèi)容寫到FileName指定的文件中
參數(shù)說明:FileName指定的文件
Options 存取的選項,可不指定,可選參數(shù)如下:
adSaveCreateNotExist =1
adSaveCreateOverWrite =2
SetEOS 方法
使用方法如下:
Object.setEOS()
說明:
SkipLine 方法
使用方法如下:
Object.SkipLine()
說明:
Write 方法
使用方法如下:
Object.Write(Buffer)
說明:將指定的數(shù)據(jù)裝入對像中。
參數(shù)說明:Buffer 為指定的要寫入的內(nèi)容。
WriteText 方法
使用方法如下:
Object.Write(Data,[Options])
說明:將指定的文本數(shù)據(jù)裝入對像中。
參數(shù)說明:Data 為指定的要寫入的內(nèi)容。
Options 寫入的選項,可不指定,可選參數(shù)如下:
adWriteChar =0
adWriteLine =1
有下列屬性:
Charset
EOS 返回對像內(nèi)數(shù)據(jù)是否為空。
LineSeparator 指定換行格式,可選參數(shù)有
adCR =13
adCRLF =-1
adLF =10
Mode 指定或返加模式。
Position 指定或返回對像內(nèi)數(shù)據(jù)的當(dāng)前指針。(新OPEN的:0)
Size 返回對像內(nèi)數(shù)據(jù)的大小。
State 返加對像狀態(tài)是否打開。
Type 指定或返回的數(shù)據(jù)類型,可選參數(shù)為:
adTypeBinary =1
adTypeText =2
2.WshShell和WshUrlShortcut 對象
WshShell 對象
ProgID Wscript.Shell
文件名 WSHom.Ocx
CLSID F935DC22-1CF0-11d0-ADB9-00C04FD58A0B
IID F935DC21-1CF0-11d0-ADB9-00C04FD58A0B
下表說明和 WshShell 對象有關(guān)的屬性。
屬性 說明
Environment 返回 WshEnvironment 集合對象。
SpecialFolders 使用 WshSpecialFolders 對象提供對 Windows shell 文件夾的訪問,如桌面文件夾,開始菜單文件夾和個人文檔文件夾。
下表說明和 WshShell 對象有關(guān)的方法。
方法 說明
CreateShortcut 創(chuàng)建并返回 WshShortcut 對象。
ExpandEnvironmentStrings 擴展 PROCESS 環(huán)境變量并返回結(jié)果字符串。
Popup 顯示包含指定消息的消息窗口。
RegDelete 從注冊表中刪除指定的鍵或值。
RegRead 從注冊表中返回指定的鍵或值。
RegWrite 在注冊表中設(shè)置指定的鍵或值。
Run 創(chuàng)建新的進程,該進程用指定的窗口樣式執(zhí)行指定的命令。
WshShell.Environment
Environment 屬性返回 WshEnvironment 對象。
語法
WshShell.Environment ( [strType]) = objWshEnvironment
注釋
若 strType 指定了環(huán)境變量所處的位置,可能值為 "System"、"User"、"Volatile" 和 "Process"。若未提供 strType,則該方法在 Windows NT 中檢索系統(tǒng)環(huán)境變量或在 Windows 95 中檢索進程環(huán)境變量。
對于 Windows 95,strType 參數(shù)僅支持 "Process"。
下列變量是由 Windows 操作系統(tǒng)提供的。腳本也可獲取由其他應(yīng)用程序設(shè)置的環(huán)境變量。
名稱 說明
NUMBER_OF_PROCESSORS 計算機上運行的處理器數(shù)目。
PROCESSOR_ARCHITECTURE 用戶工作站使用的處理器類型。
PROCESSOR_IDENTIFIER 用戶工作站的處理器 ID。
PROCESSOR_LEVEL 用戶工作站的處理器級。
PROCESSOR_REVISION 用戶工作站的處理器版本。
OS 用戶工作站所用的操作系統(tǒng)。
COMSPEC 用于運行“命令提示”窗口的命令(通常為 cmd.exe)。
HOMEDRIVE 本地主驅(qū)動器(通常為 C 驅(qū)動器)。
HOMEPATH 用戶的默認路徑(在 Windows NT 上通常為 \users\default)。
PATH 路徑環(huán)境變量。
PATHEXT 可執(zhí)行文件的擴展名(通常為 .com、 .exe、.bat 或 .cmd)。
PROMPT 命令提示符(通常為 $P$G)。
SYSTEMDRIVE 系統(tǒng)所在的本地驅(qū)動器(例如,c:\)。
SYSTEMROOT 系統(tǒng)目錄(例如,c:\winnt)。和 WINDIR 相同。
WINDIR 系統(tǒng)目錄(例如 c:\winnt)。和 SYSTEMROOT 相同。
TEMP 存儲臨時文件的目錄(例如,c:\temp)。用戶可更改。
TMP 存儲臨時文件的目錄(例如,c:\temp)。用戶可更改。
示例
' Retrieve the NUMBER_OF_PROCESSORS system environment variable
Set WshShell = Wscript.CreateObject("Wscript.Shell")
Set WshSysEnv = WshShell.Environment("SYSTEM")
Wscript.Echo WshSysEnv("NUMBER_OF_PROCESSORS")
請參閱
WshEnvironment 對象
WshEnvironment 對象
WshEnvironment 對象未直接給出,可用 WshShell.Environment 屬性來訪問。
ProgID N/A
文件名 WSHom.Ocx
CLSID
IID
下表描述與 WshEnvironment 對象關(guān)聯(lián)的屬性。
屬性 說明
Item 獲取或設(shè)置指定的環(huán)境變量值。
Count 枚舉項的數(shù)目。
length 枚舉項的數(shù)目 (JScript)。
下表描述與 WshEnvironment 對象關(guān)聯(lián)的方法。
方法 說明
Remove 刪除指定的環(huán)境變量。
WshShell.SpecialFolders
SpecialFolders 屬性提供 WshSpecialFolders 對象以便訪問 Windows 的 shell 文件夾,例如桌面文件夾、開始菜單文件夾和個人文檔文件夾。
語法
WshShell.SpecialFolders = objWshSpecialFolders
示例
' This code fragment shows how to access the desktop folder
Set WshShell = Wscript.CreateObject("Wscript.Shell")
MsgBox "Your desktop is " & WshShell.SpecialFolders("Desktop")
請參閱
WshSpecialFolders 對象
WshSpecialFolders 對象
該對象未直接給出。要得到 WshSpecialFolders 對象,請使用 WshShell.SpecialFolders 屬性。
ProgID N/A
文件名 WSHom.Ocx
CLSID
IID
下表描述與 WshSpecialFolders 對象關(guān)聯(lián)的屬性。
屬性 描述
Item 指定文件夾的完整路徑(默認)。
Count 枚舉項的數(shù)目。
length 枚舉項的數(shù)目 (JScript) 。
WshSpecialFolders.Item
Item 屬性返回由 strFolderName 指定的文件夾的完整路徑。它是默認屬性。
語法
WshShell.SpecialFolders.Item("strFolderName") = strFolderPath
WshShell.SpecialFolders("strFolderName") = strFolderPath
注釋
若請求的文件夾 (strFolderName) 不可用,則 WshShell.SpecialFolders("strFolderName") 返回 NULL。例如,Windows 95 沒有 AllUsersDesktop 文件夾,如果 strFolderName = AllUsersDesktop,則返回 NULL。
Windows 95 和 Windows NT 4.0 操作系統(tǒng)提供下列指定文件夾:
AllUsersDesktop
AllUsersStartMenu
AllUsersPrograms
AllUsersStartup
Desktop
Favorites
Fonts
MyDocuments
NetHood
PrintHood
Programs
Recent
SendTo
StartMenu
Startup
Templates
示例
' This fragment returns the full path for the Windows Desktop folder
Set WshShell = Wscript.CreateObject("Wscript.Shell")
StrMyDesktop = WshShell.SpecialFolders("Desktop")
' List all special folders
For Each strFolder In WshShell.SpecialFolders
MsgBox strFolder
Next
請參閱
WshShell.SpecialFolders 屬性
WshShell.CreateShortcut
CreateShortcut 方法創(chuàng)建 WshShortcut 對象并將其返回。如果快捷方式標(biāo)題以 .url 結(jié)尾,就會創(chuàng)建 WshURLShortcut 對象。
語法
WshShell.CreateShortcut(strPathname) = objShortcut
示例
' This code fragment creates a shortcut
' to the currently executing script
Set WshShell = Wscript.CreateObject("Wscript.Shell")
Set oShellLink = WshShell.CreateShortcut("Current Script.lnk")
oShellLink.TargetPath = Wscript.ScriptFullName
oShellLink.Save
Set oUrlLink = WshShell.CreateShortcut("Microsoft Web Site.URL")
oUrlLink.TargetPath = "http://www.microsoft.com"
oUrlLink.Save
請參閱
WshShortcut 對象、WshUrlShortcut 對象
WshShortcut 對象
該對象未直接給出。要獲得 WshShortcut 對象,請使用 WshShell.CreateShortcut 方法。
ProgID N/A
文件名 WSHom.Ocx
CLSID F935DC28-1CF0-11d0-ADB9-00C04FD58A0B
IID F935DC27-1CF0-11d0-ADB9-00C04FD58A0B
下表說明和 WshShortcut 對象有關(guān)的屬性。
屬性 說明
Arguments 快捷方式對象的參數(shù)。
Description 快捷方式對象的說明。
Hotkey 快捷方式對象的熱鍵。
IconLocation 快捷方式對象的圖標(biāo)位置。
TargetPath 快捷方式對象的目標(biāo)路徑。
WindowStyle 快捷方式對象的窗口樣式。
WorkingDirectory 快捷方式對象的工作目錄。
下表說明與 WshShortcut 對象有關(guān)的方法。
方法 說明
Save 將快捷方式存儲到指定的文件系統(tǒng)中。
WshShortcut.Arguments
Arguments 屬性提供快捷方式對象的參數(shù)。
語法
WshShortcut.Arguments = strArguments
WshShortcut.Description
Description 屬性提供快捷方式對象的說明。
語法
WshShortcut.Description = strDescription
WshShortcut.Hotkey
HotKey 屬性提供快捷方式對象的熱鍵。熱鍵是啟動或切換程序的鍵盤快捷方式。
語法
WshShortcut.HotKey = strHotKey
注釋
strHotKey 的BNF語法如下:
Hotkey ::= modifier* keyname
modifier ::= "ALT+" | "CTRL+" | "SHIFT+" | "EXT+"
keyname ::= "A" .. "Z" |
"0".. "9" |
"Back" | "Tab" | "Clear" | "Return" |
"Escape" | "Space" | "Prior" | ...
所有鍵的名稱都可以在 WINUSER.H 中找到。熱鍵不區(qū)分大小寫。
熱鍵只能激活位于 Windows 桌面或 Windows“開始”菜單的快捷方式。
Windows 資源管理器不接受 ESC、ENTER、TAB、SPACE、PRINT SCREEN 或 BACKSPACE,即使 WshShortcut.Hotkey 遵循 Win32 API 支持它們。因此,建議在快捷方式中不要用這些鍵。
示例
Set WshShell = Wscript.CreateObject("Wscript.WshShell")
strDesktop = WshShell.SpecialFolders("Desktop")
Set oMyShortcut = WshShell.CreateShortcut(strDesktop & "\a_key.lnk")
OMyShortcut.TargetPath = "%windir%\notepad.exe"
oMyShortCut.Hotkey = "ALT+CTRL+F"
oMyShortCut.Save
Wscript.Echo oMyShortCut.HotKey = "Alt+Ctrl+F"
請參閱
WshSpecialFolders 對象
WshShortcut.IconLocation
IconLocation 屬性提供快捷方式對象的圖標(biāo)位置。圖標(biāo)位置的格式應(yīng)為 "Path,index"。
語法
WshShortcut.IconLocation = strIconLocation
WshShortcut.TargetPath
TargetPath 屬性提供快捷方式對象的目標(biāo)路徑。
語法
WshShort
WshUrlShortcut 對象
該對象未直接給出。要獲取 WshUrlShortcut 對象,可使用 WshShell.CreateShortcut 方法。
ProgID N/A
文件名 WSHom.Ocx
CLSID
IID
下表說明了和 WshUrlShortcut 對象有關(guān)的屬性。
屬性 說明
FullName URL 快捷方式對象的完整路徑。
TargetPath URL 快捷方式對象的目標(biāo)路徑。
下表說明了和 WshUrlShortcut 對象有關(guān)的方法。
方法 說明
Save 將快捷方式保存到指定的文件系統(tǒng)中。
WshUrlShortcut.FullName
FullName 屬性提供快捷方式對象的完整路徑。
語法
WshUrlShortcut.FullName = strFullName
WshUrlShortcut.TargetPath
TargetPath 屬性提供快捷方式對象的目標(biāo)路徑。
語法
WshUrlShortcut.TargetPath = strTargetPath
WshUrlShortcut.Save
Save 方法保存一個快捷方式,該快捷方式指向 FullName 屬性指定的位置。
語法
WshUrlShortcut.Save
WshShell.ExpandEnvironmentStrings
ExpandEnvironmentStrings 方法在 strString 中擴展 PROCESS 環(huán)境變量并返回結(jié)果字符串。變量被 '%' 字符括起。
環(huán)境變量不區(qū)分大小寫。
語法
WshShell.ExpandEnvironmentStrings(strString) = strExpandedString
示例
MsgBox "Prompt is " & WshShell.ExpandEnviromentStrings("%PROMPT%")
WshShell.Popup
Popup 方法顯示一個彈出式消息框窗口,消息框中包含的消息由 strText 指定。該消息框的窗口標(biāo)題由 strTitle 指定。若 strTitle 省略,則窗口標(biāo)題為 Windows Scripting Host。
語法
WshShell.Popup(strText, [natSecondsToWait], [strTitle], [natType]) = intButton
注釋
若提供 natSecondsToWait 且其值大于零,則消息框在 natSecondsToWait 秒后關(guān)閉。
natType 的含義與其在 Win32? MessageBox 函數(shù)中相同。下表顯示 natType 中的值及含義。下表中的值可以組合。
按鈕類型
值 說明
0 顯示“確定”按鈕
1 顯示“確定”和“取消”按鈕
2 顯示“終止”、“重試”和“忽略”按鈕
3 顯示“是”、“否”和“取消”按鈕
4 顯示“是”和“否”按鈕
5 顯示“重試”和“取消”按鈕
圖標(biāo)類型
值 說明
16 顯示停止標(biāo)記圖標(biāo)
32 顯示問號圖標(biāo)
48 顯示感嘆號圖標(biāo)
64 顯示信息標(biāo)記圖標(biāo)
以上兩個表并不涵蓋 natType 的所有值。完整的列表請參閱 Win32 文檔。
返回值 intButton 指示用戶所單擊的按扭編號。若用戶在 natSecondsToWait 秒之前不單擊按扭,則 intButton 設(shè)置為 -1 。
值 說明
1 “確定”按扭
2 “取消”按扭
3 “終止”按扭
4 “重試”按扭
5 “忽略”按扭
6 “是”按扭
7 “否”按扭
示例
Set WshShell = Wscript.CreateObject("Wscript.Shell")
WshShell.Popup "Where do you want to go today?"
請參閱
Wscript.Echo 方法
Wscript.Echo
Echo 方法在窗口(Wscript.exe 中)或“命令提示符”窗口(Cscript.exe 中)顯示參數(shù)。
參數(shù)用空格分隔。在 Cscript.exe 中,該方法在顯示最后一個參數(shù)之后輸出一對回車/換行(CR LF)。
語法
Wscript.Echo [anyArg...]
示例
Wscript.Echo
Wscript.Echo 1, 2, 3
Wscript.Echo "Windows Scripting Host is cool."
WshShell.RegDelete
RegDelete 從注冊表中刪除名為 strName 的鍵或值。
語法
WshShell.RegDelete strName
參數(shù)
strName
如果 strName 以反斜杠 (\) 結(jié)束,則該方法刪除鍵而不是值。
strName 參數(shù)必須以下列之一的根鍵名開始:
短根鍵名 長根鍵名
HKCU HKEY_CURRENT_USER
HKLM HKEY_LOCAL_MACHINE
HKCR HKEY_CLASSES_ROOT
HKEY_USERS
HKEY_CURRENT_CONFIG
示例
Set WshShell = Wscript.CreateObject("Wscript.Shell")
WshShell.RegDelete "HKCU\ScriptEngine\Value" ' Delete value "Value"
WshShell.RegDelete "HKCU\ScriptEngine\Key\" ' Delete key "Key"
請參閱
WshShell.RegRead 方法、WshShell.RegWrite 方法
WshShell.RegRead
RegRead 方法返回名為 strName 的注冊表鍵或值。
語法
WshShell.RegRead(strName) = strValue
參數(shù)
strName
如果 strName 以反斜杠 (\) 結(jié)束,則該方法返回鍵,而不是值。
strName 參數(shù)必須以下列根鍵名開始。
Short Long
HKCU HKEY_CURRENT_USER
HKLM HKEY_LOCAL_MACHINE
HKCR HKEY_CLASSES_ROOT
HKEY_USERS
HKEY_CURRENT_CONFIG
注釋
RegRead 方法僅支持 REG_SZ、REG_EXPAND_SZ、REG_DWORD、REG_BINARY 和 REG_MULTI_SZ 數(shù)據(jù)類型。若注冊表有其他數(shù)據(jù)類型,RegRead 返回 DISP_E_TYPEMISMATCH。
示例
Set WshShell = Wscript.CreateObject("Wscript.Shell")
WshShell.RegRead("HKCU\ScriptEngine\Val") ' Read from value "Val"
WshShell.RegRead("HKCU\ScriptEngine\Key\") ' Read from key "Key"
請參閱
WshShell.RegDelete 方法、WshShell.RegWrite 方法
WshShell.RegWrite
RegWrite 方法設(shè)置名為 strName 的注冊表鍵或值。
語法
WshShell.RegWrite strName, anyValue, [strType]
參數(shù)
strName
若 strName 以一個反斜杠 (\) 結(jié)束,則該方法設(shè)置鍵,而不是值。
strName 參數(shù)必須以下列根鍵名開頭。
Short Long
HKCU HKEY_CURRENT_USER
HKLM HKEY_LOCAL_MACHINE
HKCR HKEY_CLASSES_ROOT
HKEY_USERS
HKEY_CURRENT_CONFIG
anyValue
當(dāng) strType 為 REG_SZ 或 REG_EXPAND_SZ 時,RegWrite 方法自動將 anyValue 轉(zhuǎn)換為字符串。若 strType 為 REG_DWORD,則 anyValue 被轉(zhuǎn)換為整數(shù)。若 strType 為 REG_BINARY,則 anyValue 必須是一個整數(shù)。
strType
RegWrite 方法支持 strType 為 REG_SZ、REG_EXPAND_SZ、REG_DWORD 和 REG_BINARY。若其他的數(shù)據(jù)類型被作為 strType 傳遞,RegWrite 返回 E_INVALIDARG。
示例
Set WshShell = Wscript.CreateObject("Wscript.Shell")
WshShell.RegWrite "HKCU\ScriptEngine\Value", "Some string value"
WshShell.RegWrite "HKCU\ScriptEngine\Key\", 1 "REG_DWORD"
請參閱
WshShell.RegDelete 方法、WshShell.RegWrite方法
WshShell.Run
Run 方法創(chuàng)建一個新的進程,該進程以 intWindowStyle 窗口樣式執(zhí)行 strCommand。
語法
WshShell.Run (strCommand, [intWindowStyle], [blnWaitOnReturn])
參數(shù)
strCommand
在 strCommand 參數(shù)內(nèi)部的環(huán)境變量被自動擴展。
intWindowStyle
這是為新進程在 STARTUPINFO 結(jié)構(gòu)內(nèi)設(shè)置的 wShowWindow 元素的值。其意義與 ShowWindow 中的 nCmdShow 參數(shù)相同,可取以下值之一。名稱 值 含義
SW_HIDE
0 隱藏窗口并激活另一窗口。
SW_MINIMIZE
6 最小化指定窗口并激活按 Z 序排序的下一個頂層窗口。
SW_RESTORE
9 激活并顯示窗口。若窗口是最小化或最大化,則恢復(fù)到原來的大小和位置。在還原應(yīng)用程序的最小化窗口時,應(yīng)指定該標(biāo)志。
SW_SHOW
5 以當(dāng)前大小和位置激活并顯示窗口。
SW_SHOWMAXIMIZED
3 激活窗口并以最大化顯示該窗口。
SW_SHOWMINIMIZED
2 激活窗口并以最小化顯示該窗口。
SW_SHOWMINNOACTIVE
7 最小化顯示窗口。活動窗口保持活動。
SW_SHOWNA
8 以當(dāng)前狀態(tài)顯示窗口。活動窗口保持活動。
SW_SHOWNOACTIVATE
4 按窗口最近的大小和位置顯示。活動窗口保持活動。
SW_SHOWNORMAL
1 激活并顯示一個窗口。若窗口是最小化或最大化,則恢復(fù)到其原來的大小和位置。
blnWaitOnReturn
如果未指定 blnWaitOnReturn 或其值為 FALSE,則該方法立即返回到腳本繼續(xù)執(zhí)行而不等待進程結(jié)束。
若 blnWaitOnReturn 設(shè)為 TRUE,則 Run 方法返回由應(yīng)用程序返回的任何錯誤代碼。如果未指定 blnWaitOnReturn 或其值為 FALSE,則 Run 返回錯誤代碼 0(zero)。
示例
' This fragment launches Notepad with the current executed script
Set WshShell = Wscript.CreateObject("Wscript.Shell")
WshShell.Run ("notepad " & Wscript.ScriptFullName)
WshShell.Run ("%windir%\notepad" & Wscript.ScriptFullName)
' This fragment returns the error code from the executed application
Return = WshShell.Run("notepad " & Wscript.ScriptFullName, 1, TRUE)
3. 關(guān)于Shell.Application的使用
3.1、創(chuàng)建 Shell 對象
var Shell = new ActiveXObject("Shell.Application");
3.2、使用 Shell 屬性及方法
Shell.Application
Shell.Parent
Shell.CascadeWindows()
Shell.TileHorizontally()
Shell.TileVertically()
Shell.ControlPanelItem(sDir) /* 比如:sysdm.cpl */
Shell.EjectPC()
Shell.Explore(vDir)
Shell.Open(vDir)
Shell.FileRun()
Shell.FindComputer()
Shell.FindFiles()
Shell.Help()
Shell.MinimizeAll()
Shell.UndoMinimizeALL()
Shell.RefreshMenu()
Shell.SetTime()
Shell.TrayProperties()
Shell.ShutdownWindows()
Shell.Suspend()
oWindows = Shell.Windows() /* 返回ShellWindows對象 */
fFolder = Shell.NameSpace(vDir) /* 返回所打開的vDir的Folder對象 */
oFolder = Shell.BrowseForFolder(Hwnd, sTitle, iOptions [, vRootFolder]) /* 選擇文件夾對話框 */
/*示例:
function BrowseFolder()
{
var Message = "清選擇文件夾";
var Shell = new ActiveXObject( "Shell.Application" );
var Folder = Shell.BrowseForFolder(0,Message,0x0040,0x11);
if(Folder != null)
{
Folder = Folder.items(); // 返回 FolderItems 對象
Folder = Folder.item(); // 返回 Folderitem 對象
Folder = Folder.Path; // 返回路徑
if(Folder.charAt(varFolder.length-1) != "\\"){
Folder = varFolder + "\\";
}
return Folder;
}
}
*/
/*示例:
var Folder = Shell.NameSpace("C:\\"); // 返回 Folder對象
*/
摘要: 本部分內(nèi)容
n SQL基礎(chǔ)
n 中級SQL
 ...
閱讀全文
SQL是Structured Quevy Language(結(jié)構(gòu)化查詢語言)的縮寫。SQL是專為數(shù)據(jù)庫而建立的操作命令集,是一種功能齊全的數(shù)據(jù)庫語言。在使用它時,只需要發(fā)出“做什么”的命令,“怎么做”是不用使用者考慮的。SQL功能強大、簡單易學(xué)、使用方便,已經(jīng)成為了數(shù)據(jù)庫操作的基礎(chǔ),并且現(xiàn)在幾乎所有的數(shù)據(jù)庫均支持SQL。
##1 二、SQL數(shù)據(jù)庫數(shù)據(jù)體系結(jié)構(gòu)
SQL數(shù)據(jù)庫的數(shù)據(jù)體系結(jié)構(gòu)基本上是三級結(jié)構(gòu),但使用術(shù)語與傳統(tǒng)關(guān)系模型術(shù)語不同。在SQL中,關(guān)系模式(模式)稱為“基本表”(base table);存儲模式(內(nèi)模式)稱為“存儲文件”(stored file);子模式(外模式)稱為“視圖”(view);元組稱為“行”(row);屬性稱為“列”(column)。名稱對稱如^00100009a^:
##1 三、SQL語言的組成
在正式學(xué)習(xí)SQL語言之前,首先讓我們對SQL語言有一個基本認識,介紹一下SQL語言的組成:
1.一個SQL數(shù)據(jù)庫是表(Table)的集合,它由一個或多個SQL模式定義。
2.一個SQL表由行集構(gòu)成,一行是列的序列(集合),每列與行對應(yīng)一個數(shù)據(jù)項。
3.一個表或者是一個基本表或者是一個視圖。基本表是實際存儲在數(shù)據(jù)庫的表,而視圖是由若干基本表或其他視圖構(gòu)成的表的定義。
4.一個基本表可以跨一個或多個存儲文件,一個存儲文件也可存放一個或多個基本表。每個存儲文件與外部存儲上一個物理文件對應(yīng)。
5.用戶可以用SQL語句對視圖和基本表進行查詢等操作。在用戶角度來看,視圖和基本表是一樣的,沒有區(qū)別,都是關(guān)系(表格)。
6.SQL用戶可以是應(yīng)用程序,也可以是終端用戶。SQL語句可嵌入在宿主語言的程序中使用,宿主語言有FORTRAN,COBOL,PASCAL,PL/I,C和Ada語言等。SQL用戶也能作為獨立的用戶接口,供交互環(huán)境下的終端用戶使用。
##1 四、對數(shù)據(jù)庫進行操作
SQL包括了所有對數(shù)據(jù)庫的操作,主要是由4個部分組成:
1.數(shù)據(jù)定義:這一部分又稱為“SQL DDL”,定義數(shù)據(jù)庫的邏輯結(jié)構(gòu),包括定義數(shù)據(jù)庫、基本表、視圖和索引4部分。
2.數(shù)據(jù)操縱:這一部分又稱為“SQL DML”,其中包括數(shù)據(jù)查詢和數(shù)據(jù)更新兩大類操作,其中數(shù)據(jù)更新又包括插入、刪除和更新三種操作。
3.數(shù)據(jù)控制:對用戶訪問數(shù)據(jù)的控制有基本表和視圖的授權(quán)、完整性規(guī)則的描述,事務(wù)控制語句等。
4.嵌入式SQL語言的使用規(guī)定:規(guī)定SQL語句在宿主語言的程序中使用的規(guī)則。
下面我們將分別介紹:
##2 (一)數(shù)據(jù)定義
SQL數(shù)據(jù)定義功能包括定義數(shù)據(jù)庫、基本表、索引和視圖。
首先,讓我們了解一下SQL所提供的基本數(shù)據(jù)類型:(如^00100009b^)
1.數(shù)據(jù)庫的建立與刪除
(1)建立數(shù)據(jù)庫:數(shù)據(jù)庫是一個包括了多個基本表的數(shù)據(jù)集,其語句格式為:
CREATE DATABASE <數(shù)據(jù)庫名> [其它參數(shù)]
其中,<數(shù)據(jù)庫名>在系統(tǒng)中必須是唯一的,不能重復(fù),不然將導(dǎo)致數(shù)據(jù)存取失誤。[其它參數(shù)]因具體數(shù)據(jù)庫實現(xiàn)系統(tǒng)不同而異。
例:要建立項目管理數(shù)據(jù)庫(xmmanage),其語句應(yīng)為:
CREATE DATABASE xmmanage
(2) 數(shù)據(jù)庫的刪除:將數(shù)據(jù)庫及其全部內(nèi)容從系統(tǒng)中刪除。
其語句格式為:DROP DATABASE <數(shù)據(jù)庫名>
例:刪除項目管理數(shù)據(jù)庫(xmmanage),其語句應(yīng)為:
DROP DATABASE xmmanage
2.基本表的定義及變更
本身獨立存在的表稱為基本表,在SQL語言中一個關(guān)系唯一對應(yīng)一個基本表。基本表的定義指建立基本關(guān)系模式,而變更則是指對數(shù)據(jù)庫中已存在的基本表進行刪除與修改。
(1)基本表的定義:基本表是非導(dǎo)出關(guān)系,其定義涉及表名、列名及數(shù)據(jù)類型等,其語句格式為:
CREATE TABLE[<數(shù)據(jù)庫名>.]<表名>
(<列名> 數(shù)據(jù)類型 [缺省值] [NOT NULL / NULL]
[,<列名> 數(shù)據(jù)類型 [缺省值] [NOT NULL / NULL]]......
[,UNIQUE (列名[,列名]......)]
[,PRIMARY KEY(列名)]
[,F(xiàn)OREIGN KEY(列名[,列名]......)REFERENCE <表名>(列名[,列名]......)]
[,CHECK(條件)] [其它參數(shù)])
其中,〈數(shù)據(jù)庫名〉.]指出將新建立的表存放于該數(shù)據(jù)庫中;
新建的表由兩部分組成:其一為表和一組列名,其二是實際存放的數(shù)據(jù)(即可在定義表的同時,直接存放數(shù)據(jù)到表中);
列名為用戶自定義的易于理解的名稱,列名中不能使用空格;
數(shù)據(jù)類型為上面所介紹的幾種標(biāo)準(zhǔn)數(shù)據(jù)類型;
[NOT NULL/NULL]指出該列是否允許存放空值,SQL語言支持空值的概念,所謂空值是“不知道”或“無意義”的值,值得注意的是數(shù)據(jù)“0”和空格都不是空值,系統(tǒng)一般默認允許為空值,所以當(dāng)不允許為空值時,必須明確使用NOT NULL;
[,UNIQUE]將列按照其規(guī)定的順序進行排列,如不指定排列順序,則按列的定義順序排列;
[PRIMARY KEY]用于指定表的主鍵(即關(guān)系中的主屬性),實體完整性約束條件規(guī)定:主鍵必須是唯一的,非空的;
[,F(xiàn)OREIGN KEY (列名[,列名]......) REFERENCE<表名>(列名[,列名]......)]是用于指定外鍵參照完整性約束條件,F(xiàn)OREIGN KEY指定相關(guān)列為外鍵,其參照對象為另外一個表的指定列,即使用REFERENCE引入的外表中的列,當(dāng)不指定外表列名時,系統(tǒng)將默認其列名與參照鍵的列名相同,要注意的是:使用外鍵時必須使用參照,另外數(shù)據(jù)的外鍵參照完整性約束條件規(guī)定:外鍵的值要么與相對應(yīng)的主鍵相同,要么為空值(具體由實現(xiàn)系統(tǒng)不同而異)
[,CHECK]用于使用指定條件對存入表中的數(shù)據(jù)進行檢查,以確定其合法性,提高數(shù)據(jù)的安全性。
例:要建立一個學(xué)生情況表(student)
CREATE TABLE student //創(chuàng)建基本表student
(st_class CHAR(8),// 定義列st_class班級,數(shù)據(jù)類型為8位定長字符串
st_no CHAR(10) NOT NULL,//定義列st_no學(xué)號,類型為10位定長字符串,非空
st_name CHAR(8) NOT NULL,//定義列st_name姓名,類型為8位定長字符串,非空
st_sex CHAR(2),//定義列st_sex性別,類型為2位定長字符串
st_age SMALLINT,//定義列st_age年齡,類型為短整型
PRIMARY KEY (st_no))//定義st_no學(xué)號為主鍵。
例:要建立課程設(shè)置表(subject)
CREATE TABLE subject//創(chuàng)建基本表subject
(su_no CHAR(4) NOT NULL,// 定義列su_no課號,類型為4位定長字符串,非空
su_subject CHAR(20) NOT NULL,// 定義列su_subject課程名,類型為20位定長字符串,非空
su_credit INTEGER,// 定義列su_credit學(xué)分,類型為長整數(shù)
su_period INTEGER,//定義列su_period學(xué)時,類型為長整數(shù)
su_preno CHAR(4),//定義列su_preno先修課號,類型為4位定長字符串
PRIMARY KEY(su_no))//定義su_no課號為主鍵。
例:要建立學(xué)生選課表(score)
CREATE TABLE score //創(chuàng)建基本表score
(st_no CHAR(10),//定義列st_no學(xué)號,類型為10位定長字符串
su_no CHAR(4),//定義列su_no課號,類型為4位定長字符串
sc_score INTEGER NULL,//定義列sc_score,類型為長整形,可以為空值
FOREIGN KEY (st_no) REFERENCE student,//從表student中引入?yún)⒄胀怄Ist_no,以確保本表與表student的關(guān)聯(lián)與同步
FOREIGN KEY (suno) REFERENCE subject)//從表subject中引入?yún)⒄胀怄Isu_no,以確保本表與表subject的關(guān)聯(lián)與同步
(2)基本表的刪除:用以從數(shù)據(jù)庫中刪除一個基本表及其全部內(nèi)容,其語句格式為:
DROP TABLE[<數(shù)據(jù)庫名>.]表名
例如:將上面建立的表都刪除
DROP TABLE student,subject,score
(3)基本表的修改:在基本表建立并使用一段時間后,可能需要根據(jù)實際要求對基本表的結(jié)構(gòu)進行修改,即增加新的屬性或刪除屬性。
增加屬性的語句格式為:
ALTER TABLE [<數(shù)據(jù)庫名>.]表名 ADD
(<列名> 數(shù)據(jù)類型 [缺省值] [NOT NULL / NULL]
[,<列名> 數(shù)據(jù)類型[缺省值][NOT NULL / NULL]]......
[,UNIQUE (列名[,列名]......)]
[,PRIMARY KEY(列名)]
[,F(xiàn)OREIGN KEY(列名[,列名]......) REFERENCE <表名>(列名[,列名]......)]
[,CHECK(條件)][其它參數(shù)])
例如:在基本表student中加入列stborn出生日期,數(shù)據(jù)類型為DATE,且不能為空值
ALTER TABLE student ADD (stborn DATE NOT NULL)
刪除屬性的語句格式為:
ALTER TABLE [<數(shù)據(jù)庫名>.]表名 DROP
( <列名> 數(shù)據(jù)類型 [缺省值][NOT NULL / NULL]
[,<列名> 數(shù)據(jù)類型 [缺省值][NOT NULL / NULL]]......)
例如:將基本表student中的列st_age刪除
ALTER TABLE student DROP (st_age)
3.視圖定義與刪除
在SQL中,視圖是外模式一級數(shù)據(jù)結(jié)構(gòu)的基本單位。它是從一個或幾個基本表中導(dǎo)出的表,是從現(xiàn)有基本表中抽取若干子集組成用戶的“專用表”。這種構(gòu)造方式必須使用SQL中的SELECT語句來實現(xiàn)。在定義一個視圖時,只是把其定義存放在系統(tǒng)的數(shù)據(jù)中,而并不直接存儲視圖對應(yīng)的數(shù)據(jù),直到用戶使用視圖時才去求得對應(yīng)的數(shù)據(jù)。
(1)視圖的定義:定義視圖可以使用CREATE VIEW語句實現(xiàn),其語句格式為:
CREATE VIEW 視圖名 AS SELECT語句
從一個基本表中導(dǎo)出視圖:
例:從基本表student中導(dǎo)出只包括女學(xué)生情況的視圖
CREATE VIEW WOMANVIEW AS //創(chuàng)建一個視圖WOMANVIEW
SELECT st_class,st_no,st_name,st_age //選擇列st_class,st_no,st_name,st_age顯示
FROM student //從基本表student引入
WHERE st_sex=‘女’//引入條件為性別為“女”,注意字符變量都使用單引號引用
從多個基本表中導(dǎo)出視圖:
例如:從基本表student和score中導(dǎo)出只包括女學(xué)生且分數(shù)在60分以上的視圖
CREATEVIEW WOMAN_SCORE AS //定義視圖WOMANSCORE
SELECT student.st_class,student.st_no,student.st_name,student.st_age,score.sc_score //有選擇性顯示相關(guān)列
FROM student.score //從基本表student和score中引入
WHERE student.st_sex=‘女’AND score.sc_score>=60 AND student.st_no=score.st_no //選擇條件:性別為“女” 且分數(shù)在60分以上。并使用st_no將兩表聯(lián)系起來。
以后如果進行這一視圖的應(yīng)用,則只需使用語句
SELECT * FROM WOMAN_SCORE //其中“*”為通配符,代表所有元素
(2)視圖的刪除:用于刪除已不再使用的視圖,其語句格式如下:
DROP VIEW 視圖名
例:將上面建立的WOMAN_SCORE視圖刪除
DROP VIEW WOMAN_SCORE
4.索引的定義與刪除
索引屬于物理存儲概念,而不是邏輯的概念。在SQL中拋棄了索引概念,直接使用主鍵概念。值得一提的是,有些關(guān)系DBMS同時包括索引機制和主鍵機制,這里我們推薦使用主鍵機制,因為它對系統(tǒng)資源占用較低且效率較高。
(1)索引的定義:索引是建立在基本表之上的,其語句格式為:
CREATE [UNIQUE] INDEX 索引名 ON
[<數(shù)據(jù)庫名>.]表名(列名 [ASC/DESC][,列名 [ASC/DESC]]......)
這里,保留字UNIQUE表示基本表中的索引值不允許重復(fù),若缺省則表示索引值在表中允許重復(fù);DESC表示按索引鍵降序排列,若缺省或ASC表示升序排列。
例:對基本表student中的st_no和st_age建立索引,分別為升序與降序,且索引值不允許重復(fù)
CREATE UNIQUE INDEX STINDEX ON//創(chuàng)建索引STINDEX
student(st_no ASC,st_age DESC)//對student中的st_no和st_age建立索引
(2)索引的刪除:
DROP INDEX 索引名
例:刪除上面建立的索引STINDEX
DROP INDEX STINDEX
##2 (二)數(shù)據(jù)查詢
SQL是一種查詢功能很強的語言,只要是數(shù)據(jù)庫存在的數(shù)據(jù),總能通過適當(dāng)?shù)姆椒▽⑺鼜臄?shù)據(jù)庫中查找出來。SQL中的查詢語句只有一個:SELECT,它可與其它語句配合完成所有的查詢功能。SELECT語句的完整語法,可以有6個子句。完整的語法如下:
SELECT 目標(biāo)表的列名或列表達式集合
FROM 基本表或(和)視圖集合
[WHERE條件表達式]
[GROUP BY列名集合
[HAVING組條件表達式]]
[ORDER BY列名[集合]…]
整個語句的語義如下:從FROM子句中列出的表中,選擇滿足WHERE子句中給出的條件表達式的元組,然后按GROUPBY子句(分組子句)中指定列的值分組,再提取滿足HAVING子句中組條件表達式的那些組,按SELECT子句給出的列名或列表達式求值輸出。ORDER子句(排序子句)是對輸出的目標(biāo)表進行重新排序,并可附加說明ASC(升序)或DESC(降序)排列。
在WHERE子句中的條件表達式F中可出現(xiàn)下列操作符和運算函數(shù):
算術(shù)比較運算符:<,<=,>,>=,=,<>。
邏輯運算符:AND,OR,NOT。
集合運算符:UNION(并),INTERSECT(交),EXCEPT(差)。
集合成員資格運算符:IN,NOT IN
謂詞:EXISTS(存在量詞),ALL,SOME,UNIQUE。
聚合函數(shù):AVG(平均值),MIN(最小值),MAX(最大值),SUM(和),COUNT(計數(shù))。
F中運算對象還可以是另一個SELECT語句,即SELECT語句可以嵌套。
上面只是列出了WHERE子句中可出現(xiàn)的幾種主要操作,由于WHERE子句中的條件表達式可以很復(fù)雜,因此SELECT句型能表達的語義遠比其數(shù)學(xué)原形要復(fù)雜得多。
下面,我們以上面所建立的三個基本表為例,演示一下SELECT的應(yīng)用:
1.無條件查詢
例:找出所有學(xué)生的的選課情況
SELECT st_no,su_no
FROM score
例:找出所有學(xué)生的情況
SELECT*
FROM student
“*”為通配符,表示查找FROM中所指出關(guān)系的所有屬性的值。
2.條件查詢
條件查詢即帶有WHERE子句的查詢,所要查詢的對象必須滿足WHERE子句給出的條件。
例:找出任何一門課成績在70以上的學(xué)生情況、課號及分數(shù)
SELECT UNIQUE student.st_class,student.st_no,student.st_name,student.st_sex,student.st_age,score.su_no,score.score
FROM student,score
WHERE score.score>=70 AND score.stno=student.st_no
這里使用UNIQUE是不從查詢結(jié)果集中去掉重復(fù)行,如果使用DISTINCT則會去掉重復(fù)行。另外邏輯運算符的優(yōu)先順序為NOT→AND→OR。
例:找出課程號為c02的,考試成績不及格的學(xué)生
SELECT st_no
FROM score
WHERE su_no=‘c02’AND score<60
3.排序查詢
排序查詢是指將查詢結(jié)果按指定屬性的升序(ASC)或降序(DESC)排列,由ORDER BY子句指明。
例:查找不及格的課程,并將結(jié)果按課程號從大到小排列
SELECT UNIQUE su_no
FROM score
WHERE score<60
ORDER BY su_no DESC
4.嵌套查詢
嵌套查詢是指WHERE子句中又包含SELECT子句,它用于較復(fù)雜的跨多個基本表查詢的情況。
例:查找課程編號為c03且課程成績在80分以上的學(xué)生的學(xué)號、姓名
SELECT st_no,st_name
FROM student
WHERE stno IN (SELECT st_no
FROM score
WHERE su_no=‘c03’ AND score>80 )
這里需要明確的是:當(dāng)查詢涉及多個基本表時用嵌套查詢逐次求解層次分明,具有結(jié)構(gòu)程序設(shè)計特點。在嵌套查詢中,IN是常用到的謂詞。若用戶能確切知道內(nèi)層查詢返回的是單值,那么也可用算術(shù)比較運算符表示用戶的要求。
5.計算查詢
計算查詢是指通過系統(tǒng)提供的特定函數(shù)(聚合函數(shù))在語句中的直接使用而獲得某些只有經(jīng)過計算才能得到的結(jié)果。常用的函數(shù)有:
COUNT(*) 計算元組的個數(shù)
COUNT(列名) 對某一列中的值計算個數(shù)
SUM(列名) 求某一列值的總和(此列值是數(shù)值型)
AVG(列名) 求某一列值的平均值(此列值是數(shù)值型)
MAX(列名) 求某一列值中的最大值
MIN(列名) 求某一列值中的最小值
例:求男學(xué)生的總?cè)藬?shù)和平均年齡
SELECT COUNT(*),AVG(st_age)
FROM student
WHERE st_sex=‘男’
例:統(tǒng)計選修了課程的學(xué)生的人數(shù)
SELECT COUNT(DISTINCT st_no)
FROM score
注意:這里一定要加入DISTINCT,因為有的學(xué)生可能選修了多門課程,但統(tǒng)計時只能按1人統(tǒng)計,所以要使用DISTINCT進行過濾。
##2 (三) 數(shù)據(jù)更新
數(shù)據(jù)更新包括數(shù)據(jù)插入、刪除和修改操作。它們分別由INSERT語句,DELETE語句及UPDATE語句完成。這些操作都可在任何基本表上進行,但在視圖上有所限制。其中,當(dāng)視圖是由單個基本表導(dǎo)出時,可進行插入和修改操作,但不能進行刪除操作;當(dāng)視圖是從多個基本表中導(dǎo)出時,上述三種操作都不能進行。
1.數(shù)據(jù)插入
將數(shù)據(jù)插入SQL的基本表有兩種方式:一種是單元組的插入,另一種是多元組的插入。
單元組的插入:向基本表score中插入一個成績元組(100002,c02,95),可使用以下語句:
INSERT INTO score(st_no,su_no,score) VALUES(‘100002’,‘c02’,95)
由此,可以給出單元組的插入語句格式:
INSERT INTO表名(列名1[,列名2]…) VALUES(列值1[,列值2]…)
其中,列名序列為要插入值的列名集合,列值序列為要插入的對應(yīng)值。若插入的是一個表的全部列值,則列名可以省略不寫如上面的(st_no,su_no,score)可以省去;若插入的是表的部分列值,則必須列出相應(yīng)列名,此時,該關(guān)系中未列出的列名取空值。
多元組的插入:這是一種把SELECT語句查詢結(jié)果插入到某個已知的基本表中的方法。
例如:需要在表score中求出每個學(xué)生的平均成績,并保留在某個表中。此時可以先創(chuàng)建一個新的基本表stu_avggrade,再用INSERT語句把表score中求得的每一個學(xué)生的平均成績(用SELECT求得)插入至stu_avggrade中。
CREATE TABLE stu_avggrade
(st_no CHAR(10) NOT NULL,//定義列st_no學(xué)號,類型為10位定長字符串,非空
age_grade SMALLINT NOT NULL )// 定義列age_grade平均分,類型為短整形,非空
INSERT INTO stu_avggrade(st_no,age_grade)
SELECT st_no,AVG(score)
FROM score
GROUP BY st_no //因為要求每一個學(xué)生所有課程的平均成績,必須按學(xué)號分組進行計算。
2.數(shù)據(jù)刪除
SQL的刪除操作是指從基本表中刪除滿足WHERE<條件表達式>的記錄。如果沒有WHERE子句,則刪除表中全部記錄,但表結(jié)構(gòu)依然存在。其語句格式為:
DELETE FROM表名[WHERE 條件表達式]
下面舉例說明:
單元組的刪除:把學(xué)號為100002的學(xué)生從表student中刪除,可用以下語句:
DELETE FROM student
WHERE st_no=‘100002’//因為學(xué)號為100002的學(xué)生在表student中只有一個,所以為單元組的刪除
多元組的刪除:學(xué)號為100002的成績從表score中刪除,可用以下語句:
DELETE FROM score
WHERE st_no=‘100002’//由于學(xué)號為100002的元組在表score中可能有多個,所以為多元組刪除
帶有子查詢的刪除操作:刪除所有不及格的學(xué)生記錄,可用以下語句
DELETE FROM student
WHERE st_no IN
(SELETE st_no
FROM score
WHERE score<60)
3.數(shù)據(jù)修改
修改語句是按SET子句中的表達式,在指定表中修改滿足條件表達式的記錄的相應(yīng)列值。其語句格式如下:
UPDATE 表名 SET 列名=列改變值[WHERE 條件表達式]
例:把c02的課程名改為英語,可以用下列語句:
UPDATE subject
SET su_subject=‘英語’
WHERE su_no=‘c02’
例:將課程成績達到70分的學(xué)生成績,再提高10%
UPDATE score
SET score=1.1*score
WHERE score>=70
SQL的刪除語句和修改語句中的WHERE子句用法與SELECT中WHERE子句用法相同。數(shù)據(jù)的刪除和修改操作,實際上要先做SELECT查詢操作,然后再把找到的元組刪除或修改。
##2 (四) 數(shù)據(jù)控制
由于數(shù)據(jù)庫管理系統(tǒng)是一個多用戶系統(tǒng),為了控制用戶對數(shù)據(jù)的存取權(quán)利,保持數(shù)據(jù)的共享及完全性,SQL語言提供了一系列的數(shù)據(jù)控制功能。其中,主要包括安全性控制、完整性控制、事務(wù)控制和并發(fā)控制。
1.安全性控制
數(shù)據(jù)的安全性是指保護數(shù)據(jù)庫,以防非法使用造成數(shù)據(jù)泄露和破壞。保證數(shù)據(jù)安全性的主要方法是通過對數(shù)據(jù)庫存取權(quán)力的控制來防止非法使用數(shù)據(jù)庫中的數(shù)據(jù)。即限定不同用戶操作不同的數(shù)據(jù)對象的權(quán)限。
存取權(quán)控制包括權(quán)力的授與、檢查和撤消。權(quán)力授與和撤消命令由數(shù)據(jù)庫管理員或特定應(yīng)用人員使用。系統(tǒng)在對數(shù)據(jù)庫操作前,先核實相應(yīng)用戶是否有權(quán)在相應(yīng)數(shù)據(jù)上進行所要求的操作。
(1)權(quán)力授與:權(quán)力授與有數(shù)據(jù)庫管理員專用的授權(quán)和用戶可用的授權(quán)兩種形式。數(shù)據(jù)庫管理員專用授權(quán)命令格式如下:
|CONNECT |
GRANT|RESOURCE|TO 用戶名[IDENTIFED BY 口令]
|DBA |
其中,CONNECT表示數(shù)據(jù)庫管理員允許指定的用戶具有連接到數(shù)據(jù)庫的權(quán)力,這種授權(quán)是針對新用戶;RESOURCE表示允許用戶建立自己的新關(guān)系模式,用戶獲得CONNECT權(quán)力后,必須獲得RESOURCE權(quán)力才能創(chuàng)建自己的新表;DBA表示數(shù)據(jù)庫管理員將自己的特權(quán)授與指定的用戶。若要同時授與某用戶上述三種授權(quán)中的多種權(quán)力,則必須通過三個相應(yīng)的GRANT命令指定。
另外,具有CONNECT和RESOURCE授權(quán)的用戶可以建立自己的表,并在自己建立的表和視圖上具有查詢、插入、修改和刪除的權(quán)力。但通常不能使用其他用戶的關(guān)系,除非能獲得其他用戶轉(zhuǎn)授給他的相應(yīng)權(quán)力。
例:若允許用戶SSE連接到數(shù)據(jù)庫并可以建立他自己的關(guān)系,則可通過如下命令授與權(quán)力:
GRANT CONNECT TO SSE INENTIFIED BY BD1928
GRANT RESOURCE TO SSE
用戶可用的授權(quán)是指用戶將自己擁有的部分或全部權(quán)力轉(zhuǎn)授給其他用戶的命令形式,其命令格式如下:
|SELECT |
|INSERT |
|DELETE |
GRANT|UPDATE(列名1[,列名2]…)|ON|表名 |TO|用戶名|[WITH GRANT OPTION]
|ALTER | |視圖名| |PUBLIC|
|NDEX |
|ALL |
若對某一用戶同時授與多種操作權(quán)力,則操作命令符號可用“,”相隔。
PUBLIC 表示將權(quán)力授與數(shù)據(jù)庫的所有用戶,使用時要注意:
任選項WITH GRANT OPTION表示接到授權(quán)的用戶,具有將其所得到的同時權(quán)力再轉(zhuǎn)授給其他用戶權(quán)力。
例:如果將表student的查詢權(quán)授與所有用戶,可使用以下命令:
GRANT SELECT ON student TO PUBLIC
例:若將表subject的插入及修改權(quán)力授與用戶SSE并使得他具有將這種權(quán)力轉(zhuǎn)授他人的權(quán)力,則可使用以下命令:
GRANT INSERT,UPDATE(su_subject) ON subject TO SSE WITH GRANT OPTION
這里,UPDATE后面跟su_subject是指出其所能修改的列。
(2)權(quán)力回收:權(quán)力回收是指回收指定用戶原已授與的某些權(quán)力。與權(quán)力授與命令相匹配,權(quán)力回收也有數(shù)據(jù)庫管理員專用和用戶可用的兩種形式。
DBA專用的權(quán)力回收命令格式為:
|CONNECT |
REVOKE|RESOURCE|FROM用戶名
|DBA |
用戶可用的權(quán)力回收命令格式為:
|SELECT |
|INSERT |
|DELETE |
REVOKE|UPDATE(列名1[,列名2]…) |ON|表名 |FROM |用戶名|
|ALTER | |視圖名| |PUBLIC|
|INDEX |
|ALL |
例:回收用戶SSE的DBA權(quán)力:
REVOKE DBA FROM SSE
2.完整性控制
數(shù)據(jù)庫的完整性是指數(shù)據(jù)的正確性和相容性,這是數(shù)據(jù)庫理論中的重要概念。完整性控制的主要目的是防止語義上不正確的數(shù)據(jù)進入數(shù)據(jù)庫。關(guān)系系統(tǒng)中的完整性約束條件包括實體完整性、參照完整性和用戶定義完整性。而完整性約束條件的定義主要是通過CREATE TABLE語句中的[CHECK]子句來完成。另外,還有一些輔助命令可以進行數(shù)據(jù)完整性保護。如UNIQUE和NOT NULL,前者用于防止重復(fù)值進入數(shù)據(jù)庫,后者用于防止空值。
3.事務(wù)控制
事務(wù)是并發(fā)控制的基本單位,也是恢復(fù)的基本單位。在SQL中支持事務(wù)的概念。所謂事務(wù),是用戶定義的一個操作序列(集合),這些操作要么都做,要么一個都不做,是一個不可分割的整體。一個事務(wù)通常以BEGIN TRANSACTION開始,以COMMIT或ROLLBACK結(jié)束。
SQL提供了事務(wù)提交和事務(wù)撤消兩種命令:
(1)事務(wù)提交:事務(wù)提交的命令為:
COMMIT [WORK]
事務(wù)提交標(biāo)志著對數(shù)據(jù)庫的某種應(yīng)用操作成功地完成,所有對數(shù)據(jù)庫的操作都必須作為事務(wù)提交給系統(tǒng)時才有效。事務(wù)一經(jīng)提交就不能撤消。
(2)事務(wù)撤消:事務(wù)撤消的命令是:
ROLLBACK [WORK]
事務(wù)撤消標(biāo)志著相應(yīng)事務(wù)對數(shù)據(jù)庫操作失敗,因而要撤消對數(shù)據(jù)庫的改變,即要“回滾”到相應(yīng)事務(wù)開始時的狀態(tài)。
當(dāng)系統(tǒng)非正常結(jié)束時(如掉電、系統(tǒng)死機),將自動執(zhí)行ROLLBACK命令
SQL還提供了自動提交事務(wù)的機制,其命令為:
SET AUTO COMMIT ON
其對應(yīng)的人工工作方式命令為:
SET AUTO COMMIT OFF
一旦規(guī)定了自動提交事務(wù)方式,則系統(tǒng)將每條SQL命令視為一個事務(wù),并在命令成功執(zhí)行完成時自動地完成事務(wù)提交。
4.并發(fā)控制
數(shù)據(jù)庫作為共享資源,允許多個用戶程序并行地存取數(shù)據(jù)。當(dāng)多個用戶并行地操作數(shù)據(jù)庫時,需要通過并發(fā)控制對它們加以協(xié)調(diào)、控制,以保證并發(fā)操作的正確執(zhí)行,并保證數(shù)據(jù)庫的一致性。
在SQL中,并發(fā)控制采用封鎖技術(shù)實現(xiàn),當(dāng)一個事務(wù)欲對某個數(shù)據(jù)對象操作時,可申請對該對象加鎖,取得對數(shù)據(jù)對象的一定控制,以限制其他事務(wù)對該對象的操作。其語句格式為:
|SHARE |
LOCK TABLE 表名(或表名集合)IN |EXCLUSVE |MODE [NOWAIT]
|SHARE UPDATE|
其中,表名(或表名集合)中指出封鎖對象,若為多個表名,則各個表名間以“,”相隔;任選項NOWAIT表示多個用戶要求封鎖相同的關(guān)系時,后來提出的要求會被立即退回去,否則會等待該資源釋放。
SHARE表示共享封鎖方式;EXCLUSIVE表示獨占封鎖方式;SHARE UPDAE表示共享更新封鎖方式。其中共享封鎖方式允許其他事務(wù)讀同一數(shù)據(jù),但防止其他事務(wù)對已封鎖的表進行更新,該鎖主要防止在表的兩次查詢之間對該表的改動;共享更新封鎖SHARE UPDATE是一個行封鎖機制,它可改善表級封鎖的并行性,它能允許并發(fā)事務(wù)讀和修改一個表中的不同的行;獨占封鎖方式EXCLUSIVE禁止其他事務(wù)獲得一個共享鎖且禁止其他事務(wù)執(zhí)行任何數(shù)據(jù)操作語句,即一旦某個運行事務(wù)對某個數(shù)據(jù)對象施加了排它鎖,則其他任何事務(wù)都不能再對該數(shù)據(jù)對象施加任何方式的鎖,只有處于等待狀態(tài)。如果不想無限等待,則選擇NOWAIT。
PHP(Hypertext Preprocessor,超文本預(yù)處理器)是一個遞歸的縮寫名稱,它是一種內(nèi)嵌在HTML頁面內(nèi)的腳本語言。它的功能強大,使用方便,開發(fā)難度不大,而且可以免費使用。
SQL語法參考手冊
日期:2000-9-14 15:41:00
出處:未知
作者:未知
DB2 提供了關(guān)連式資料庫的查詢語言 SQL (Structured Query Language),是一種非常口語化、既易學(xué)又易懂的語法。 此一語言幾乎是每個資料庫系統(tǒng)都必須提供的,用以表示關(guān)連式的操作,包含了資料的定義(DDL)以及資料的處理(DML)。SQL原來拼成SEQUEL,這語言的原型以“系統(tǒng) R“的名字在 IBM 圣荷西實驗室完成,經(jīng)過IBM內(nèi)部及其他的許多使用性及效率測試,其結(jié)果相當(dāng)令人滿意,并決定在系統(tǒng)R 的技術(shù)基礎(chǔ)發(fā)展出來 IBM 的產(chǎn)品。而且美國國家標(biāo)準(zhǔn)學(xué)會(ANSI)及國際標(biāo)準(zhǔn)化組織(ISO)在1987遵循一個幾乎是以 IBM SQL 為基礎(chǔ)的標(biāo)準(zhǔn)關(guān)連式資料語言定義。
一、資料定義 DDL(Data Definition Language)
資料定語言是指對資料的格式和形態(tài)下定義的語言,他是每個資料庫要建立時候時首先要面對的,舉凡資料分哪些表格關(guān)系、表格內(nèi)的有什麼欄位主鍵、表格和表格之間互相參考的關(guān)系等等,都是在開始的時候所必須規(guī)劃好的。
1、建表格:
CREATE TABLE table_name(
column1 DATATYPE [NOT NULL] [NOT NULL PRIMARY KEY],
column2 DATATYPE [NOT NULL],
...)
說明:
DATATYPE --是資料的格式,詳見表。
NUT NULL --可不可以允許資料有空的(尚未有資料填入)。
PRIMARY KEY --是本表的主鍵。
2、更改表格
ALTER TABLE table_name
ADD COLUMN column_name DATATYPE
說明:增加一個欄位(沒有刪除某個欄位的語法。
ALTER TABLE table_name
ADD PRIMARY KEY (column_name)
說明:更改表得的定義把某個欄位設(shè)為主鍵。
ALTER TABLE table_name
DROP PRIMARY KEY (column_name)
說明:把主鍵的定義刪除。
3、建立索引
CREATE INDEX index_name ON table_name (column_name)
說明:對某個表格的欄位建立索引以增加查詢時的速度。
4、刪除
DROP table_name
DROP index_name
二、的資料形態(tài) DATATYPEs
smallint
16 位元的整數(shù)。
interger
32 位元的整數(shù)。
decimal(p,s)
p 精確值和 s 大小的十進位整數(shù),精確值p是指全部有幾個數(shù)(digits)大小值,s是指小數(shù)
點後有幾位數(shù)。如果沒有特別指定,則系統(tǒng)會設(shè)為 p=5; s=0 。
float
32位元的實數(shù)。
double
64位元的實數(shù)。
char(n)
n 長度的字串,n不能超過 254。
varchar(n)
長度不固定且其最大長度為 n 的字串,n不能超過 4000。
graphic(n)
和 char(n) 一樣,不過其單位是兩個字元 double-bytes, n不能超過127。這個形態(tài)是為
了支援兩個字元長度的字體,例如中文字。
vargraphic(n)
可變長度且其最大長度為 n 的雙字元字串,n不能超過 2000。
date
包含了 年份、月份、日期。
time
包含了 小時、分鐘、秒。
timestamp
包含了 年、月、日、時、分、秒、千分之一秒。
三、資料操作 DML (Data Manipulation Language)
資料定義好之後接下來的就是資料的操作。資料的操作不外乎增加資料(insert)、查詢資料(query)、更改資料(update) 、刪除資料(delete)四種模式,以下分 別介紹他們的語法:
1、增加資料:
INSERT INTO table_name (column1,column2,...)
VALUES ( value1,value2, ...)
說明:
1.若沒有指定column 系統(tǒng)則會按表格內(nèi)的欄位順序填入資料。
2.欄位的資料形態(tài)和所填入的資料必須吻合。
3.table_name 也可以是景觀 view_name。
INSERT INTO table_name (column1,column2,...)
SELECT columnx,columny,... FROM another_table
說明:也可以經(jīng)過一個子查詢(subquery)把別的表格的資料填入。
2、查詢資料:
基本查詢
SELECT column1,columns2,...
FROM table_name
說明:把table_name 的特定欄位資料全部列出來
SELECT *
FROM table_name
WHERE column1 = xxx
[AND column2 > yyy] [OR column3 <> zzz]
說明:
1.'*'表示全部的欄位都列出來。
2.WHERE 之後是接條件式,把符合條件的資料列出來。
SELECT column1,column2
FROM table_name
ORDER BY column2 [DESC]
說明:ORDER BY 是指定以某個欄位做排序,[DESC]是指從大到小排列,若沒有指明,則是從小到大
排列
組合查詢
組合查詢是指所查詢得資料來源并不只有單一的表格,而是聯(lián)合一個以上的
表格才能夠得到結(jié)果的。
SELECT *
FROM table1,table2
WHERE table1.colum1=table2.column1
說明:
1.查詢兩個表格中其中 column1 值相同的資料。
2.當(dāng)然兩個表格相互比較的欄位,其資料形態(tài)必須相同。
3.一個復(fù)雜的查詢其動用到的表格可能會很多個。
整合性的查詢:
SELECT COUNT (*)
FROM table_name
WHERE column_name = xxx
說明:
查詢符合條件的資料共有幾筆。
SELECT SUM(column1)
FROM table_name
說明:
1.計算出總和,所選的欄位必須是可數(shù)的數(shù)字形態(tài)。
2.除此以外還有 AVG() 是計算平均、MAX()、MIN()計算最大最小值的整合性查詢。
SELECT column1,AVG(column2)
FROM table_name
GROUP BY column1
HAVING AVG(column2) > xxx
說明:
1.GROUP BY: 以column1 為一組計算 column2 的平均值必須和 AVG、SUM等整合性查詢的關(guān)鍵字
一起使用。
2.HAVING : 必須和 GROUP BY 一起使用作為整合性的限制。
復(fù)合性的查詢
SELECT *
FROM table_name1
WHERE EXISTS (
SELECT *
FROM table_name2
WHERE conditions )
說明:
1.WHERE 的 conditions 可以是另外一個的 query。
2.EXISTS 在此是指存在與否。
SELECT *
FROM table_name1
WHERE column1 IN (
SELECT column1
FROM table_name2
WHERE conditions )
說明:
1. IN 後面接的是一個集合,表示column1 存在集合里面。
2. SELECT 出來的資料形態(tài)必須符合 column1。
其他查詢
SELECT *
FROM table_name1
WHERE column1 LIKE 'x%'
說明:LIKE 必須和後面的'x%' 相呼應(yīng)表示以 x為開頭的字串。
SELECT *
FROM table_name1
WHERE column1 IN ('xxx','yyy',..)
說明:IN 後面接的是一個集合,表示column1 存在集合里面。
SELECT *
FROM table_name1
WHERE column1 BETWEEN xx AND yy
說明:BETWEEN 表示 column1 的值介於 xx 和 yy 之間。
3、更改資料:
UPDATE table_name
SET column1='xxx'
WHERE conditoins
說明:
1.更改某個欄位設(shè)定其值為'xxx'。
2.conditions 是所要符合的條件、若沒有 WHERE 則整個 table 的那個欄位都會全部被更改。
4、刪除資料:
DELETE FROM table_name
WHERE conditions
說明:刪除符合條件的資料。
說明:關(guān)于WHERE條件后面如果包含有日期的比較,不同數(shù)據(jù)庫有不同的表達式。具體如下:
(1)如果是ACCESS數(shù)據(jù)庫,則為:WHERE mydate>#2000-01-01#
(2)如果是ORACLE數(shù)據(jù)庫,則為:WHERE mydate>cast('2000-01-01' as date)
或:WHERE mydate>to_date('2000-01-01','yyyy-mm-dd')
在Delphi中寫成:
thedate= '2000-01-01';
query1.SQL.add('select * from abc where mydate>cast('+''+thedate+''+' as date)');
如果比較日期時間型,則為:
WHERE mydatetime>to_date('2000-01-01 10:00:01','yyyy-mm-dd hh24:mi:ss')
1.oncontextmenu="window.event.returnvalue=false"將徹底屏蔽鼠標(biāo)右鍵
oncontextmenu=self.event.returnValue=false
oncontextmenu="return false"
<tableborderoncontextmenu=return(false)><td>no</table>可用于Table
2.<bodyonselectstart="returnfalse">取消選取、防止復(fù)制
3.onpaste="returnfalse"不準(zhǔn)粘貼
4.oncopy="returnfalse;"oncut="returnfalse;"防止復(fù)制
5.<linkrel="ShortcutIcon"href="favicon.ico">IE地址欄前換成自己的圖標(biāo)
6.<linkrel="Bookmark"href="favicon.ico">可以在收藏夾中顯示出你的圖標(biāo)
7.<inputstyle="ime-mode:disabled">關(guān)閉輸入法
8.永遠都會帶著框架
<scriptlanguage="javascript"><!--
if(window==top)top.location.href="frames.htm";//frames.htm為框架網(wǎng)頁
//--></script>
9.防止被人frame
<SCRIPTLANGUAGE=javascript><!--
if(top.location!=self.location)top.location=self.location;
//--></SCRIPT>
10.<noscript><iframesrc=*.html></iframe></noscript>網(wǎng)頁將不能被另存為
11.<inputtype=buttonvalue=查看網(wǎng)頁源代碼
onclick="window.location='view-source:'+'<IMG src="pic/url.gif" align=absMiddle border=0>http://www.csdn.net/">
12.怎樣通過asp的手段來檢查來訪者是否用了代理
<%ifRequest.ServerVariables("HTTP_X_FORWARDED_FOR")<>""then
response.write"<fontcolor=#FF0000>您通過了代理服務(wù)器,"&_
"真實的IP為"&Request.ServerVariables("HTTP_X_FORWARDED_FOR")
endif
%>
13.取得控件的絕對位置
//javascript
<scriptlanguage="javascript">
functiongetIE(e){
vart=e.offsetTop;
varl=e.offsetLeft;
while(e=e.offsetParent){
t+=e.offsetTop;
l+=e.offsetLeft;
}
alert("top="+t+"\nleft="+l);
}
</script>
//VBScript
<scriptlanguage="VBScript"><!--
functiongetIE()
dimt,l,a,b
seta=document.all.img1
t=document.all.img1.offsetTop
l=document.all.img1.offsetLeft
whilea.tagName<>"BODY"
seta=a.offsetParent
t=t+a.offsetTop
l=l+a.offsetLeft
wend
msgbox"top="&t&chr(13)&"left="&l,64,"得到控件的位置"
endfunction
--></script>
14.光標(biāo)是停在文本框文字的最后
<scriptlanguage="javascript">
functioncc()
{
vare=event.srcElement;
varr=e.createTextRange();
r.moveStart('character',e.value.length);
r.collapse(true);
r.select();
}
</script>
<inputtype=textname=text1value="123"onfocus="cc()">
15.判斷上一頁的來源
asp:
request.servervariables("HTTP_REFERER")
javascript:
document.referrer
16.最小化、最大化、關(guān)閉窗口
<objectid=hh1classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
<paramname="Command"value="Minimize"></object>
<objectid=hh2classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
<paramname="Command"value="Maximize"></object>
<OBJECTid=hh3classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
<PARAMNAME="Command"value="Close"></OBJECT>
<inputtype=buttonvalue=最小化onclick=hh1.Click()>
<inputtype=buttonvalue=最大化onclick=hh2.Click()>
<inputtype=buttonvalue=關(guān)閉onclick=hh3.Click()>
本例適用于IE
17.
<%
'定義數(shù)據(jù)庫連接的一些常量
ConstadOpenForwardOnly=0'游標(biāo)只向前瀏覽記錄,不支持分頁、Recordset、BookMark
ConstadOpenKeyset=1'鍵集游標(biāo),其他用戶對記錄說做的修改將反映到記錄集中,但其他用戶增加或刪除記錄不會反映到記錄集中。支持分頁、Recordset、BookMark
ConstadOpenDynamic=2'動態(tài)游標(biāo)功能最強,但耗資源也最多。用戶對記錄說做的修改,增加或刪除記錄都將反映到記錄集中。支持全功能瀏覽(ACCESS不支持)。
ConstadOpenStatic=3'靜態(tài)游標(biāo),只是數(shù)據(jù)的一個快照,用戶對記錄說做的修改,增加或刪除記錄都不會反映到記錄集中。支持向前或向后移動
ConstadLockReadOnly=1'鎖定類型,默認的,只讀,不能作任何修改
ConstadLockPessimistic=2'當(dāng)編輯時立即鎖定記錄,最安全的方式
ConstadLockOptimistic=3'只有在調(diào)用Update方法時才鎖定記錄集,而在此前的其他操作仍可對當(dāng)前記錄進行更改、插入和刪除等
ConstadLockBatchOptimistic=4'當(dāng)編輯時記錄不會被鎖定,而更改、插入和刪除是在批處理方式下完成的
ConstadCmdText=&H0001
ConstadCmdTable=&H0002
%>
18.網(wǎng)頁不會被緩存
HTM網(wǎng)頁
<METAHTTP-EQUIV="pragma"CONTENT="no-cache">
<METAHTTP-EQUIV="Cache-Control"CONTENT="no-cache,must-revalidate">
<METAHTTP-EQUIV="expires"CONTENT="Wed,26Feb199708:21:57GMT">
或者<METAHTTP-EQUIV="expires"CONTENT="0">
ASP網(wǎng)頁
Response.Expires=-1
Response.ExpiresAbsolute=Now()-1
Response.cachecontrol="no-cache"
PHP網(wǎng)頁
header("Expires:Mon,26Jul199705:00:00GMT");
header("Cache-Control:no-cache,must-revalidate");
header("Pragma:no-cache");
19.檢查一段字符串是否全由數(shù)字組成
<scriptlanguage="javascript"><!--
functioncheckNum(str){returnstr.match(/\D/)==null}
alert(checkNum("1232142141"))
alert(checkNum("123214214a1"))
//--></script>
20.獲得一個窗口的大小
document.body.clientWidth,document.body.clientHeight
21.怎么判斷是否是字符
if(/[^\x00-\xff]/g.test(s))alert("含有漢字");
elsealert("全是字符");
22.TEXTAREA自適應(yīng)文字行數(shù)的多少
<textarearows=1 name=s1 cols=27 onpropertychange="this.style.posHeight=this.scrollHeight">
</textarea>
23.日期減去天數(shù)等于第二個日期
<scriptlanguage=javascript>
functioncc(dd,dadd)
{
//可以加上錯誤處理
vara=newDate(dd)
a=a.valueOf()
a=a-dadd*24*60*60*1000
a=newDate(a)
alert(a.getFullYear()+"年"+(a.getMonth()+1)+"月"+a.getDate()+"日")
}
cc("12/23/2002",2)
</script>
24.選擇了哪一個Radio
<HTML><scriptlanguage="vbscript">
functioncheckme()
foreachobinradio1
ifob.checkedthenwindow.alertob.value
next
endfunction
</script><BODY>
<INPUT name="radio1" type="radio" value="style" checked>Style
<INPUT name="radio1" type="radio" value="barcode">Barcode
<INPUT type="button" value="check"onclick="checkme()">
</BODY></HTML>
25.獲得本頁url的request.servervariables("")集合
Response.Write"<TABLEborder=1><!--TableHeader--><TR><TD><B>Variables</B></TD><TD><B>value</B></TD></TR>"
foreachobinRequest.ServerVariables
Response.Write"<TR><TD>"&ob&"</TD><TD>"&Request.ServerVariables(ob)&"</TD></TR>"
next
Response.Write"</TABLE>"
26.
本機ip<%=request.servervariables("remote_addr")%>
服務(wù)器名<%=Request.ServerVariables("SERVER_NAME")%>
服務(wù)器IP<%=Request.ServerVariables("LOCAL_ADDR")%>
服務(wù)器端口<%=Request.ServerVariables("SERVER_PORT")%>
服務(wù)器時間<%=now%>
IIS版本<%=Request.ServerVariables"SERVER_SOFTWARE")%>
腳本超時時間<%=Server.ScriptTimeout%>
本文件路徑<%=server.mappath(Request.ServerVariables("SCRIPT_NAME"))%>
服務(wù)器CPU數(shù)量<%=Request.ServerVariables("NUMBER_OF_PROCESSORS")%>
服務(wù)器解譯引擎<%=ScriptEngine&"/" & ScriptEngineMajorVersion &"." & ScriptEngineMinorVersion & "." & ScriptEngineBuildVersion%>
服務(wù)器操作系統(tǒng)<%=Request.ServerVariables("OS")%>
27.ENTER鍵可以讓光標(biāo)移到下一個輸入框
<input onkeydown="if(event.keyCode==13)event.keyCode=9">
28.檢測某個網(wǎng)站的鏈接速度:
把如下代碼加入<body>區(qū)域中:
<scriptlanguage=javascript>
tim=1
setInterval("tim++",100)
b=1
varautourl=newArray()
autourl[1]="< src="pic/url.gif" align=absMiddle border=0>www.njcatv.net"
autourl[2]="javacool.3322.net"
autourl[3]="< src="pic/url.gif" align=absMiddle border=0>www.sina.com.cn"
autourl[4]="www.nuaa.edu.cn"
autourl[5]="< src="pic/url.gif" align=absMiddle border=0>www.cctv.com"
functionbutt(){
document.write("<formname=autof>")
for(vari=1;i<autourl.length;i++)
document.write("<inputtype=textname=txt"+i+"size=10value=測試中……>=》<inputtype=textname=url"+i+"size=40>=》<inputtype=buttonvalue=GOonclick=window.open(this.form.url"+i+".value)><br/>")
document.write("<inputtype=submitvalue=刷新></form>")
}
butt()
functionauto(url){
document.forms[0]["url"+b].value=url
if(tim>200)
{document.forms[0]["txt"+b].value="鏈接超時"}
else
{document.forms[0]["txt"+b].value="時間"+tim/10+"秒"}
b++
}
functionrun(){for(vari=1;i<autourl.length;i++)document.write("<imgsrc=http://"+autourl[i]+"/"+Math.random()+"width=1height=1onerror=auto('< src="pic/url.gif" align=absMiddle border=0>http://";+autourl[i]+"')>")}
run()</script>
29.各種樣式的光標(biāo)
auto:標(biāo)準(zhǔn)光標(biāo)
default:標(biāo)準(zhǔn)箭頭
hand:手形光標(biāo)
wait:等待光標(biāo)
text:I形光標(biāo)
vertical-text:水平I形光標(biāo)
no-drop:不可拖動光標(biāo)
not-allowed:無效光標(biāo)
help:?幫助光標(biāo)
all-scroll:三角方向標(biāo)
move:移動標(biāo)
crosshair:十字標(biāo)
e-resize
n-resize
nw-resize
w-resize
s-resize
se-resize
sw-resize
-------------------------------------------------
Kafree另外收集增加的:
1,屏蔽鼠標(biāo)右鍵、Ctrl+n、shift+F10、F5刷新、退格鍵
<body onkeydown="KeyDown()"
oncontextmenu="event.returnValue=false">
<script language="Javascript"><!--
//屏蔽鼠標(biāo)右鍵、Ctrl+n、shift+F10、F5刷新、退格鍵
//Author: meizz(梅花雨) 2002-6-18
function KeyDown(){
if ((window.event.altKey)&&
((window.event.keyCode==37)|| //屏蔽 Alt+ 方向鍵 ←
(window.event.keyCode==39))){ //屏蔽 Alt+ 方向鍵 →
alert("不準(zhǔn)你使用ALT+方向鍵前進或后退網(wǎng)頁!");
event.returnValue=false;
}
/* 注:這還不是真正地屏蔽 Alt+ 方向鍵,
因為 Alt+ 方向鍵彈出警告框時,按住 Alt 鍵不放,
用鼠標(biāo)點掉警告框,這種屏蔽方法就失效了。以后若
有哪位高手有真正屏蔽 Alt 鍵的方法,請告知。*/
if ((event.keyCode==8) || //屏蔽退格刪除鍵
(event.keyCode==116)|| //屏蔽 F5 刷新鍵
(event.ctrlKey && event.keyCode==82)){ //Ctrl + R
event.keyCode=0;
event.returnValue=false;
}
if ((event.ctrlKey)&&(event.keyCode==78)) //屏蔽 Ctrl+n
event.returnValue=false;
if ((event.shiftKey)&&(event.keyCode==121)) //屏蔽 shift+F10
event.returnValue=false;
if (window.event.srcElement.tagName == "A" && window.event.shiftKey)
window.event.returnValue = false; //屏蔽 shift 加鼠標(biāo)左鍵新開一網(wǎng)頁
if ((window.event.altKey)&&(window.event.keyCode==115)){ //屏蔽Alt+F4
window.showModelessDialog("about:blank","","dialogWidth:1px;dialogheight:1px");
return false;}
}
/* 另外可以用 window.open 的方法屏蔽 IE 的所有菜單
第一種方法:
window.open("你的.htm", "","toolbar=no,location=no,directories=no,menubar=no,scrollbars=no,resizable=yes,status=no,top=0,left=0")
第二種方法是打開一個全屏的頁面:
window.open("你的.asp", "", "fullscreen=yes")
*/
// --></script>
<h2 align=center>屏蔽鼠標(biāo)右鍵、Ctrl+n、shift+F10、F5刷新、退格鍵</h2>
</body>
</html>
2,RecordSet屬性和方法
為了更精確地跟蹤數(shù)據(jù),要用RecordSet組件創(chuàng)建包含數(shù)據(jù)的游標(biāo),游標(biāo)就是儲存在內(nèi)存中的數(shù)據(jù)。
rs = Server.CreateObject("ADODB.RecordSet")
rs.Open(sqlStr,conn,1,A)
注:A=1讀取
A=3 新增、修改、刪除
在RecordSet組件中,常用的屬性和方法有:
rs.Fields.Count: RecordSet對象的字段數(shù)。
rs(i).Name: 第i個字段的名稱,i為0至rs.Fields.Count-1
rs(i): 第i個字段的數(shù)據(jù),i為0至rs.Fields.Count-1
rs("字段名"): 指定字段的數(shù)據(jù)。
rs.Record.Count:游標(biāo)中的數(shù)據(jù)記錄總數(shù)。
rs.EOF: 是否最后一條記錄。
rs.MoveFirst: 指向第一條記錄。
rs.MoveLast: 指向最后一條記錄。
rs.MovePrev: 指向上一條記錄。
rs.MoveNext: 指向下一條記錄。
rs.GetRows: 將數(shù)據(jù)放入數(shù)組中。
rs.Properties.Count:ADO的ResultSet或Connection的屬性個數(shù)。
rs.Properties(item).Name:ADO的ResultSet或Connection的名稱。
rs.Properties: ADO的ResultSet或Connection的值。
rs.close(): 關(guān)閉連接。
3,本地?zé)o緩存,每次自動刷新
response.expires=0
response.addHeader"pragma","no-cache"
response.addHeader"cache-control","private"
4,修改contentType并下載gif等格式
<%
function dl(f,n)
onerrorresumenext
sets=CreateObject("Adodb.Stream")
S.Mode=3
S.Type=1
S.Open
s.LoadFromFile(server.mappath(f))
iferr.number>0then
response.writeerr.number&":"&err.description
else
response.contentType="application/x-gzip"
response.addheader"Content-Disposition:","attachment;filename="&n
response.binarywrite(s.Read(s.size))
endif
endfunction
call dl("012922501.gif","t1.gif") %>
5,常用的幾種數(shù)據(jù)庫連接代碼
1) MS Access數(shù)據(jù)庫連接
用DSN連接并且沒有用戶名和密碼:
<%
set conn = Server.CreateObject("ADODB.Connection")
conn.open "YourDSNName"
%>
2) 用DSN連接并且有用戶名和密碼:
<%
set conn = Server.CreateObject("ADODB.Connection")
conn.open "YourDSNName","username","password"
%>
3) 用實際的數(shù)據(jù)庫絕對路徑連接:
<%
Set conn = Server.CreateObject("ADODB.Connection")
Strconn="DRIVER={Microsoft Access Driver (*.mdb)}; "
Strconn=Strconn & "DBQ=e:\yanhang\database.mdb"
conn.Open Strconn
%>
4) 用實際的數(shù)據(jù)庫相對路徑連接:
<%
Set conn = Server.CreateObject("ADODB.Connection")
Strconn="DRIVER={Microsoft Access Driver (*.mdb)}; "
Strconn=Strconn & "DBQ=" & Server.MapPath("/database/yanhang.mdb")
conn.Open Strconn
%>
5) MS SQL Server數(shù)據(jù)庫連接
用DSN連接:
<%
set conn = Server.CreateObject("ADODB.Connection")
conn.open "DSN=MyDSN;UID=user;PWD=password;DATABASE=databasename"
%>
6) 不用DSN連接:
<%
Set conn = Server.CreateObject("ADODB.Connection")
DSNtemp="DRIVER={SQL Server};SERVER=ServerName;UID=USER;PWD=password;DATABASE=databasename"
conn.open DSNtemp
%>
7) FoxPro數(shù)據(jù)庫連接
<%
Set Conn = Server.CreateObject("ADODB.connection")
ConnStr= "Driver=Microsoft Visual Foxpro Driver; UID=userID;SourceType=DBC;SourceDB=C:\yanhang\database.dbc"
Conn.Open ConnStr
%>
8) Oracle數(shù)據(jù)庫連接:
<%
set conn=server.createobject("adodb.connection")
conn.cursorlocation=adUseClient
DSNTemp="Provider=MSDAORA.1;Password=xxxxx;User ID=yanhang;Data Source=xxx.world"
conn.open DSNtemp
%>
9) Paradox數(shù)據(jù)庫連接:
<%
set conn=server.createobject("adodb.connection")
conn.cursorlocation=adUseClient
DSNTemp="driver={Microsoft Paradox Driver (*.db)};DriverID=538;Fil=Paradox 5.X;DefaultDir=c:\dbpath\;Dbq=c:\dbpath\;CollatingSequence=ASCII;"
conn.open DSNtemp
%>
10) Sybase數(shù)據(jù)庫連接:
<%
set conn=server.createobject("adodb.connection")
conn.cursorlocation=adUseClient
DSNTemp="Driver={SYBASE SYSTEM 11};Srvr=myServerName;Uid=myUsername;Pwd=myPassword;"
conn.open DSNtemp
%>
11) Text數(shù)據(jù)庫連接:
<%
set conn=server.createobject("adodb.connection")
conn.cursorlocation=adUseClient
DSNTemp="Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=c:\somepath\;Extensions=asc,csv,tab,txt;Persist Security Info=False"
conn.open DSNtemp
'調(diào)用 test.csv 的文件
Set rs=server.createobject("adodb.recordset")
rs.open "select * from test.csv",conn,1,3
%>
6,使用 XML 靜態(tài)讀取網(wǎng)頁
代碼如下:
<script>
var oDiv //添加用的節(jié)點
var nP //DIV的 padding-left
var xh //xmlhttp
function getXML()
{
oDiv = document.all.m
oDiv.innerHTML = "正在裝載欄目數(shù)據(jù),請稍侯......."
oDiv.style.display= ""
xh = new ActiveXObject("Microsoft.XMLHTTP")
xh.onreadystatechange = getReady
xh.open("GET",a.value,true)
xh.send()
}
function getReady()
{
if(xh.readyState==4)
{
if(xh.status==200)
{
oDiv.innerHTML = "完成"
}
else
{
oDiv.innerHTML = "抱歉,裝載數(shù)據(jù)失敗。原因:" + xh.statusText
}
}
}
</script>
URL:<input name=a value="http://www.microsoft.com">
<input onclick="getXML()" type="button" value="get HTML">
<input onclick="if(xh && xh.responseText) oDiv.innerHTML=xh.responseText" type="button" value="output">
<div id=m></div>
7,SQL SERVER 和EXCEL的數(shù)據(jù)導(dǎo)入導(dǎo)出
1)、在SQL SERVER里查詢Excel數(shù)據(jù):
SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
下面是個查詢的示例,它通過用于 Jet 的 OLE DB 提供程序查詢 Excel 電子表格。
SELECT * FROM OpenDataSource ( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
2)、將Excel的數(shù)據(jù)導(dǎo)入SQL server :
SELECT * into newtable FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
實例分析:
SELECT * into newtable FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
3)、將SQL SERVER中查詢到的數(shù)據(jù)導(dǎo)成一個Excel文件
T-SQL代碼:
EXEC master..xp_cmdshell 'bcp 庫名.dbo.表名out c:\Temp.xls -c -q -S"servername" -U"sa" -P""'
參數(shù):S 是SQL服務(wù)器名;U是用戶;P是密碼
說明:還可以導(dǎo)出文本文件等多種格式
實例:EXEC master..xp_cmdshell 'bcp saletesttmp.dbo.CusAccount out c:\temp1.xls -c -q -S"pmserver" -U"sa" -P"sa"'
EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout C:\ authors.xls -c -Sservername -Usa -Ppassword'
在VB6中應(yīng)用ADO導(dǎo)出EXCEL文件代碼:
Dim cn As New ADODB.Connection
cn.open "Driver={SQL Server};Server=WEBSVR;DataBase=WebMis;UID=sa;WD=123;"
cn.execute "master..xp_cmdshell 'bcp "SELECT col1, col2 FROM 庫名.dbo.表名" queryout E:\DT.xls -c -Sservername -Usa -Ppassword'"
4)、在SQL SERVER里往Excel插入數(shù)據(jù):
insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:\Temp.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...table1 (A1,A2,A3) values (1,2,3)
T-SQL代碼:
INSERT INTO OPENDATASOURCE('Microsoft.JET.OLEDB.4.0', 'Extended Properties=Excel 8.0;Data source=C:\training\inventur.xls')...[Filiale1$] (bestand, produkt) VALUES (20, 'Test')
總結(jié):利用以上語句,我們可以方便地將SQL SERVER、ACCESS和EXCEL電子表格軟件中的數(shù)據(jù)進行轉(zhuǎn)換,為我們提供了極大方便!
不同瀏覽器所支持的“事件”
1。onabort(ns3,ns4,ie4):當(dāng)用戶終止正在打開的網(wǎng)頁時產(chǎn)生該事件。
2。onblur(ns3,ns4,ie3,ie4):某元素失去活動焦點時產(chǎn)生該事件。例如鼠標(biāo)在文本框中點擊后又在文本框外點擊時就會產(chǎn)生。
3。onchange(ns3,ns4,ie3,ie4):當(dāng)網(wǎng)頁上某元素的內(nèi)容發(fā)生改變時產(chǎn)生。例如在文本框中輸入文本后又在文本框外點擊時就會產(chǎn)生。
4。onclick(ns3,ns4,ie3,ie4)單擊網(wǎng)頁上的某元素時產(chǎn)生
5。ondblclick(ns4,ie4):雙擊網(wǎng)頁上的元素時產(chǎn)生
6。onerror(ns3,ns4,ie4):瀏覽器在打開網(wǎng)頁的過程中發(fā)生錯誤時產(chǎn)生該事件
7。onfinish(ie4):滾動文本條中的文本完成一次滾動時產(chǎn)生的事件
8。onfocus(ns3,ns4,ie3,ie4)網(wǎng)頁上的元素獲得焦點時產(chǎn)生該事件
9。onkeydown(ns4,ie4)按下任意鍵時產(chǎn)生該事件
10。onkeypress(ns4,ie4)按下任意鍵時并釋放該鍵產(chǎn)生的事件
11。onkeyup(ns4,ie4)釋放按下的按鍵產(chǎn)生該事件
12。onload(ns3、4,ie3、4)網(wǎng)頁或圖象調(diào)入完成后產(chǎn)生該事件
13。onmousedown(ns4,ie4)在網(wǎng)頁的某元素上按下鼠標(biāo)時產(chǎn)生該事件
14。onmousemove(ie3、4)在網(wǎng)頁的某元素上移動鼠標(biāo)時產(chǎn)生該事件
15。onmouseout(ns3、4,ie4)從網(wǎng)頁的某元素移出鼠標(biāo)時產(chǎn)生該事件
16。onmouseover(ns3、4,ie3、4)鼠標(biāo)移入網(wǎng)頁的某元素時產(chǎn)生該事件
17。onmouseup(ns4,ie4)釋放按下的鼠標(biāo)時產(chǎn)生該事件
18。onreset(ns3、4,ie3、4)復(fù)位表格時產(chǎn)生該事件
19。onresize(ns4,ie4)改變?yōu)g覽器時產(chǎn)生該事件
20。onselect(ns3、4,ie3、4)選擇文本框中的文本時產(chǎn)生該事件
21。onstart(ie4)滾動文本條中的文本開始滾動時產(chǎn)生該事件
22。onsubmit(ns3、4,ie3、4)提交表單時產(chǎn)生該事件
23。onunload(ns3、4,ie3、4)從當(dāng)前的網(wǎng)頁退出時產(chǎn)生該事件
馬上出現(xiàn)的alt
<style>div {filter: Alpha(Opacity=70, FinishOpacity=70, Style=2, StartX=0, StartY=0, FinishX=100, FinishY=100);}</style>
<img src="icon/popoever.jpg" hint="泡泡哥">
<img src="icon/poorfish.gif" hint="高僧一個,當(dāng)和尚太可惜了">
<img src="icon/admin.gif" hint="my哥哥">
<div style="visibility:hidden;border:1px solid #000000;background-color:#FFFFCC;font-size:12px;position:absolute;" id=altlayer></div>
測試完畢...
<script>
document.body.onmousemove=quickalt;
function quickalt() {
if(event.srcElement.hint && event.srcElement.hint!='') {
altlayer.style.visibility='visible';
altlayer.style.left=event.x+10;
altlayer.style.top=event.y+10;
altlayer.innerHTML=event.srcElement.hint}
else altlayer.style.visibility='hidden';}
</script>
只能輸入數(shù)字(方法一)
<script language=javascript>
function onlyNum()
{
if(!((event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=96&&event.keyCode<=105)))
event.returnValue=false;
}
</script>
<input onkeydown="onlyNum();">
只能輸入數(shù)字(方法二)
<input onkeypress="return event.keyCode>=48&&event.keyCode<=57" onpaste="return !clipboardData.getData('text').match(/\D/)" style="ime-mode:Disabled" ondragenter="return false">
只能輸入數(shù)字(方法三)
<script>
function check(){
if (isNaN(tt.value))
{alert("非法字符!");
tt.value="";}
}
</script>
<input type="text" name="tt" onkeyup="check();">
限制textarea多行輸入框的字數(shù)
<textarea name="b" onkeydown="if(this.value.length>=8) this.value=this.value.substring(0, 8)" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').substring(0, 8))">
驗證表單——不能超過設(shè)置字數(shù)
<script>
function test()
{
if(document.a.b.value.length>50)
{
alert("不能超過50個字符!");
document.a.b.focus();
return false;
}
}
</script>
<form name=a onsubmit="return test()">
<textarea name="b" cols="40" wrap="VIRTUAL" rows="6"></textarea>
<input type="submit" name="Submit" value="check">
</form>
驗證表單——只能是漢字
<input onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')">
驗證表單——只能是英文字符
<script language=javascript>
function onlyEng()
{
if(!(event.keyCode>=65&&event.keyCode<=90))
event.returnValue=false;
}
</script>
<input onkeydown="onlyEng();">
驗證表單——屏蔽關(guān)鍵字(sex , fuck)
<script language="JavaScript1.2">
function test() {
if((a.b.value.indexOf ("sex") == 0)||(a.b.value.indexOf ("fuck") == 0)){
alert("五講四美三熱愛");
a.b.focus();
return false;}
}
</script>
<form name=a onsubmit="return test()">
<input type=text name=b>
<input type="submit" name="Submit" value="check">
</form>
驗證表單——驗證為email格式
<SCRIPT LANGUAGE=Javascript RUNAT=Server>
function isEmail(strEmail) {
if (strEmail.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
return true;
else
alert("oh");
}
</SCRIPT>
<input type=text onblur=isEmail(this.value)>
css控制checkbox、select的邊框不顯示
一、<input type=checkbox style="position:absolute;clip: rect(5 16 16 5)">
二、<input type=checkbox style="position:absolute;clip: rect(6 17 17 6)">
三、<select name="menu1" style="position:absolute;clip: rect(2 50 30 2)">
<option>111111</option>
<option>222222</option>
<option>333333</option>
<option>444444</option>
</select>
復(fù)選框通常都不需要直接點選,點旁邊的文字就行
<label for="box">點這里的文字看看!<input type=checkbox style="position:absolute;clip: rect(6 15 15 6)" id=box></label>
用Label標(biāo)簽還可以讓像軟件一樣使用熱鍵
<label for="box" accesskey="D"><u><b>D</b></u>issplay Username 顯示用戶名<input type=checkbox style="position:absolute;clip: rect(6 17 17 6)" id=box>
在標(biāo)題欄上顯示版權(quán)tm
<title>LEGENDRY_________™</title>
隨機播放背景音樂
<script language="JavaScript">
<!--
var sound=new Array();
sound[0]="1.mid";
sound[1]="2.mid";
sound[2]="3.mid";
sound[3]="4.mid";
sound[4]="5.mid";
sound[5]="6.mid";
sound[6]="7.mid";
var x=Math.round(Math.random()*6);
if(navigator.appName=="Microsoft Internet Explorer") {
document.write("<BGSOUND src='" + sound[x] + "' loop='-1'><br>") ;
document.write("現(xiàn)在正在播放第"+(x+1)+"首樂曲");
}
//-->
</script>
網(wǎng)頁背景顏色漸變
<body style="FILTER: progid:DXImageTransform.Microsoft.Alpha( style=1,opacity=25,finishOpacity=100,startX=50,finishX=100,startY=50,finishY=100); BACKGROUND-COLOR: skyblue">
點擊圖片鏈接時不顯示虛線框
<a href=# onfocus="blur()"><img src=XXX.gif border=0></a>
<a href=#### hidefocus=true><img src=XXX.gif border=0></img></a>
驗證兩次輸入密碼不同的JS
<FORM METHOD=POST ACTION="">
<input type="password" id="input1">
<input type="password" id="input2">
<input type="button" value="test" onclick="check()">
</FORM>
<script>
function check()
{
with(document.all){
if(input1.value!=input2.value)
{
alert("false")
input1.value = "";
input2.value = "";
}
else document.forms[0].submit();
}
}
</script>
標(biāo)題欄文字打字效果
<SCRIPT language=JavaScript>
var arr=["█ 歡","■ 歡迎","█ 歡迎光","■ 歡迎光臨"],i=0
setInterval("if(i>=arr.length)i=0;document.title=arr[i++]",300);
</SCRIPT>
數(shù)字轉(zhuǎn)換為大寫
<script language="JScript">
arr=["零","壹","貳","叁","肆","伍","陸","柒","捌","玖"];
function go(){
tmp=cinput.value;
for(i=0;i<arr.length;i++)tmp=tmp.replace(new RegExp(i,"gi"),arr[i]);
oinput.value=tmp;
}
</script>
輸入:<input id="cinput" onkeypress="return (event.keyCode>=48&&event.keyCode<=57)" value=31415926>
<br>
輸出:<input id="oinput">
<br>
<input type="button" value="確定" onclick="go()">
[推薦]經(jīng)典網(wǎng)頁代碼25例 希望加精
01.下載flash我的三種方法:
--查看源文件,找出flash的絕對路徑,復(fù)制,在flashget(或螞蟻)中點任務(wù)
,然后點新建下載任務(wù)即可。
--在IE的臨時文件夾Temporary Internet Files里把所有的東西都刪掉,然后
刷新你想要下載flash的網(wǎng)頁,即可得到你所要的flash
--使用外部軟件,推薦使用Flash Catcher,安裝后只需在你所要下載的flash上右鍵,save即可。
02.讓你的網(wǎng)頁無法另存為
<noscript><iframe src=*></iframe></noscript>
03.讓IFRAME框架內(nèi)的文檔的背景透明
<iframe src="about:<body style='background:transparent'>"
allowtransparency></iframe>
04.禁止右鍵:
<body oncontextmenu="return false" ondragstart="return false"
onselectstart ="return false" onselect="document.selection.empty()"
oncopy="document.selection.empty()" onbeforecopy="return
false"onmouseup="document.selection.empty()">
05.進入頁面后立即自動刷新?
<meta http-equiv="refresh"
content="120;url=http://www.wodutom.com/cn083">
http://www.wodutom.com/cn083,這是你自己的網(wǎng)址。
06.打開窗口即最大化
<script language="javascript">
<!-- Begin
self.moveTo(0,0)
self.resizeTo(screen.availWidth,screen.availHeight)
// End -->
</script>
防止外部遞交:
server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
if mid(server_v1,8,len(server_v2))<>server_v2 then
response.write "<br><br><center><table border=1 cellpadding=20 bordercolor=black bgcolor=#EEEEEE width=300>"
response.write "<tr><td style='font:9pt Verdana'>"
response.write "請不要從站點外部提交數(shù)據(jù)!"
response.write"<input type=submit onclick=""javascript:history.back(1)"" name=Submit class=""button"" value=""返 回"">"
response.write "</td></tr></table>"
response.write"</center>"
response.end
end if
07.能隱藏IFRAME的滾動條嗎?我知道的三種方法:
1. 設(shè)置iframe scrolling="no"
2. 被包含頁body應(yīng)用overflow:hidden
3. 被包含頁的body標(biāo)簽加scroll="no"
08.加入背景音樂
<bgsound src="mid/windblue[1].mid" loop="-1"> 只適用于IE
<embed src="music.mid" autostart="true" loop="true" hidden="true">
對Netscape ,IE 都適用
09.嵌入網(wǎng)頁
<iframe name="tt" src="01a.html" width="450" height="287"
scrolling="Auto" frameborder="0"></iframe>
10.跳轉(zhuǎn)
<meta http-equiv="refresh" content="3;URL=list.htm">
11.滾動
<MARQUEE direction=up height=146 onmouseout=start()
onmouseover=stop()
scrollAmount=4></marquee>
12.細線分隔線
<hr noshade size=0 color=#C0C0C0>
13.過度方式
<meta http-equiv="Page-Exit"
content="revealTrans(Duration=3,Transition=5)">
Duration的值為網(wǎng)頁動態(tài)過渡的時間,單位為秒。
Transition是過渡方式,它的值為0到23,分別對應(yīng)24種過渡方式。如下表:
0 盒狀收縮 1 盒狀放射
2 圓形收縮 3 圓形放射
4 由下往上 5 由上往下
6 從左至右 7 從右至左
8 垂直百葉窗 9 水平百葉窗
10 水平格狀百葉窗 11垂直格狀百葉窗
12 隨意溶解 13從左右兩端向中間展開
14從中間向左右兩端展開 15從上下兩端向中間展開
16從中間向上下兩端展開 17 從右上角向左下角展開
18 從右下角向左上角展開 19 從左上角向右下角展開
20 從左下角向右上角展開 21 水平線狀展開
22 垂直線狀展開 23 隨機產(chǎn)生一種過渡方式
15.如何控制橫向和縱向滾動條的顯隱?
<body style="overflow-y:hidden"> 去掉x軸
<body style="overflow-x:hidden"> 去掉y軸
<body scroll="no">不顯
16.怎樣在 FrontPage2000 中加入 Flash 動畫?
在 FrontPage2000 中,點擊[插入]->[高級]->[插件],在彈出的窗口中,設(shè)置
一下 Flash 文件的大小及其它信息,確定即可。
17.加入注釋的格式是:
〈!-[注釋內(nèi)容…]--〉
18.怎樣在網(wǎng)頁中加入 E-mail 鏈接并顯示預(yù)定的主題?
〈A href="mailto:Emailhost@263.net?subject=主題"〉……〈/a〉
19.定義本網(wǎng)頁關(guān)鍵字,可以在〈Head〉〈/Head〉中加入如下代碼:
〈meta name="Keywords" content="china,enterprise,business,net"〉
Content 中所包含的就是關(guān)鍵字,你可以自行設(shè)置。
這里有個技巧,你可以重復(fù)某一個單詞,這樣可以提高自己網(wǎng)站的排行位置,如:
〈meta name="Keywords" content="china,china,china,china"〉
20.IE5.0 的部分快捷鍵:
A:打開查找功能:Ctrl+F
關(guān)閉瀏覽器窗口:Ctrl+W
打開地址欄下拉列表框:F4
刷 新:F5
將當(dāng)前Web頁保存到收藏夾列表:Ctrl+D
打開當(dāng)前 IE 窗口的一個拷貝:Ctrl+N
停止下載當(dāng)前網(wǎng)頁:Esc
光標(biāo)迅速移動到網(wǎng)頁的開頭:Home
光標(biāo)迅速移動到網(wǎng)頁的尾部:End
打開新的地址鍵入窗口:Ctrl+O
打開收藏夾:Ctrl+I
打開歷史記錄文件夾:Ctrl+H
打開瀏覽器設(shè)定的默認主頁:Alt+HOME
21.添加到收藏夾:
〈a href="javascript:window.external.addFavorite('http://鏈接','說明
');"〉添加到收藏夾〈/a〉
22.設(shè)為首頁:
〈a href=#
onclick=this.style.behavior='url(#default#homepage)';this.setHomePage
('
23.定制瀏覽器地址欄前的小圖標(biāo):
A:在網(wǎng)頁的〈head〉〈/head〉間加入以下語句:〈link rel="shortcuticon"
href="http://…/icon.ico"〉即可。其中 icon.ico 為 16x16 的圖標(biāo)文件,
顏色不要超過 16 色。
24.把滾動條放在瀏覽器窗口的左邊
A:在 <body> 中加 dir=RTL,即 <body dir=RTL>。
25.讓背景圖不滾動
IE瀏覽器支持一個 Body 屬性 bgproperties,它可以讓背景不滾動:
〈Body Background="圖片文件" bgproperties="fixed"〉
最全的表格代碼應(yīng)用[精華]
1.表格的分隔線可以隱藏
<table border rules=cols cellspacing=0 align=left> 可以隱藏橫向的分隔線
<table border rules=rows cellspacing=0 align=right>可以隱藏縱向的分隔線
<table border rules=none cellspacing=0 align=center>可以隱藏橫向和縱向的分隔線
2.表格的邊框不斷在閃
以下方法可以令表格的邊框不斷在閃,很實用的
在BODY區(qū)加上
<table border="0" width="280" id="myexample"
style="border:5px solid yellow">
<tr>
<td>加入任意的物件.加入任意的物件.
<br>加入任意的物件.加入任意的物件.
<br>加入任意的物件.加入任意的物件.</td>
</tr>
</table>
<script language="JavaScript1.2">
<!--
function flashit(){
if (!document.all)
return
if (myexample.style.borderColor=="yellow")
myexample.style.borderColor="lime"
else
myexample.style.borderColor="yellow"
}
setInterval("flashit()", 500)
//-->
</script>
3.表格分行下載
這個對表格內(nèi)容很大比較實用
在需要分行下載處加上 <tbody >
比如:
<table >
<tbody >
<tr >
<td >flsdjfsdjfkdsjf</td >
</tr >
<tr >
<td >skdjfsdjfksd</td >
</tr >
</tbody >
<tbody >
<tr >
<td >flsdjfsdjfkdsjf</td >
</tr >
<tr >
<td>skdjfsdjfksd</td >
</tr >
</tbody >
</table >
4.幾種樣式不同的表格
<table border="1" width="220" style="position: absolute; left:
11; top: 11" height="26" >
<tr>
<td width="100%">普通表格</td>
</tr>
</table>
5.正立方表格
<table border="1" width="220" bordercolorlight="#eeeeee"
bordercolordark="#000000" style="position: absolute; left: 10; top:
49" height="26">
<tr>
<td width="100%">正立方表格</td>
</tr>
</table>
6.細表格
<table border="0" frame=vsides width="219"
bgcolor="#000000" cellspacing="1" cellpadding="0"
height="22" style="position: absolute; left: 11; top: 86">
<tr bgcolor="#FFFFFF">
<td width="100%" height="2">細表格</td>
</tr>
</table>
7.立體表格
<table border="1" width="220" bordercolorlight="#ffffff"
bordercolordark="#ffffff" style="position: absolute; left: 10; top:
112" height="34">
<tr>
<td width="100%" bgcolor="#B7B7B7"
bordercolorlight="#000000" bordercolordark="#eeeeee" >立體表格</td>
</tr>
</table>
8.無名表格
<table width="220" align="center" style="position: absolute;
left: 246; top: 12" height="51">
<tr>
<td><fieldset style="width:220" align="center">
<legend> 無名表格 </legend> <p align="right"> </fieldset>
<br>
</td>
</tr>
</table>
9.表中表效果Ⅱ
<table width="220" align="center" style="position:
absolute; left: 245; top: 89" height="110">
<tr>
<td height="75"><fieldset style="width:220"
align="center"> <legend> 表中表效果Ⅱ </legend> <table
frame="hsides" border="1"
bordercolorlight="#000000" bordercolordark="#ffffff"
width="100%" cellspacing="1" cellpadding="0" height="78">
<tr bgcolor="#ffffff">
<td width="100%" height="76"></fieldset></td>
</tr>
</table>
10.表中表效果Ⅰ
<table width="220" align="center" style="position: absolute;
left: 10; top: 120" height="138" cellspacing="1"
cellpadding="0">
<tr>
<td height="126"><fieldset style="width: 220; color: #B7B7B7;
border-style: groove" align="center"> <legend style="color:
#FFFFFF; border: 1 solid #808080" > <font color="#000000">表中表效果Ⅰ</font>
</legend> <p align="right"> </fieldset>
</td>
</tr>
</table>
11.表格中邊框的顯示
只顯示上邊框 <table frame=above>
只顯示下邊框 <table frame=below>
只顯示左、右邊框 <table frame=vsides>
只顯示上、下邊框 <table frame=hsides>
只顯示左邊框 <table frame=lhs>
只顯示右邊框 <table frame=rhs>
不顯示任何邊框 <table frame=void>
1.如何用Asp判斷你的網(wǎng)站的虛擬物理路徑
答:使用Mappath方法
< p align="center" >< font size="4" face="Arial" >< b >
The Physical path to this virtual website is:
< /b >< /font >
< font color="#FF0000" size="6" face="Arial" >
< %= Server.MapPath("\")% >
< /font >< /p >
2.我如何知道使用者所用的瀏覽器?
答:使用the Request object方法
strBrowser=Request.ServerVariables("HTTP_USER_AGENT")
If Instr(strBrowser,"MSIE") < > 0 Then
Response.redirect("ForMSIEOnly.htm")
Else
Response.redirect("ForAll.htm")
End If
3.如何計算每天的平均反復(fù)訪問人數(shù)
答:解決方法
< % startdate=DateDiff("d",Now,"01/01/1990")
if strdate< 0 then startdate=startdate*-1
avgvpd=Int((usercnt)/startdate) % >
顯示結(jié)果
< % response.write(avgvpd) % >
that is it.this page have been viewed since November 10,1998
4.如何顯示隨機圖象
< % dim p,ppic,dpic
ppic=12
randomize
p=Int((ppic*rnd)+1)
dpic="graphix/randompics/"&p&".gif"
% >
顯示
< img src="< %=dpic% >" >
5.如何回到先前的頁面
答:< a href="< %=request.serverVariables("Http_REFERER")% >" >preivous page< /a >
或用圖片如:< img src="arrowback.gif" alt="< %=request.serverVariables("HTTP_REFERER")% >" >
6.如何確定對方的IP地址
答:< %=Request.serverVariables("REMOTE_ADDR)% >
7.如何鏈結(jié)到一副圖片上
答:< % @Languages=vbs cript % >
< % response.expires=0
strimagename="graphix/errors/erroriamge.gif"
response.redirect(strimagename)
% >
8.強迫輸入密碼對話框
答:把這句話放載頁面的開頭
< % response.status="401 not Authorized"
response.end
% >
9.如何傳遞變量從一頁到另一頁
答:用 HIDDEN 類型來傳遞變量
< % form method="post" action="mynextpage.asp" >
< % for each item in request.form % >
< input namee="< %=item% >" type="HIDDEN"
value="< %=server.HTMLEncode(Request.form(item)) % >" >
< % next % >
< /form >
10.為何我在 asp 程序內(nèi)使用 msgbox,程序出錯說沒有權(quán)限
答:由于 asp 是服務(wù)器運行的,如果可以在服務(wù)器顯示一個對話框,那么你只好等有人按了確定之后,你的程序才能繼續(xù)執(zhí)行,而一般服務(wù)器不會有人守著,所以微軟不得不禁止這個函數(shù),并胡亂告訴你 (:) 呵呵) 沒有權(quán)限。但是ASP和客戶端腳本結(jié)合倒可以顯示一個對話框,as follows:
< % yourVar="測試對話框"% >
< % s cript language='javas cript' >
alert("< %=yourvar% >")
< /s cript >
11.有沒有辦法保護自己的源代碼,不給人看到
答:可以去下載一個微軟的Windows s cript Encoder,它可以對asp的腳本和客戶端javas cript/vbs cript腳本進行加密。。。不過客戶端加密后,只有ie5才能執(zhí)行,服務(wù)器端腳本加密后,只有服務(wù)器上安裝有s cript engine 5(裝一個ie5就有了)才能執(zhí)行。
12.怎樣才能將 query string 從一個 asp 文件傳送到另一個?
答:前者文件加入下句: Response.Redirect("second.asp?" & Request.ServerVariables("QUERY_STRING"))
13.global.asa文件總是不起作用?
答:只有web目錄設(shè)置為web application, global.asa才有效,并且一個web application的根目錄下 global.asa才有效。IIS4可以使用Internet Service Manager設(shè)置application setting 怎樣才能使得htm文件如同asp文件一樣可以執(zhí)行腳本代碼?
14.怎樣才能使得htm文件如同asp文件一樣可以執(zhí)行腳本代碼?
答:Internet Sevices Manager - > 選擇default web site - >右鼠鍵- >菜單屬性-〉主目錄- > 應(yīng)用程序設(shè)置(Application Setting)- > 點擊按鈕 "配置"- > app mapping - >點擊按鈕"Add" - > executable browse選擇 \WINNT\SYSTEM32\INETSRV\ASP.DLL EXTENSION 輸入 htm method exclusions 輸入PUT.DELETE 全部確定即可。但是值得注意的是這樣對htm也要由asp.dll處理,效率將降低。
15.如何注冊組件
答:有兩種方法。
第一種方法:手工注冊 DLL 這種方法從IIs 3.0一直使用到IIs 4.0和其它的Web Server。它需要你在命令行方式下來執(zhí)行,進入到包含有DLL的目錄,并輸入:regsvr32 component_name.dll 例如 c:\temp\regsvr32 AspEmail.dll 它會把dll的特定信息注冊入服務(wù)器中的注冊表中。然后這個組件就可以在服務(wù)器上使用了,但是這個方法有一個缺陷。當(dāng)使用這種方法注冊完畢組件后,該組件必須要相應(yīng)的設(shè)置NT的匿名帳號有權(quán)限執(zhí)行這個dll。特別是一些組件需要讀取注冊表,所以,這個注冊組件的方法僅僅是使用在服務(wù)器上沒有MTS的情況下,要取消注冊這個dll,使用:regsvr32 /u aspobject.dll example c:\temp\regsvr32 /u aneiodbc.dll
第二種方法:使用MTS(Microsoft Transaction Server) MTS是IIS 4新增特色,但是它提供了巨大的改進。MTS允許你指定只有有特權(quán)的用戶才能夠訪問組件,大大提高了網(wǎng)站服務(wù)器上的安全性設(shè)置。在MTS上注冊組件的步驟如下:
1) 打開IIS管理控制臺。
2) 展開transaction server,右鍵單擊"pkgs installed"然后選擇"new package"。
3) 單擊"create an empty package"。
4) 給該包命名。
5) 指定administrator帳號或則使用"interactive"(如果服務(wù)器經(jīng)常是使用administrator 登陸的話)。
6) 現(xiàn)在使用右鍵單擊你剛建立的那個包下面展開后的"components"。選擇 "new then component"。
7) 選擇 "install new component" 。
8) 找到你的.dll文件然后選擇next到完成。
要刪除這個對象,只要選擇它的圖標(biāo),然后選擇delete。
附注:特別要注意第二種方法,它是用來調(diào)試自己編寫組件的最好方法,而不必每次都需要重新啟動機器了。
16. ASP與Access數(shù)據(jù)庫連接:
<%@ language=VBs cript%>
<%
dim conn,mdbfile
mdbfile=server.mappath("數(shù)據(jù)庫名稱.mdb")
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};uid=admin;pwd=數(shù)據(jù)庫密碼;dbq="&mdbfile
%>
17. ASP與SQL數(shù)據(jù)庫連接:
<%@ language=VBs cript%>
<%
dim conn
set conn=server.createobject("ADODB.connection")
con.open "PROVIDER=SQLOLEDB;DATA SOURCE=SQL服務(wù)器名稱或IP地址;UID=sa;PWD=數(shù)據(jù)庫密碼;DATABASE=數(shù)據(jù)庫名稱
%>
寫到數(shù)據(jù)庫的內(nèi)容,讀出來時沒有了空格和換行 ,該怎么解決?
或與此類似問題
問題的解答就是在寫入數(shù)據(jù)庫做Replace替換
拿出我用的一個函數(shù)供大家參考
<%
'----------Html轉(zhuǎn)換為文本:編輯時拿來做轉(zhuǎn)換
Function Html2Text(Str1)
If isNULL(Str1) Then
Html2Text=""
Exit Function
End If
Str1=Replace(Str1,"<","<")
Str1=Replace(Str1,">",">")
Str1=Replace(Str1,"<br>",VBcrlf)
Str1=Replace(Str1,""",chr(34))
Str1=Replace(Str1," "," ")
Str1=Replace(Str1,"&","&")
Html2Text=Str1
End Function
'-------------------文本轉(zhuǎn)換為Html:寫入數(shù)據(jù)庫時使用---------------
Function Text2Html(Str1)
If isNULL(Str1) Then
Text2Html=""
Exit Function
End If
Str1=Replace(Str1,"&","&")
Str1=Replace(Str1,"<","<")
Str1=Replace(Str1,">",">")
Str1=Replace(Str1,VBcrlf,"<br>")
Str1=Replace(Str1,chr(34),""")
Str1=Replace(Str1,chr(9)," ")
Str1=Replace(Str1," "," ")
Text2Html=Str1
End Function
%>
二.關(guān)于小數(shù)點前0的顯示問題
1.如果小數(shù)點后位數(shù)是固定的,那么可以使用函數(shù)FormatNumber()
示例:
<%
MyNumber=0.323
Response.Write FormatNumber(MyNumber,2,-1) '保留小數(shù)點后兩位
%>
2.如果小數(shù)點后位數(shù)不固定,那么可以如下
示例:
<%
MyNumber=0.323
If Left(Cstr(MyNumber),1)="." Then Response.Write "0"&MyNumber Else Response.Write MyNumber
%>
也可以寫一個函數(shù)
<%
Function FormatNum(Num)
If Left(Cstr(Num),1)="." Then FormatNum="0"&Num Else FormatNum=Num
End Function
%>
建立記錄集對象:
set rs=server.createobject("adodb.recordset")
rs.open SQL語句,conn,3,2
18. SQL常用命令使用方法:
(1) 數(shù)據(jù)記錄篩選:
sql="select * from 數(shù)據(jù)表 where 字段名=字段值 order by 字段名 [desc]"
sql="select * from 數(shù)據(jù)表 where 字段名 like '%字段值%' order by 字段名 [desc]"
sql="select top 10 * from 數(shù)據(jù)表 where 字段名 order by 字段名 [desc]"
sql="select * from 數(shù)據(jù)表 where 字段名 in ('值1','值2','值3')"
sql="select * from 數(shù)據(jù)表 where 字段名 between 值1 and 值2"
(2) 更新數(shù)據(jù)記錄:
sql="update 數(shù)據(jù)表 set 字段名=字段值 where 條件表達式"
sql="update 數(shù)據(jù)表 set 字段1=值1,字段2=值2 …… 字段n=值n where 條件表達式"
(3) 刪除數(shù)據(jù)記錄:
sql="delete from 數(shù)據(jù)表 where 條件表達式"
sql="delete from 數(shù)據(jù)表" (將數(shù)據(jù)表所有記錄刪除)
(4) 添加數(shù)據(jù)記錄:
sql="insert into 數(shù)據(jù)表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)"
sql="insert into 目標(biāo)數(shù)據(jù)表 select * from 源數(shù)據(jù)表" (把源數(shù)據(jù)表的記錄添加到目標(biāo)數(shù)據(jù)表)
(5) 數(shù)據(jù)記錄統(tǒng)計函數(shù):
AVG(字段名) 得出一個表格欄平均值
COUNT(*|字段名) 對數(shù)據(jù)行數(shù)的統(tǒng)計或?qū)δ骋粰谟兄档臄?shù)據(jù)行數(shù)統(tǒng)計
MAX(字段名) 取得一個表格欄最大的值
MIN(字段名) 取得一個表格欄最小的值
SUM(字段名) 把數(shù)據(jù)欄的值相加
引用以上函數(shù)的方法:
sql="select sum(字段名) as 別名 from 數(shù)據(jù)表 where 條件表達式"
set rs=conn.excute(sql)
用 rs("別名") 獲取統(tǒng)的計值,其它函數(shù)運用同上。
(5) 數(shù)據(jù)表的建立和刪除:
CREATE TABLE 數(shù)據(jù)表名稱(字段1 類型1(長度),字段2 類型2(長度) …… )
例:CREATE TABLE tab01(name varchar(50),datetime default now())
DROP TABLE 數(shù)據(jù)表名稱 (永久性刪除一個數(shù)據(jù)表)
19. 記錄集對象的方法:
rs.movenext 將記錄指針從當(dāng)前的位置向下移一行
rs.moveprevious 將記錄指針從當(dāng)前的位置向上移一行
rs.movefirst 將記錄指針移到數(shù)據(jù)表第一行
rs.movelast 將記錄指針移到數(shù)據(jù)表最后一行
rs.absoluteposition=N 將記錄指針移到數(shù)據(jù)表第N行
rs.absolutepage=N 將記錄指針移到第N頁的第一行
rs.pagesize=N 設(shè)置每頁為N條記錄
rs.pagecount 根據(jù) pagesize 的設(shè)置返回總頁數(shù)
rs.recordcount 返回記錄總數(shù)
rs.bof 返回記錄指針是否超出數(shù)據(jù)表首端,true表示是,false為否
rs.eof 返回記錄指針是否超出數(shù)據(jù)表末端,true表示是,false為否
rs.delete 刪除當(dāng)前記錄,但記錄指針不會向下移動
rs.addnew 添加記錄到數(shù)據(jù)表末端
rs.update 更新數(shù)據(jù)表記錄
---------------------------------------
20 Recordset對象方法
Open方法
recordset.Open Source,ActiveConnection,CursorType,LockType,Options
Source
Recordset對象可以通過Source屬性來連接Command對象。Source參數(shù)可以是一個Command對象名稱、一段SQL命令、一個指定的數(shù)據(jù)表名稱或是一個Stored Procedure。假如省略這個參數(shù),系統(tǒng)則采用Recordset對象的Source屬性。
ActiveConnection
Recordset對象可以通過ActiveConnection屬性來連接Connection對象。這里的ActiveConnection可以是一個Connection對象或是一串包含數(shù)據(jù)庫連接信息(ConnectionString)的字符串參數(shù)。
CursorType
Recordset對象Open方法的CursorType參數(shù)表示將以什么樣的游標(biāo)類型啟動數(shù)據(jù),包括adOpenForwardOnly、adOpenKeyset、adOpenDynamic及adOpenStatic,分述如下:
--------------------------------------------------------------
常數(shù) 常數(shù)值 說明
-------------------------------------------------------------
adOpenForwardOnly 0 缺省值,啟動一個只能向前移動的游標(biāo)(Forward Only)。
adOpenKeyset 1 啟動一個Keyset類型的游標(biāo)。
adOpenDynamic 2 啟動一個Dynamic類型的游標(biāo)。
adOpenStatic 3 啟動一個Static類型的游標(biāo)。
-------------------------------------------------------------
以上幾個游標(biāo)類型將直接影響到Recordset對象所有的屬性和方法,以下列表說明他們之間的區(qū)別。
-------------------------------------------------------------
Recordset屬性 adOpenForwardOnly adOpenKeyset adOpenDynamic adOpenStatic
-------------------------------------------------------------
ADO Recordset的屬性和方法的有效性
ADO Recordset的屬性和方法在不同的光標(biāo)類型下,有不同的表現(xiàn),這里列出了其詳細情況列表
ADO Recordset屬性的有效性列表
屬性 ForwardOnly Dynamic Keyset Static
AbsolutePage 無效 無效 讀/寫 讀/寫
AbsolutePosition 無效 無效 讀/寫 讀/寫
ActiveConnection 讀/寫 讀/寫 讀/寫 讀/寫
BOF 只讀 只讀 只讀 只讀
Bookmark 無效 無效 讀/寫 讀/寫
CacheSize 讀/寫 讀/寫 讀/寫 讀/寫
CursorLocation 讀/寫 讀/寫 讀/寫 讀/寫
CursorType 讀/寫 讀/寫 讀/寫 讀/寫
EditMode 只讀 只讀 只讀 只讀
EOF 只讀 只讀 只讀 只讀
Filter 讀/寫 讀/寫 讀/寫 讀/寫
LockType 讀/寫 讀/寫 讀/寫 讀/寫
MarshalOptions 讀/寫 讀/寫 讀/寫 讀/寫
MaxRecords 讀/寫 讀/寫 讀/寫 讀/寫
PageCount 無效 無效 只讀 只讀
PageSize 讀/寫 讀/寫 讀/寫 讀/寫
RecordCount 無效 無效 只讀 只讀
Source 讀/寫 讀/寫 讀/寫 讀/寫
State 只讀 只讀 只讀 只讀
Status 只讀 只讀 只讀 只讀
在使用Microsoft OLE DB Provider for ODBC.1.0時候,屬性AbsolutePosition
和AbsolutePage是只寫的
ADO Recordse方法的有效性列表
方法 ForwardOnly Dynamic Keyset Static
AddNew 是 是 是 是
CancelBatch 是 是 是 是
CancelUpdate 是 是 是 是
Clone 否 否 是 是
Close 是 是 是 是
Delete 是 是 是 是
GetRows 是 是 是 是
Move 是 是 是 是
MoveFirst 是 是 是 是
MoveLast 否 是 是 是
MoveNext 是 是 是 是
MovePrevious 否 是 是 是
NextRecordset * 是 是 是 是
Open 是 是 是 是
Requery 是 是 是 是
Resync 否 否 是 是
Supports 是 是 是 是
Update 是 是 是 是
UpdateBatch 是 是 是 是
* Microsoft Access databases.不支持
--------------------------------------------------------------
其中NextRecordset方法并不適用于Microsoft Access數(shù)據(jù)庫。
LockType
Recordset對象Open方法的LockType參數(shù)表示要采用的Lock類型,如果忽略這個參數(shù),那么系統(tǒng)會以Recordset對象的LockType屬性為預(yù)設(shè)值。LockType參數(shù)包含adLockReadOnly、adLockPrssimistic、adLockOptimistic及adLockBatchOptimistic等,分述如下:
-------------------------------------------------------------
常數(shù) 常數(shù)值 說明
--------------------------------------------------------------
adLockReadOnly 1 缺省值,Recordset對象以只讀方式啟動,無法運行AddNew、Update及Delete等方法
adLockPrssimistic 2 當(dāng)數(shù)據(jù)源正在更新時,系統(tǒng)會暫時鎖住其他用戶的動作,以保持數(shù)據(jù)一致性。
adLockOptimistic 3 當(dāng)數(shù)據(jù)源正在更新時,系統(tǒng)并不會鎖住其他用戶的動作,其他用戶可以對數(shù)據(jù)進行增、刪、改的操作。
adLockBatchOptimistic 4 當(dāng)數(shù)據(jù)源正在更新時,其他用戶必須將CursorLocation屬性改為adUdeClientBatch才能對數(shù)據(jù)進行增、
刪、改的操作。
------------------------------------------------------
RS.OPEN SQL,CONN,A,B
A:
ADOPENFORWARDONLY(=0)
只讀,且當(dāng)前數(shù)據(jù)記錄只能向下移動
ADOPENKEYSET(=1)
只讀,當(dāng)前數(shù)據(jù)記錄可自由移動
ADOPENDYNAMIC(=2)
可讀寫,當(dāng)前數(shù)據(jù)記錄可自由移動
ADOPENSTATIC(=3)
可讀寫,當(dāng)前數(shù)據(jù)記錄可自由移動,可看到新增記錄
B:
ADLOCKREADONLY(=1)
缺省鎖定類型,記錄集是只讀的,不能修改記錄
ADLOCKPESSIMISTIC(=2)
悲觀鎖定,當(dāng)修改記錄時,數(shù)據(jù)提供者將嘗試鎖定記錄以確保成功地編輯記錄。只要編輯一開始,則立即鎖住記錄。
ADLOCKOPTIMISTIC(=3)
樂觀鎖定 ,直到用Update方法提交更新記錄時才鎖定記錄。 ADLOCKBATCHOPTIMISTIC(=4)
批量樂觀鎖定,允許修改多個記錄,只有調(diào)用UpdateBatch方法后才鎖定記錄。
當(dāng)不需要改動任何記錄時,應(yīng)該使用只讀的記錄集,這樣提供者不用做任何檢測。
對于一般的使用,樂觀的鎖定可能是最好的選擇,因為記錄只被鎖定一小段時間,
數(shù)據(jù)在這段時間被更新。這減少了資源的使用。
成員表
下面的表格列出了 document 對象引出的成員。請單擊左側(cè)的標(biāo)簽來選擇你想要查看的成員類型。
|
屬性 |
|
| |
|