<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    2007年4月18日

    在網(wǎng)絡(luò)鄰居里面隱藏

    net config server /hidden:yes

    posted @ 2010-09-16 16:38 A++ 閱讀(152) | 評(píng)論 (0)編輯 收藏

    淘寶接口地址介紹

    http://isv.alisoft.com/isv/portal/home/home.jspa

    posted @ 2009-10-14 10:52 A++ 閱讀(288) | 評(píng)論 (1)編輯 收藏

    免安裝Oracle客戶端使用PL/SQL連接Oracle的2種方法

    方法一:

    大家都知道,用PL/SQL連接Oracle,是需要安裝Oracle客戶端軟件的。有沒要想過不安裝Oracle客戶端直接連接Oracle呢?

          其實(shí)我一直想這樣做,因?yàn)檫@個(gè)客戶端實(shí)在太讓人討厭了!!!不但會(huì)安裝一個(gè)JDK,而且還會(huì)把自己放在環(huán)境變量的最前面,會(huì)造成不小的麻煩。

          其實(shí)我之前問過很多人的,但是他們都說一定需要安裝Oracle客戶端的.......直到昨天無意中發(fā)現(xiàn)了以下這個(gè)方法:

          只需要在Oracle下載一個(gè)Instant Client Package的軟件就可以了,這個(gè)軟件不需要安裝,只要解壓就可以用了,很方便,就算重裝了系統(tǒng)還是可以用的。

          下載地址:http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/winsoft.html

          下載這個(gè),Instant Client Package - Basic包。然后解壓到任意目錄,在這個(gè)目錄下建立NETWORK文件夾,接著再這個(gè)文件夾下再建立ADMIN文件夾,然后建立tnsnames.ora文件,內(nèi)容如下:

         oracledata =
               (DESCRIPTION =
                 (ADDRESS_LIST =
                   (ADDRESS = (PROTOCOL = TCP)(HOST = yourhostIp )(PORT = 1521))
                 )
                 (CONNECT_DATA =
                   (SERVICE_NAME = yourSID   )
                 )
               )
        這里根據(jù)自己的實(shí)際情況配置。接著打開PL/SQL,在perference里面設(shè)置OCI Library和Oracle_home,我的設(shè)置是OCI Library=c:\oracleclient\oci.dll,Oracle_home=c:\oracleclient。

         根據(jù)自己的實(shí)際情況配置,其實(shí)就是剛才下載下來的那個(gè)包的路徑。還有最后一個(gè)問題,需要設(shè)置一個(gè)字符集,這樣查詢出來的數(shù)據(jù)才不會(huì)是亂碼,寫一個(gè)批處理pldev. bat放到pl安裝目錄下,內(nèi)容如下:

        set nls_lang=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
        PLSQLDev.exe

         這個(gè)字符集,指的是服務(wù)器端的字符集,請(qǐng)根據(jù)實(shí)際情況配置。

         最后,只要雙擊這個(gè)批處理,再填寫帳號(hào)和密碼就可以了


     
    方法二:
     
     
    前幾天發(fā)了免安裝Oracle客戶端使用PL/SQL連接Oracle一文,巴士飛揚(yáng)和我說,他早就用了另外一個(gè)更好用的綠色版本Oracle客戶端,而且不需要太復(fù)雜的配置。

          我比較了一下,我的文章中的方法,客戶端比較大,30M左右。設(shè)置比較復(fù)雜,不過應(yīng)該比較穩(wěn)定。巴士飛揚(yáng)所提供的包是一個(gè)3M多一點(diǎn)的,解壓開來10M,應(yīng)該是某位高人做的。

          綠色版Oracle客戶端下載(由巴士飛揚(yáng)友情提供):Oracle客戶端

          大家也說說哪個(gè)好用吧!!!

    posted @ 2009-08-14 09:36 A++ 閱讀(1493) | 評(píng)論 (1)編輯 收藏

    判斷瀏覽器

    <script language="javascript">
    if(window.navigator.appName=="Microsoft Internet Explorer"&&window.navigator.appVersion.substring(window.navigator.appVersion.indexOf("MSIE")+5,window.navigator.appVersion.indexOf("MSIE")+8)<6) {
    alert("對(duì)不起,AICBOSS需要使用IE6.0版本瀏覽器,請(qǐng)升級(jí)!");
    window.location="about:blank";
    }

    posted @ 2009-06-05 08:50 A++ 閱讀(240) | 評(píng)論 (0)編輯 收藏

    cmd ftp 模糊讀取文件

    @echo off
    echo open 10.76.1.77 77>> ftpscript.txt
    echo tzys >> ftpscript.txt
    echo tzys >> ftpscript.txt
    set wind=%date:~0,4%%date:~5,2%%date:~8,2%
    echo dir %wind% >> ftpscript.txt
    echo prompt off >> ftpscript.txt
    echo mget %wind%*.txt >> ftpscript.txt
    echo bye >> ftpscript.txt

    ftp -s:ftpscript.txt

    del ftpscript.txt

    posted @ 2009-06-03 11:11 A++ 閱讀(406) | 評(píng)論 (0)編輯 收藏

    Cmd下FTP使用命令全集

    2006年02月03日

    Cmd下FTP使用命令全集

    文章來源:CnXHacker.Net
    FTP命令是Internet用戶使用最頻繁的命令之一,不論是在DOS還是UNIX操作系統(tǒng)下使用FTP,都會(huì)遇到大量的FTP內(nèi)部命令。熟悉并靈活應(yīng)用FTP的內(nèi)部命令,可以大大方便使用者,并收到事半功倍之效。

    FTP的命令行格式為: ftp -v -d -i -n -g [主機(jī)名]
    -v 顯示遠(yuǎn)程服務(wù)器的所有響應(yīng)信息;
    -n 限制ftp的自動(dòng)登錄,即不使用;
    .n etrc文件;
    -d 使用調(diào)試方式;
    -g 取消全局文件名。

    ftp使用的內(nèi)部命令如下(中括號(hào)表示可選項(xiàng)):

    1.![cmd[args]]:在本地機(jī)中執(zhí)行交互shell,exit回到ftp環(huán)境,如:!ls*.zip.
    2.$ macro-ame[args]:執(zhí)行宏定義macro-name.
    3.account[password]:提供登錄遠(yuǎn)程系統(tǒng)成功后訪問系統(tǒng)資源所需的補(bǔ)充口令。
    4.append local-file[remote-file]:將本地文件追加到遠(yuǎn)程系統(tǒng)主機(jī),若未指定遠(yuǎn)程系統(tǒng)文件名,則使用本地文件名。
    5.ascii:使用ascii類型傳輸方式。
    6.bell:每個(gè)命令執(zhí)行完畢后計(jì)算機(jī)響鈴一次。
    7.bin:使用二進(jìn)制文件傳輸方式。
    8.bye:退出ftp會(huì)話過程。
    9.case:在使用mget時(shí),將遠(yuǎn)程主機(jī)文件名中的大寫轉(zhuǎn)為小寫字母。
    10.cd remote-dir:進(jìn)入遠(yuǎn)程主機(jī)目錄。
    11.cdup:進(jìn)入遠(yuǎn)程主機(jī)目錄的父目錄。
    12.chmod mode file-name:將遠(yuǎn)程主機(jī)文件file-name的存取方式設(shè)置為mode,如: chmod 777 a.out 。
    13.close:中斷與遠(yuǎn)程服務(wù)器的ftp會(huì)話(與open對(duì)應(yīng))。
    14.cr:使用asscii方式傳輸文件時(shí),將回車換行轉(zhuǎn)換為回行。
    15.delete remote-file:刪除遠(yuǎn)程主機(jī)文件。
    16.debug[debug-value]:設(shè)置調(diào)試方式, 顯示發(fā)送至遠(yuǎn)程主機(jī)的每條命令,如: deb up 3,若設(shè)為0,表示取消debug。
    17.dir[remote-dir][local-file]:顯示遠(yuǎn)程主機(jī)目錄,并將結(jié)果存入本地文件local-file。
    18.disconnection:同close。
    19.form format:將文件傳輸方式設(shè)置為format,缺省為file方式。
    20.get remote-file[local-file]: 將遠(yuǎn)程主機(jī)的文件remote-file傳至本地硬盤的local-file。
    21.glob:設(shè)置mdelete,mget,mput的文件名擴(kuò)展,缺省時(shí)不擴(kuò)展文件名,同命令行的-g參數(shù)。
    22.hash:每傳輸1024字節(jié),顯示一個(gè)hash符號(hào)(#)。
    23.help[cmd]:顯示ftp內(nèi)部命令cmd的幫助信息,如:help get。
    24.idle[seconds]:將遠(yuǎn)程服務(wù)器的休眠計(jì)時(shí)器設(shè)為[seconds]秒。
    25.image:設(shè)置二進(jìn)制傳輸方式(同binary)。
    26.lcd[dir]:將本地工作目錄切換至dir。
    27.ls[remote-dir][local-file]:顯示遠(yuǎn)程目錄remote-dir, 并存入本地文件local-file。
    28.macdef macro-name:定義一個(gè)宏,遇到macdef下的空行時(shí),宏定義結(jié)束。
    29.mdelete[remote-file]:刪除遠(yuǎn)程主機(jī)文件。
    30.mdir remote-files local-file:與dir類似,但可指定多個(gè)遠(yuǎn)程文件,如: mdir *.o.*.zipoutfile 。
    31.mget remote-files:傳輸多個(gè)遠(yuǎn)程文件。
    32.mkdir dir-name:在遠(yuǎn)程主機(jī)中建一目錄。
    33.mls remote-file local-file:同nlist,但可指定多個(gè)文件名。
    34.mode[modename]:將文件傳輸方式設(shè)置為modename, 缺省為stream方式。
    35.modtime file-name:顯示遠(yuǎn)程主機(jī)文件的最后修改時(shí)間。
    36.mput local-file:將多個(gè)文件傳輸至遠(yuǎn)程主機(jī)。
    37.newer file-name: 如果遠(yuǎn)程機(jī)中file-name的修改時(shí)間比本地硬盤同名文件的時(shí)間更近,則重傳該文件。
    38.nlist[remote-dir][local-file]:顯示遠(yuǎn)程主機(jī)目錄的文件清單,并存入本地硬盤的local-file。
    39.nmap[inpattern outpattern]:設(shè)置文件名映射機(jī)制, 使得文件傳輸時(shí),文件中的某些字符相互轉(zhuǎn)換,如:nmap $1.$2.$3[$1,$2].[$2,$3],則傳輸文件a1.a2.a3時(shí),文件名變?yōu)閍1,a2。該命令特別適用于遠(yuǎn)程主機(jī)為非UNIX
    機(jī)的情況。
    40.ntrans[inchars[outchars]]:設(shè)置文件名字符的翻譯機(jī)制,如ntrans1R,則文件名LLL將變?yōu)镽RR。
    41.open host[port]:建立指定ftp服務(wù)器連接,可指定連接端口。
    42.passive:進(jìn)入被動(dòng)傳輸方式。
    43.prompt:設(shè)置多個(gè)文件傳輸時(shí)的交互提示。
    44.proxy ftp-cmd:在次要控制連接中,執(zhí)行一條ftp命令, 該命令允許連接兩個(gè)ftp服務(wù)器,以在兩個(gè)服務(wù)器間傳輸文件。第一條ftp命令必須為open,以首先建立兩個(gè)服務(wù)器間的連接。
    45.put local-file[remote-file]:將本地文件local-file傳送至遠(yuǎn)程主機(jī)。
    46.pwd:顯示遠(yuǎn)程主機(jī)的當(dāng)前工作目錄。
    47.quit:同bye,退出ftp會(huì)話。
    48.quote arg1,arg2...:將參數(shù)逐字發(fā)至遠(yuǎn)程ftp服務(wù)器,如:quote syst.
    49.recv remote-file[local-file]:同get。
    50.reget remote-file[local-file]:類似于get,但若local-file存在,則從上次傳輸中斷處續(xù)傳。
    51.rhelp[cmd-name]:請(qǐng)求獲得遠(yuǎn)程主機(jī)的幫助。
    52.rstatus[file-name]:若未指定文件名,則顯示遠(yuǎn)程主機(jī)的狀態(tài),否則顯示文件狀態(tài)。
    53.rename[from][to]:更改遠(yuǎn)程主機(jī)文件名。
    54.reset:清除回答隊(duì)列。
    55.restart marker:從指定的標(biāo)志marker處,重新開始get或put,如:restart 130。
    56.rmdir dir-name:刪除遠(yuǎn)程主機(jī)目錄。
    57.runique:設(shè)置文件名唯一性存儲(chǔ),若文件存在,則在原文件后加后綴..1,.2等。
    58.send local-file[remote-file]:同put。
    59.sendport:設(shè)置PORT命令的使用。
    60.site arg1,arg2...:將參數(shù)作為SITE命令逐字發(fā)送至遠(yuǎn)程ftp主機(jī)。
    61.size file-name:顯示遠(yuǎn)程主機(jī)文件大小,如:site idle 7200。
    62.status:顯示當(dāng)前ftp狀態(tài)。
    63.struct[struct-name]:將文件傳輸結(jié)構(gòu)設(shè)置為struct-name, 缺省時(shí)使用stream結(jié)構(gòu)。
    64.sunique:將遠(yuǎn)程主機(jī)文件名存儲(chǔ)設(shè)置為唯一(與runique對(duì)應(yīng))。
    65.system:顯示遠(yuǎn)程主機(jī)的操作系統(tǒng)類型。
    66.tenex:將文件傳輸類型設(shè)置為TENEX機(jī)的所需的類型。
    67.tick:設(shè)置傳輸時(shí)的字節(jié)計(jì)數(shù)器。
    68.trace:設(shè)置包跟蹤。
    69.type[type-name]:設(shè)置文件傳輸類型為type-name,缺省為ascii,如:type binary,設(shè)置二進(jìn)制傳輸方式。
    70.umask[newmask]:將遠(yuǎn)程服務(wù)器的缺省umask設(shè)置為newmask,如:umask 3。
    71.user user-name[password][account]:向遠(yuǎn)程主機(jī)表明自己的身份,需要口令時(shí),必須輸入口令,如:user anonymous my@email
    72.verbose:同命令行的-v參數(shù),即設(shè)置詳盡報(bào)告方式,ftp服務(wù)器的所有響應(yīng)都將顯示給用戶,缺省為on.
    73.?[cmd]:同help.

    posted @ 2009-06-02 15:00 A++ 閱讀(273) | 評(píng)論 (0)編輯 收藏

    表拷貝

    要看這兩個(gè)表的字段是否一致阿,  
      如果是象插到另以個(gè)空表,還不入建一個(gè)新的,  
      create   table   newtable   as   select   *   from   oldtable;  
      有數(shù)據(jù)的話就用  
      insert   into   newtable(select   *   from   oldtable);

    posted @ 2009-05-31 18:28 A++ 閱讀(171) | 評(píng)論 (0)編輯 收藏

    ubuntu下bin文件安裝說明

    ubuntu下bin文件的安裝:

    目前我就安裝了2個(gè)bin文件:一個(gè)是realplayer11,另一個(gè)是google earth

    以realplayer11.bin為例:

    A:將realplayer11.bin放置在主文件夾中 (位置-主文件夾)

    B:打開終端 (應(yīng)用程序-附件-終端)

    C:輸入命令: sudo chmod +x realplayer11.bin 回車

    再輸入:sudo ./realplayer11.bin 回車

    命令行完成后,打開應(yīng)用程序-影音-realplayer, 進(jìn)入圖形安裝界面,這就跟windows下一樣了。

    注:real player 11安裝成后是需要在首選項(xiàng)中對(duì)硬件進(jìn)行配置,配置下聲頻設(shè)備什么的,很簡單。

    同樣的方式安裝google earth,但是安裝完成后,直接在應(yīng)用程序中打開google earth會(huì)發(fā)現(xiàn)一個(gè)問題,怎么這個(gè)google earth里沒有地球,只有星星呢?

    是怎么回事呢?原來是權(quán)限的問題,據(jù)說可以在安裝的結(jié)尾解決這個(gè)問題,但是我沒看到,也懶的重新安裝,所以就用稍微麻煩點(diǎn)的方法吧。

    ---》從終端打開google earth 命令: sudo googleearth 然后照常摸黑輸入密碼,打開googleearth,搞定。

    posted @ 2009-05-14 09:08 A++ 閱讀(1019) | 評(píng)論 (0)編輯 收藏

    言論

    ◎ “拆東墻補(bǔ)西墻”之升級(jí)版“拆別人墻補(bǔ)自己墻”

    ◎ 白馬啊……你死去哪了!是不是你把王子弄丟了不敢來見我了。
    ◎ 別人裝處,我只好裝經(jīng)驗(yàn)豐富。
    ◎ 不可否認(rèn),馬賽克是這個(gè)世紀(jì)阻礙人類裸體藝術(shù)進(jìn)步最大的障礙!
    ◎ 不怕小偷兒帶工具,就怕小偷兒懂科技!
    ◎ 長個(gè)包子樣就別怨狗跟著!
    ◎ 純,屬虛構(gòu);亂,是佳人。
    ◎ 當(dāng)白天又一次把黑夜按翻在床上的時(shí)候,太陽就出生了……
    ◎ 跌倒了,爬起來再哭。
    ◎ 犯賤是普遍真理,你我只是其中之一。
    ◎ 孤單是一個(gè)人的狂歡,狂歡是一群人的孤單。
    ◎ 好久沒有人把牛皮吹的這么清新脫俗了!
    ◎ 既宅又腐,前途未卜。
    ◎ 今天心情不好,我只有四句話想說,包括這句和前面的兩句,我的話說完了
    ◎ 開車無難事,只怕有新人!
    ◎ 雷鋒做了好事不留名,但是每一件事情都記到日記里面。
    ◎ 路漫漫其修遠(yuǎn)兮,不如我們打的吧。
    ◎ 驢是的念來過倒
    ◎ 每當(dāng)我錯(cuò)過一個(gè)女孩,我就在地上放一塊磚,于是便有了長城。
    ◎ 明騷易躲,暗賤難防。
    ◎ 命運(yùn)負(fù)責(zé)洗牌,但是玩牌的是我們自己!
    ◎ 某女在博客日記寫:某月某日,大醉而歸,伸手一摸,手機(jī)和貞操都在,睡覺!
    ◎ 男人膝下有黃金,我把整個(gè)腿都切下來了,連塊銅也沒找著!
    ◎ 你不能讓所有人滿意,因?yàn)椴皇撬械娜硕际侨恕?
    ◎ 你的手機(jī)比話費(fèi)還便宜。
    ◎ 你以為我會(huì)眼睜睜看著你去送死嗎?我會(huì)閉上眼睛的。
    ◎ 女人一生喜歡兩朵花:一是有錢花,二是盡量花!
    ◎ 騙子太多,傻子明顯不夠用了。
    ◎ 錢不是問題,問題是沒錢!
    ◎ 錢可以解決的問題都不是問題。
    ◎ 人家有的是背景,而我有的是背影。
    ◎ 人又不聰明,還學(xué)人家禿頂!
    ◎ 如果你容不下我,說明不是你的心胸太狹小,就是我的人格太偉大。
    ◎ 如果太陽不出來了,我就不去上班了;如果出來了,我就繼續(xù)睡覺!
    ◎ 上帝不會(huì)為難頭腦簡單的孩子。
    ◎ 失敗不可怕,關(guān)鍵看是不是成功他媽。
    ◎ 史上最神秘的部門:有關(guān)部門。
    ◎ 思想有多遠(yuǎn),你就給我滾多遠(yuǎn)!
    ◎ 雖然你身上噴了古龍水,但我還是能隱約聞到一股人渣味兒。
    ◎ 臺(tái)灣一日不收復(fù),我一日不過四級(jí)!
    ◎ 談錢不傷感情,談感情最他媽傷錢。
    ◎ 唾沫是用來數(shù)鈔票的,而不是用來講道理的。
    ◎ 參加減肥班,教練讓我穿寬松衣服,要有寬松的衣服我參加減肥班干嘛?
    ◎ 我的名字叫Rain,小名叫潤土。
    ◎ 我的人生有A 面也有B面,你的人生有S面也有B面。
    ◎ 我的優(yōu)點(diǎn)是:我很帥;但是我的缺點(diǎn)是:我?guī)浀牟幻黠@。
    ◎ 我是胖人,不是粗人。
    ◎ 我這輩子只有兩件事不會(huì):這也不會(huì),那也不會(huì)。
    ◎ 我自橫刀向天笑,笑完我就去睡覺。
    ◎ 我詛咒你一輩子買方便面沒有調(diào)料包。
    ◎ 洗臉只洗臉頰,刷牙只刷門牙
    ◎ 現(xiàn)在的大學(xué)生太沒素質(zhì)了!過來拷毛片,居然用剪切!
    ◎ 一覺醒來,天都黑了。
    ◎ 一山不能容二虎,除非一公和一母。
    ◎ 英雄不問出路,流氓不看歲數(shù)!
    ◎ 一次上街,被一群女孩攔住。她們說我?guī)浳也怀姓J(rèn),她們就打我,說我虛偽。
    ◎ 鴛鴦戲水,都他媽淹死;比翼雙飛,都他媽摔死。
    ◎ 再牛的肖邦,也彈不出老子的悲傷!
    ◎ 讓我拿什么整死你,我的愛人。
    ◎ 左青龍,右白虎,肩膀紋個(gè)米老鼠。

    posted @ 2009-05-12 11:35 A++ 閱讀(281) | 評(píng)論 (0)編輯 收藏

    新建用戶并添加到管理組

    用recovery mode模式啟動(dòng)后,進(jìn)入命令行模式,提示符應(yīng)該是 #

    1、輸入用戶管理的命令,新建用戶(以test為例):
    useradd test

    修改 test 用戶的密碼:
    passwd test

    2、將新用戶添加到管理組:
    gpasswd -a test admin

    3、給 test 用戶創(chuàng)建自己的目錄:
    cd /home

    mkdir test

    chown test /home/test

    4、重新啟動(dòng),
    reboot

    然后用 test 登錄,

    登錄以后,點(diǎn)菜單“系統(tǒng)-系統(tǒng)管理-用戶和組”,進(jìn)去選中你的用戶,點(diǎn)右邊的“屬性”按鈕,到用戶權(quán)限里打勾需要的;

    posted @ 2009-05-12 09:23 A++ 閱讀(226) | 評(píng)論 (0)編輯 收藏

    收集MyEclipse 7.0注冊(cè)碼

    icech在網(wǎng)上查代碼,竟然找到了一個(gè)Myeclipse7.0注冊(cè)機(jī)的源代碼,真強(qiáng)!這個(gè)源代碼號(hào)稱支持Myeclipse 6.5和7.0兩個(gè)版本,java的代碼,很爽!編譯運(yùn)行后輸入想要注冊(cè)的用戶名,然后再控制臺(tái)下就會(huì)生成相應(yīng)的注冊(cè)碼!

    代碼如下:

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;

    public class MyEclipseGen {
    private static final String LL = "Decompiling this copyrighted software is a violation of both your license agreement and the Digital Millenium Copyright Act of 1998 (http://www.loc.gov/copyright/legislation/dmca.pdf). Under section 1204 of the DMCA, penalties range up to a $500,000 fine or up to five years imprisonment for a first offense. Think about it; pay for a license, avoid prosecution, and feel better about yourself.";

    public String getSerial(String userId, String licenseNum) {
       java.util.Calendar cal = java.util.Calendar.getInstance();
       cal.add(1, 3);
       cal.add(6, -1);
       java.text.NumberFormat nf = new java.text.DecimalFormat("000");
       licenseNum = nf.format(Integer.valueOf(licenseNum));
       String verTime = new StringBuilder("-").append(
         new java.text.SimpleDateFormat("yyMMdd").format(cal.getTime()))
         .append("0").toString();
       String type = "YE3MP-";
       String need = new StringBuilder(userId.substring(0, 1)).append(type)
         .append("300").append(licenseNum).append(verTime).toString();
       String dx = new StringBuilder(need).append(LL).append(userId)
         .toString();
       int suf = this.decode(dx);
       String code = new StringBuilder(need).append(String.valueOf(suf))
         .toString();
       return this.change(code);
    }

    private int decode(String s) {
       int i;
       char[] ac;
       int j;
       int k;
       i = 0;
       ac = s.toCharArray();
       j = 0;
       k = ac.length;
       while (j < k) {
        i = (31 * i) + ac[j];
        j++;
       }
       return Math.abs(i);
    }

    private String change(String s) {
       byte[] abyte0;
       char[] ac;
       int i;
       int k;
       int j;
       abyte0 = s.getBytes();
       ac = new char[s.length()];
       i = 0;
       k = abyte0.length;
       while (i < k) {
        j = abyte0[i];
        if ((j >= 48) && (j <= 57)) {
         j = (((j - 48) + 5) % 10) + 48;
        } else if ((j >= 65) && (j <= 90)) {
         j = (((j - 65) + 13) % 26) + 65;
        } else if ((j >= 97) && (j <= 122)) {
         j = (((j - 97) + 13) % 26) + 97;
        }
        ac[i] = (char) j;
        i++;
       }
       return String.valueOf(ac);
    }

    public MyEclipseGen() {
       super();
    }

    public static void main(String[] args) {
       try {
        System.out.println("please input register name:");
        BufferedReader reader = new BufferedReader(new InputStreamReader(
          System.in));
        String userId = null;
        userId = reader.readLine();
        MyEclipseGen myeclipsegen = new MyEclipseGen();
        String res = myeclipsegen.getSerial(userId, "5");
        System.out.println("Serial:" + res);
        reader.readLine();
       } catch (IOException ex) {
       }
    }
    }

    注意:注冊(cè)Myeclipse的時(shí)候要先斷開網(wǎng)絡(luò),否則可能注冊(cè)不成功!

    注冊(cè)方法:
    window -> preferences -> myeclipse -> subscription

    下面是一個(gè)網(wǎng)上流傳很廣的Myeclipse注冊(cè)碼,有效!

    Subscriber:MaYong
    Subscription Code:ZLR8ZO-655444-54678656985359684

    2.

    下載頁面:
    http://www.myeclipseide.com/Downloads-req-viewsdownload-sid-30.html

    下載地址:
    http://downloads.myeclipseide.com/downloads/products/eworkbench/7.0M1/MyEclipse_7.0M1_E3.4.0_Installer.exe

    主要增加了對(duì)JavaScript的一些工具,以及JSF(Java server face)的一些工具

    漢化教程:
    首先打開MyEclipse7.0
    然后選擇Help →
    Software Updates..
    然后彈出一個(gè)菜單,選擇Available Software → Add Site..
    然后會(huì)彈出一個(gè)輸入框,輸入
    http://download.eclipse.org/technology/babel/update-site/ 或者
    http://download.eclipse.org/technology/babel/update-site/ganymede/
    然后點(diǎn)擊確定,這時(shí)也許點(diǎn)該網(wǎng)址對(duì)應(yīng)的列表刷不出來,我們要點(diǎn)一下Refresh 稍等一下選擇列表里面的中文那一項(xiàng)
    選擇Eclipse language pack for Simplified chinese

    然后點(diǎn)擊Install.. → 同意協(xié)議 最后等MyEclipse自動(dòng)加載,可能加載過程有點(diǎn)慢,耐心等下,如果實(shí)在太慢了,重新選擇一次試試,等完成再關(guān)閉MyEclipse 然后啟動(dòng),MyEclipse
    就成了中文版的
    注冊(cè)碼:
    Subscriber: www.1cn.biz
    Subscription Code: jLR8ZC-655444-65526656052107345

    填寫注冊(cè)碼時(shí),最好拔掉網(wǎng)線!!!

    posted @ 2009-03-27 11:02 A++ 閱讀(1813) | 評(píng)論 (1)編輯 收藏

    名詞解釋

    框架:一個(gè)應(yīng)用程序的半成品,中間可以共享的可復(fù)用的公共構(gòu)架。

    posted @ 2007-09-04 09:28 A++ 閱讀(162) | 評(píng)論 (0)編輯 收藏

    刪除服務(wù)

    該服務(wù)程序安裝目錄刪除 開始》》運(yùn)行 輸入regedit 回車進(jìn)入注冊(cè)表 看下 \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 有沒有 有刪除次 重啟

    posted @ 2007-05-30 10:33 A++ 閱讀(178) | 評(píng)論 (0)編輯 收藏

    Java連接各種數(shù)據(jù)庫的實(shí)例

    Java連接各種數(shù)據(jù)庫的實(shí)例 
    來源:  網(wǎng)全天下  作者:  Zenith 
    此文中的代碼主要列出連接數(shù)據(jù)庫的關(guān)鍵代碼,其他訪問數(shù)據(jù)庫代碼省略 
     
    1、Oracle8/8i/9i數(shù)據(jù)庫(thin模式)
    Oracle(String  url="jdbc:oracle:thin:@localhost:1521:orcl";
    //orcl為數(shù)據(jù)庫的SID
    String  user="test";
    String  password="test";
    Connection  conn=  DriverManager.getConnection(url,user,password);
     
    2、DB2數(shù)據(jù)庫
    Class.forName("com.ibm.db2.jdbc.app.DB2Driver  ").newInstance();
    String  url="jdbc:db2://localhost:5000/sample";
    //sample為你的數(shù)據(jù)庫名
    String  user="admin";
    String  password="";
    Connection  conn=  DriverManager.getConnection(url,user,password);

    3、Sql? Server7.0/2000/2005數(shù)據(jù)庫
    連接SqlServer2000
    Microsoft SQLServer(
    cn = DriverManager.getConnection(
    "jdbc:jtds:sqlserver://MyDbComputerNameOrIP:1433/master", sUsr, sPwd );

    Microsoft SQLServer(String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb";
    //mydb為數(shù)據(jù)庫
    String user="sa";
    String password="";
    Connection conn= DriverManager.getConnection(url,user,password);

    連接SqlServer2005
    (
    URL = "jdbc:sqlserver://localhost:1433;DatabaseName=tempdb";
    2000和2005略有不同
     
    4、Sybase數(shù)據(jù)庫
    Sybase(
    String  url  ="  jdbc:sybase:Tds:localhost:5007/myDB";
    //myDB為你的數(shù)據(jù)庫名
    Properties  sysProps  =  System.getProperties();
    SysProps.put("user","userid");
    SysProps.put("password","user_password");
    Connection  conn=  DriverManager.getConnection(url,  SysProps);
     
    5、Informix數(shù)據(jù)庫
    Class.forName("com.informix.jdbc.IfxDriver").newInstance();
    String  url  =
    "jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver;
    user=testuser;password=testpassword";
    //myDB為數(shù)據(jù)庫名
    Connection  conn=  DriverManager.getConnection(url);
     
    6、MySQL數(shù)據(jù)庫
    MySQL(
    String  url  ="jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode= 
    true&characterEncoding=8859_1"
    //myDB為數(shù)據(jù)庫名
    Connection  conn=  DriverManager.getConnection(url);
     
    7、PostgreSQL數(shù)據(jù)庫
    PostgreSQL(
    String  url  ="jdbc:postgresql://localhost/myDB"
    //myDB為數(shù)據(jù)庫名
    String  user="myuser";
    String  password="mypassword";
    Connection  conn=  DriverManager.getConnection(url,user,password);
     
    8、odbc橋接 
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  //裝載JDBC-ODBC驅(qū)動(dòng)程序
    strCon  =  "jdbc:odbc:Test_DB";  //設(shè)置數(shù)據(jù)庫連接字符串  ,test_DB 


     9、access數(shù)據(jù)庫直連用ODBC的
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ;
    String url="jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ="+application.getRealPath("/Data/ReportDemo.mdb");
    Connection conn = DriverManager.getConnection(url,"","");
     Statement stmtNew=conn.createStatement() ;

    二、JDBC連接MySql方式
        下面是使用JDBC連接MySql的一個(gè)小的教程    

        1、查找驅(qū)動(dòng)程序
        MySQL目前提供的java驅(qū)動(dòng)程序?yàn)镃onnection/J,可以從MySQL官方網(wǎng)站下載,并找到mysql-connector-java-3.0.15-ga-bin.jar文件,此驅(qū)動(dòng)程序?yàn)榧僯ava驅(qū)動(dòng)程序,不需做其他配置。

        2、動(dòng)態(tài)指定classpath
        如果需要執(zhí)行時(shí)動(dòng)態(tài)指定classpath,就在執(zhí)行時(shí)采用-cp方式。否則將上面的.jar文件加入到classpath環(huán)境變量中。

        3、加載驅(qū)動(dòng)程序
    try{
        Class.forName(com.mysql.jdbc.Driver);
        System.out.println(Success loading Mysql Driver!);
    }catch(Exception e)
    {
        System.out.println(Error loading Mysql Driver!);
        e.printStackTrace();
    }

        4、設(shè)置連接的url
        jdbc:mysql://localhost/databasename[?pa=va][&pa=va]

    三、以下列出了在使用JDBC來連接Oracle數(shù)據(jù)庫時(shí)可以使用的一些技巧,這些技巧能夠使我們更好地發(fā)揮系統(tǒng)的性能和實(shí)現(xiàn)更多的功能(系轉(zhuǎn)載)。

      1、在客戶端軟件開發(fā)中使用Thin驅(qū)動(dòng)程序

      在開發(fā)Java軟件方面,Oracle的數(shù)據(jù)庫提供了四種類型的驅(qū)動(dòng)程序,二種用于應(yīng)用軟件、applets、servlets等客戶端軟件,另外二種用于數(shù)據(jù)庫中的Java存儲(chǔ)過程等服務(wù)器端軟件。在客戶機(jī)端軟件的開發(fā)中,我們可以選擇OCI驅(qū)動(dòng)程序或Thin驅(qū)動(dòng)程序。OCI驅(qū)動(dòng)程序利用Java本地化接口(JNI),通過Oracle客戶端軟件與數(shù)據(jù)庫進(jìn)行通訊。Thin驅(qū)動(dòng)程序是純Java驅(qū)動(dòng)程序,它直接與數(shù)據(jù)庫進(jìn)行通訊。為了獲得最高的性能,Oracle建議在客戶端軟件的開發(fā)中使用OCI驅(qū)動(dòng)程序,這似乎是正確的。但我建議使用Thin驅(qū)動(dòng)程序,因?yàn)橥ㄟ^多次測試發(fā)現(xiàn),在通常情況下,Thin驅(qū)動(dòng)程序的性能都超過了OCI驅(qū)動(dòng)程序。

      2、關(guān)閉自動(dòng)提交功能,提高系統(tǒng)性能

      在第一次建立與數(shù)據(jù)庫的連接時(shí),在缺省情況下,連接是在自動(dòng)提交模式下的。為了獲得更好的性能,可以通過調(diào)用帶布爾值false參數(shù)的Connection類的setAutoCommit()方法關(guān)閉自動(dòng)提交功能,如下所示:

      conn.setAutoCommit(false);

      值得注意的是,一旦關(guān)閉了自動(dòng)提交功能,我們就需要通過調(diào)用Connection類的commit()和rollback()方法來人工的方式對(duì)事務(wù)進(jìn)行管理。

      3、在動(dòng)態(tài)SQL或有時(shí)間限制的命令中使用Statement對(duì)象

      在執(zhí)行SQL命令時(shí),我們有二種選擇:可以使用PreparedStatement對(duì)象,也可以使用Statement對(duì)象。無論多少次地使用同一個(gè)SQL命令,PreparedStatement都只對(duì)它解析和編譯一次。當(dāng)使用Statement對(duì)象時(shí),每次執(zhí)行一個(gè)SQL命令時(shí),都會(huì)對(duì)它進(jìn)行解析和編譯。這可能會(huì)使你認(rèn)為,使用PreparedStatement對(duì)象比使用Statement對(duì)象的速度更快。然而,我進(jìn)行的測試表明,在客戶端軟件中,情況并非如此。因此,在有時(shí)間限制的SQL操作中,除非成批地處理SQL命令,我們應(yīng)當(dāng)考慮使用Statement對(duì)象。

      此外,使用Statement對(duì)象也使得編寫動(dòng)態(tài)SQL命令更加簡單,因?yàn)槲覀兛梢詫⒆址B接在一起,建立一個(gè)有效的SQL命令。因此,我認(rèn)為,Statement對(duì)象可以使動(dòng)態(tài)SQL命令的創(chuàng)建和執(zhí)行變得更加簡單。

      4、利用helper函數(shù)對(duì)動(dòng)態(tài)SQL命令進(jìn)行格式化

      在創(chuàng)建使用Statement對(duì)象執(zhí)行的動(dòng)態(tài)SQL命令時(shí),我們需要處理一些格式化方面的問題。例如,如果我們想創(chuàng)建一個(gè)將名字O'Reilly插入表中的SQL命令,則必須使用二個(gè)相連的“''”號(hào)替換O'Reilly中的“'”號(hào)。完成這些工作的最好的方法是創(chuàng)建一個(gè)完成替換操作的helper方法,然后在連接字符串心服用公式表達(dá)一個(gè)SQL命令時(shí),使用創(chuàng)建的helper方法。與此類似的是,我們可以讓helper方法接受一個(gè)Date型的值,然后讓它輸出基于Oracle的to_date()函數(shù)的字符串表達(dá)式。

      5、利用PreparedStatement對(duì)象提高數(shù)據(jù)庫的總體效率

      在使用PreparedStatement對(duì)象執(zhí)行SQL命令時(shí),命令被數(shù)據(jù)庫進(jìn)行解析和編譯,然后被放到命令緩沖區(qū)。然后,每當(dāng)執(zhí)行同一個(gè)PreparedStatement對(duì)象時(shí),它就會(huì)被再解析一次,但不會(huì)被再次編譯。在緩沖區(qū)中可以發(fā)現(xiàn)預(yù)編譯的命令,并且可以重新使用。在有大量用戶的企業(yè)級(jí)應(yīng)用軟件中,經(jīng)常會(huì)重復(fù)執(zhí)行相同的SQL命令,使用PreparedStatement對(duì)象帶來的編譯次數(shù)的減少能夠提高數(shù)據(jù)庫的總體性能。如果不是在客戶端創(chuàng)建、預(yù)備、執(zhí)行PreparedStatement任務(wù)需要的時(shí)間長于Statement任務(wù),我會(huì)建議在除動(dòng)態(tài)SQL命令之外的所有情況下使用PreparedStatement對(duì)象。

      6、在成批處理重復(fù)的插入或更新操作中使用PreparedStatement對(duì)象

      如果成批地處理插入和更新操作,就能夠顯著地減少它們所需要的時(shí)間。Oracle提供的Statement和 CallableStatement并不真正地支持批處理,只有PreparedStatement對(duì)象才真正地支持批處理。我們可以使用addBatch()和executeBatch()方法選擇標(biāo)準(zhǔn)的JDBC批處理,或者通過利用PreparedStatement對(duì)象的setExecuteBatch()方法和標(biāo)準(zhǔn)的executeUpdate()方法選擇速度更快的Oracle專有的方法。要使用Oracle專有的批處理機(jī)制,可以以如下所示的方式調(diào)用setExecuteBatch():
    PreparedStatement pstmt3D null;
    try {
    ((OraclePreparedStatement)
    pstmt).setExecuteBatch(30);
    ...
    pstmt.executeUpdate();
    }


      調(diào)用setExecuteBatch()時(shí)指定的值是一個(gè)上限,當(dāng)達(dá)到該值時(shí),就會(huì)自動(dòng)地引發(fā)SQL命令執(zhí)行,標(biāo)準(zhǔn)的executeUpdate()方法就會(huì)被作為批處理送到數(shù)據(jù)庫中。我們可以通過調(diào)用PreparedStatement類的sendBatch()方法隨時(shí)傳輸批處理任務(wù)。

      7、使用Oracle locator方法插入、更新大對(duì)象(LOB)

      Oracle的PreparedStatement類不完全支持BLOB和CLOB等大對(duì)象的處理,尤其是Thin驅(qū)動(dòng)程序不支持利用PreparedStatement對(duì)象的setObject()和setBinaryStream()方法設(shè)置BLOB的值,也不支持利用setCharacterStream()方法設(shè)置CLOB的值。只有l(wèi)ocator本身中的方法才能夠從數(shù)據(jù)庫中獲取LOB類型的值。可以使用PreparedStatement對(duì)象插入或更新LOB,但需要使用locator才能獲取LOB的值。由于存在這二個(gè)問題,因此,我建議使用locator的方法來插入、更新或獲取LOB的值。

      8、使用SQL92語法調(diào)用存儲(chǔ)過程

      在調(diào)用存儲(chǔ)過程時(shí),我們可以使用SQL92或Oracle PL/SQL,由于使用Oracle PL/SQL并沒有什么實(shí)際的好處,而且會(huì)給以后維護(hù)你的應(yīng)用程序的開發(fā)人員帶來麻煩,因此,我建議在調(diào)用存儲(chǔ)過程時(shí)使用SQL92。

      9、使用Object SQL將對(duì)象模式轉(zhuǎn)移到數(shù)據(jù)庫中

      既然可以將Oracle的數(shù)據(jù)庫作為一種面向?qū)ο蟮臄?shù)據(jù)庫來使用,就可以考慮將應(yīng)用程序中的面向?qū)ο竽J睫D(zhuǎn)到數(shù)據(jù)庫中。目前的方法是創(chuàng)建Java bean作為偽裝的數(shù)據(jù)庫對(duì)象,將它們的屬性映射到關(guān)系表中,然后在這些bean中添加方法。盡管這樣作在Java中沒有什么問題,但由于操作都是在數(shù)據(jù)庫之外進(jìn)行的,因此其他訪問數(shù)據(jù)庫的應(yīng)用軟件無法利用對(duì)象模式。如果利用Oracle的面向?qū)ο蟮募夹g(shù),可以通過創(chuàng)建一個(gè)新的數(shù)據(jù)庫對(duì)象類型在數(shù)據(jù)庫中模仿其數(shù)據(jù)和操作,然后使用JPublisher等工具生成自己的Java bean類。如果使用這種方式,不但Java應(yīng)用程序可以使用應(yīng)用軟件的對(duì)象模式,其他需要共享你的應(yīng)用中的數(shù)據(jù)和操作的應(yīng)用軟件也可以使用應(yīng)用軟件中的對(duì)象模式。

      10、利用SQL完成數(shù)據(jù)庫內(nèi)的操作

      我要向大家介紹的最重要的經(jīng)驗(yàn)是充分利用SQL的面向集合的方法來解決數(shù)據(jù)庫處理需求,而不是使用Java等過程化的編程語言。

      如果編程人員要在一個(gè)表中查找許多行,結(jié)果中的每個(gè)行都會(huì)查找其他表中的數(shù)據(jù),最后,編程人員創(chuàng)建了獨(dú)立的UPDATE命令來成批地更新第一個(gè)表中的數(shù)據(jù)。與此類似的任務(wù)可以通過在set子句中使用多列子查詢而在一個(gè)UPDATE命令中完成。當(dāng)能夠在單一的SQL命令中完成任務(wù),何必要讓數(shù)據(jù)在網(wǎng)上流來流去的?我建議用戶認(rèn)真學(xué)習(xí)如何最大限度地發(fā)揮SQL的功能。


    二、JDBC連接MySql方式
        下面是使用JDBC連接MySql的一個(gè)小的教程    

        1、查找驅(qū)動(dòng)程序
        MySQL目前提供的java驅(qū)動(dòng)程序?yàn)镃onnection/J,可以從MySQL官方網(wǎng)站下載,并找到mysql-connector-java-3.0.15-ga-bin.jar文件,此驅(qū)動(dòng)程序?yàn)榧僯ava驅(qū)動(dòng)程序,不需做其他配置。

        2、動(dòng)態(tài)指定classpath
        如果需要執(zhí)行時(shí)動(dòng)態(tài)指定classpath,就在執(zhí)行時(shí)采用-cp方式。否則將上面的.jar文件加入到classpath環(huán)境變量中。

        3、加載驅(qū)動(dòng)程序
    try{
        Class.forName(com.mysql.jdbc.Driver);
        System.out.println(Success loading Mysql Driver!);
    }catch(Exception e)
    {
        System.out.println(Error loading Mysql Driver!);
        e.printStackTrace();
    }

        4、設(shè)置連接的url
        jdbc:mysql://localhost/databasename[?pa=va][&pa=va]

    三、以下列出了在使用JDBC來連接Oracle數(shù)據(jù)庫時(shí)可以使用的一些技巧,這些技巧能夠使我們更好地發(fā)揮系統(tǒng)的性能和實(shí)現(xiàn)更多的功能(系轉(zhuǎn)載)。

      1、在客戶端軟件開發(fā)中使用Thin驅(qū)動(dòng)程序

      在開發(fā)Java軟件方面,Oracle的數(shù)據(jù)庫提供了四種類型的驅(qū)動(dòng)程序,二種用于應(yīng)用軟件、applets、servlets等客戶端軟件,另外二種用于數(shù)據(jù)庫中的Java存儲(chǔ)過程等服務(wù)器端軟件。在客戶機(jī)端軟件的開發(fā)中,我們可以選擇OCI驅(qū)動(dòng)程序或Thin驅(qū)動(dòng)程序。OCI驅(qū)動(dòng)程序利用Java本地化接口(JNI),通過Oracle客戶端軟件與數(shù)據(jù)庫進(jìn)行通訊。Thin驅(qū)動(dòng)程序是純Java驅(qū)動(dòng)程序,它直接與數(shù)據(jù)庫進(jìn)行通訊。為了獲得最高的性能,Oracle建議在客戶端軟件的開發(fā)中使用OCI驅(qū)動(dòng)程序,這似乎是正確的。但我建議使用Thin驅(qū)動(dòng)程序,因?yàn)橥ㄟ^多次測試發(fā)現(xiàn),在通常情況下,Thin驅(qū)動(dòng)程序的性能都超過了OCI驅(qū)動(dòng)程序。

      2、關(guān)閉自動(dòng)提交功能,提高系統(tǒng)性能

      在第一次建立與數(shù)據(jù)庫的連接時(shí),在缺省情況下,連接是在自動(dòng)提交模式下的。為了獲得更好的性能,可以通過調(diào)用帶布爾值false參數(shù)的Connection類的setAutoCommit()方法關(guān)閉自動(dòng)提交功能,如下所示:

      conn.setAutoCommit(false);

      值得注意的是,一旦關(guān)閉了自動(dòng)提交功能,我們就需要通過調(diào)用Connection類的commit()和rollback()方法來人工的方式對(duì)事務(wù)進(jìn)行管理。

      3、在動(dòng)態(tài)SQL或有時(shí)間限制的命令中使用Statement對(duì)象

      在執(zhí)行SQL命令時(shí),我們有二種選擇:可以使用PreparedStatement對(duì)象,也可以使用Statement對(duì)象。無論多少次地使用同一個(gè)SQL命令,PreparedStatement都只對(duì)它解析和編譯一次。當(dāng)使用Statement對(duì)象時(shí),每次執(zhí)行一個(gè)SQL命令時(shí),都會(huì)對(duì)它進(jìn)行解析和編譯。這可能會(huì)使你認(rèn)為,使用PreparedStatement對(duì)象比使用Statement對(duì)象的速度更快。然而,我進(jìn)行的測試表明,在客戶端軟件中,情況并非如此。因此,在有時(shí)間限制的SQL操作中,除非成批地處理SQL命令,我們應(yīng)當(dāng)考慮使用Statement對(duì)象。

      此外,使用Statement對(duì)象也使得編寫動(dòng)態(tài)SQL命令更加簡單,因?yàn)槲覀兛梢詫⒆址B接在一起,建立一個(gè)有效的SQL命令。因此,我認(rèn)為,Statement對(duì)象可以使動(dòng)態(tài)SQL命令的創(chuàng)建和執(zhí)行變得更加簡單。

      4、利用helper函數(shù)對(duì)動(dòng)態(tài)SQL命令進(jìn)行格式化

      在創(chuàng)建使用Statement對(duì)象執(zhí)行的動(dòng)態(tài)SQL命令時(shí),我們需要處理一些格式化方面的問題。例如,如果我們想創(chuàng)建一個(gè)將名字O'Reilly插入表中的SQL命令,則必須使用二個(gè)相連的“''”號(hào)替換O'Reilly中的“'”號(hào)。完成這些工作的最好的方法是創(chuàng)建一個(gè)完成替換操作的helper方法,然后在連接字符串心服用公式表達(dá)一個(gè)SQL命令時(shí),使用創(chuàng)建的helper方法。與此類似的是,我們可以讓helper方法接受一個(gè)Date型的值,然后讓它輸出基于Oracle的to_date()函數(shù)的字符串表達(dá)式。

      5、利用PreparedStatement對(duì)象提高數(shù)據(jù)庫的總體效率

      在使用PreparedStatement對(duì)象執(zhí)行SQL命令時(shí),命令被數(shù)據(jù)庫進(jìn)行解析和編譯,然后被放到命令緩沖區(qū)。然后,每當(dāng)執(zhí)行同一個(gè)PreparedStatement對(duì)象時(shí),它就會(huì)被再解析一次,但不會(huì)被再次編譯。在緩沖區(qū)中可以發(fā)現(xiàn)預(yù)編譯的命令,并且可以重新使用。在有大量用戶的企業(yè)級(jí)應(yīng)用軟件中,經(jīng)常會(huì)重復(fù)執(zhí)行相同的SQL命令,使用PreparedStatement對(duì)象帶來的編譯次數(shù)的減少能夠提高數(shù)據(jù)庫的總體性能。如果不是在客戶端創(chuàng)建、預(yù)備、執(zhí)行PreparedStatement任務(wù)需要的時(shí)間長于Statement任務(wù),我會(huì)建議在除動(dòng)態(tài)SQL命令之外的所有情況下使用PreparedStatement對(duì)象。

      6、在成批處理重復(fù)的插入或更新操作中使用PreparedStatement對(duì)象

      如果成批地處理插入和更新操作,就能夠顯著地減少它們所需要的時(shí)間。Oracle提供的Statement和 CallableStatement并不真正地支持批處理,只有PreparedStatement對(duì)象才真正地支持批處理。我們可以使用addBatch()和executeBatch()方法選擇標(biāo)準(zhǔn)的JDBC批處理,或者通過利用PreparedStatement對(duì)象的setExecuteBatch()方法和標(biāo)準(zhǔn)的executeUpdate()方法選擇速度更快的Oracle專有的方法。要使用Oracle專有的批處理機(jī)制,可以以如下所示的方式調(diào)用setExecuteBatch():
    PreparedStatement pstmt3D null;
    try {
    ((OraclePreparedStatement)
    pstmt).setExecuteBatch(30);
    ...
    pstmt.executeUpdate();
    }


      調(diào)用setExecuteBatch()時(shí)指定的值是一個(gè)上限,當(dāng)達(dá)到該值時(shí),就會(huì)自動(dòng)地引發(fā)SQL命令執(zhí)行,標(biāo)準(zhǔn)的executeUpdate()方法就會(huì)被作為批處理送到數(shù)據(jù)庫中。我們可以通過調(diào)用PreparedStatement類的sendBatch()方法隨時(shí)傳輸批處理任務(wù)。

      7、使用Oracle locator方法插入、更新大對(duì)象(LOB)

      Oracle的PreparedStatement類不完全支持BLOB和CLOB等大對(duì)象的處理,尤其是Thin驅(qū)動(dòng)程序不支持利用PreparedStatement對(duì)象的setObject()和setBinaryStream()方法設(shè)置BLOB的值,也不支持利用setCharacterStream()方法設(shè)置CLOB的值。只有l(wèi)ocator本身中的方法才能夠從數(shù)據(jù)庫中獲取LOB類型的值。可以使用PreparedStatement對(duì)象插入或更新LOB,但需要使用locator才能獲取LOB的值。由于存在這二個(gè)問題,因此,我建議使用locator的方法來插入、更新或獲取LOB的值。

      8、使用SQL92語法調(diào)用存儲(chǔ)過程

      在調(diào)用存儲(chǔ)過程時(shí),我們可以使用SQL92或Oracle PL/SQL,由于使用Oracle PL/SQL并沒有什么實(shí)際的好處,而且會(huì)給以后維護(hù)你的應(yīng)用程序的開發(fā)人員帶來麻煩,因此,我建議在調(diào)用存儲(chǔ)過程時(shí)使用SQL92。

      9、使用Object SQL將對(duì)象模式轉(zhuǎn)移到數(shù)據(jù)庫中

      既然可以將Oracle的數(shù)據(jù)庫作為一種面向?qū)ο蟮臄?shù)據(jù)庫來使用,就可以考慮將應(yīng)用程序中的面向?qū)ο竽J睫D(zhuǎn)到數(shù)據(jù)庫中。目前的方法是創(chuàng)建Java bean作為偽裝的數(shù)據(jù)庫對(duì)象,將它們的屬性映射到關(guān)系表中,然后在這些bean中添加方法。盡管這樣作在Java中沒有什么問題,但由于操作都是在數(shù)據(jù)庫之外進(jìn)行的,因此其他訪問數(shù)據(jù)庫的應(yīng)用軟件無法利用對(duì)象模式。如果利用Oracle的面向?qū)ο蟮募夹g(shù),可以通過創(chuàng)建一個(gè)新的數(shù)據(jù)庫對(duì)象類型在數(shù)據(jù)庫中模仿其數(shù)據(jù)和操作,然后使用JPublisher等工具生成自己的Java bean類。如果使用這種方式,不但Java應(yīng)用程序可以使用應(yīng)用軟件的對(duì)象模式,其他需要共享你的應(yīng)用中的數(shù)據(jù)和操作的應(yīng)用軟件也可以使用應(yīng)用軟件中的對(duì)象模式。

      10、利用SQL完成數(shù)據(jù)庫內(nèi)的操作

      我要向大家介紹的最重要的經(jīng)驗(yàn)是充分利用SQL的面向集合的方法來解決數(shù)據(jù)庫處理需求,而不是使用Java等過程化的編程語言。

      如果編程人員要在一個(gè)表中查找許多行,結(jié)果中的每個(gè)行都會(huì)查找其他表中的數(shù)據(jù),最后,編程人員創(chuàng)建了獨(dú)立的UPDATE命令來成批地更新第一個(gè)表中的數(shù)據(jù)。與此類似的任務(wù)可以通過在set子句中使用多列子查詢而在一個(gè)UPDATE命令中完成。當(dāng)能夠在單一的SQL命令中完成任務(wù),何必要讓數(shù)據(jù)在網(wǎng)上流來流去的?我建議用戶認(rèn)真學(xué)習(xí)如何最大限度地發(fā)揮SQL的功能。


        1、查找驅(qū)動(dòng)程序
        MySQL目前提供的java驅(qū)動(dòng)程序?yàn)镃onnection/J,可以從MySQL官方網(wǎng)站下載,并找到mysql-connector-java-3.0.15-ga-bin.jar文件,此驅(qū)動(dòng)程序?yàn)榧僯ava驅(qū)動(dòng)程序,不需做其他配置。

        2、動(dòng)態(tài)指定classpath
        如果需要執(zhí)行時(shí)動(dòng)態(tài)指定classpath,就在執(zhí)行時(shí)采用-cp方式。否則將上面的.jar文件加入到classpath環(huán)境變量中。

        3、加載驅(qū)動(dòng)程序
    try{
        Class.forName(com.mysql.jdbc.Driver);
        System.out.println(Success loading Mysql Driver!);
    }catch(Exception e)
    {
        System.out.println(Error loading Mysql Driver!);
        e.printStackTrace();
    }

        4、設(shè)置連接的url
        jdbc:mysql://localhost/databasename[?pa=va][&pa=va]

    三、以下列出了在使用JDBC來連接Oracle數(shù)據(jù)庫時(shí)可以使用的一些技巧,這些技巧能夠使我們更好地發(fā)揮系統(tǒng)的性能和實(shí)現(xiàn)更多的功能(系轉(zhuǎn)載)。

      1、在客戶端軟件開發(fā)中使用Thin驅(qū)動(dòng)程序

      在開發(fā)Java軟件方面,Oracle的數(shù)據(jù)庫提供了四種類型的驅(qū)動(dòng)程序,二種用于應(yīng)用軟件、applets、servlets等客戶端軟件,另外二種用于數(shù)據(jù)庫中的Java存儲(chǔ)過程等服務(wù)器端軟件。在客戶機(jī)端軟件的開發(fā)中,我們可以選擇OCI驅(qū)動(dòng)程序或Thin驅(qū)動(dòng)程序。OCI驅(qū)動(dòng)程序利用Java本地化接口(JNI),通過Oracle客戶端軟件與數(shù)據(jù)庫進(jìn)行通訊。Thin驅(qū)動(dòng)程序是純Java驅(qū)動(dòng)程序,它直接與數(shù)據(jù)庫進(jìn)行通訊。為了獲得最高的性能,Oracle建議在客戶端軟件的開發(fā)中使用OCI驅(qū)動(dòng)程序,這似乎是正確的。但我建議使用Thin驅(qū)動(dòng)程序,因?yàn)橥ㄟ^多次測試發(fā)現(xiàn),在通常情況下,Thin驅(qū)動(dòng)程序的性能都超過了OCI驅(qū)動(dòng)程序。

      2、關(guān)閉自動(dòng)提交功能,提高系統(tǒng)性能

      在第一次建立與數(shù)據(jù)庫的連接時(shí),在缺省情況下,連接是在自動(dòng)提交模式下的。為了獲得更好的性能,可以通過調(diào)用帶布爾值false參數(shù)的Connection類的setAutoCommit()方法關(guān)閉自動(dòng)提交功能,如下所示:

      conn.setAutoCommit(false);

      值得注意的是,一旦關(guān)閉了自動(dòng)提交功能,我們就需要通過調(diào)用Connection類的commit()和rollback()方法來人工的方式對(duì)事務(wù)進(jìn)行管理。

      3、在動(dòng)態(tài)SQL或有時(shí)間限制的命令中使用Statement對(duì)象

      在執(zhí)行SQL命令時(shí),我們有二種選擇:可以使用PreparedStatement對(duì)象,也可以使用Statement對(duì)象。無論多少次地使用同一個(gè)SQL命令,PreparedStatement都只對(duì)它解析和編譯一次。當(dāng)使用Statement對(duì)象時(shí),每次執(zhí)行一個(gè)SQL命令時(shí),都會(huì)對(duì)它進(jìn)行解析和編譯。這可能會(huì)使你認(rèn)為,使用PreparedStatement對(duì)象比使用Statement對(duì)象的速度更快。然而,我進(jìn)行的測試表明,在客戶端軟件中,情況并非如此。因此,在有時(shí)間限制的SQL操作中,除非成批地處理SQL命令,我們應(yīng)當(dāng)考慮使用Statement對(duì)象。

      此外,使用Statement對(duì)象也使得編寫動(dòng)態(tài)SQL命令更加簡單,因?yàn)槲覀兛梢詫⒆址B接在一起,建立一個(gè)有效的SQL命令。因此,我認(rèn)為,Statement對(duì)象可以使動(dòng)態(tài)SQL命令的創(chuàng)建和執(zhí)行變得更加簡單。

      4、利用helper函數(shù)對(duì)動(dòng)態(tài)SQL命令進(jìn)行格式化

      在創(chuàng)建使用Statement對(duì)象執(zhí)行的動(dòng)態(tài)SQL命令時(shí),我們需要處理一些格式化方面的問題。例如,如果我們想創(chuàng)建一個(gè)將名字O'Reilly插入表中的SQL命令,則必須使用二個(gè)相連的“''”號(hào)替換O'Reilly中的“'”號(hào)。完成這些工作的最好的方法是創(chuàng)建一個(gè)完成替換操作的helper方法,然后在連接字符串心服用公式表達(dá)一個(gè)SQL命令時(shí),使用創(chuàng)建的helper方法。與此類似的是,我們可以讓helper方法接受一個(gè)Date型的值,然后讓它輸出基于Oracle的to_date()函數(shù)的字符串表達(dá)式。

      5、利用PreparedStatement對(duì)象提高數(shù)據(jù)庫的總體效率

      在使用PreparedStatement對(duì)象執(zhí)行SQL命令時(shí),命令被數(shù)據(jù)庫進(jìn)行解析和編譯,然后被放到命令緩沖區(qū)。然后,每當(dāng)執(zhí)行同一個(gè)PreparedStatement對(duì)象時(shí),它就會(huì)被再解析一次,但不會(huì)被再次編譯。在緩沖區(qū)中可以發(fā)現(xiàn)預(yù)編譯的命令,并且可以重新使用。在有大量用戶的企業(yè)級(jí)應(yīng)用軟件中,經(jīng)常會(huì)重復(fù)執(zhí)行相同的SQL命令,使用PreparedStatement對(duì)象帶來的編譯次數(shù)的減少能夠提高數(shù)據(jù)庫的總體性能。如果不是在客戶端創(chuàng)建、預(yù)備、執(zhí)行PreparedStatement任務(wù)需要的時(shí)間長于Statement任務(wù),我會(huì)建議在除動(dòng)態(tài)SQL命令之外的所有情況下使用PreparedStatement對(duì)象。

      6、在成批處理重復(fù)的插入或更新操作中使用PreparedStatement對(duì)象

      如果成批地處理插入和更新操作,就能夠顯著地減少它們所需要的時(shí)間。Oracle提供的Statement和 CallableStatement并不真正地支持批處理,只有PreparedStatement對(duì)象才真正地支持批處理。我們可以使用addBatch()和executeBatch()方法選擇標(biāo)準(zhǔn)的JDBC批處理,或者通過利用PreparedStatement對(duì)象的setExecuteBatch()方法和標(biāo)準(zhǔn)的executeUpdate()方法選擇速度更快的Oracle專有的方法。要使用Oracle專有的批處理機(jī)制,可以以如下所示的方式調(diào)用setExecuteBatch():
    PreparedStatement pstmt3D null;
    try {
    ((OraclePreparedStatement)
    pstmt).setExecuteBatch(30);
    ...
    pstmt.executeUpdate();
    }


      調(diào)用setExecuteBatch()時(shí)指定的值是一個(gè)上限,當(dāng)達(dá)到該值時(shí),就會(huì)自動(dòng)地引發(fā)SQL命令執(zhí)行,標(biāo)準(zhǔn)的executeUpdate()方法就會(huì)被作為批處理送到數(shù)據(jù)庫中。我們可以通過調(diào)用PreparedStatement類的sendBatch()方法隨時(shí)傳輸批處理任務(wù)。

      7、使用Oracle locator方法插入、更新大對(duì)象(LOB)

      Oracle的PreparedStatement類不完全支持BLOB和CLOB等大對(duì)象的處理,尤其是Thin驅(qū)動(dòng)程序不支持利用PreparedStatement對(duì)象的setObject()和setBinaryStream()方法設(shè)置BLOB的值,也不支持利用setCharacterStream()方法設(shè)置CLOB的值。只有l(wèi)ocator本身中的方法才能夠從數(shù)據(jù)庫中獲取LOB類型的值。可以使用PreparedStatement對(duì)象插入或更新LOB,但需要使用locator才能獲取LOB的值。由于存在這二個(gè)問題,因此,我建議使用locator的方法來插入、更新或獲取LOB的值。

      8、使用SQL92語法調(diào)用存儲(chǔ)過程

      在調(diào)用存儲(chǔ)過程時(shí),我們可以使用SQL92或Oracle PL/SQL,由于使用Oracle PL/SQL并沒有什么實(shí)際的好處,而且會(huì)給以后維護(hù)你的應(yīng)用程序的開發(fā)人員帶來麻煩,因此,我建議在調(diào)用存儲(chǔ)過程時(shí)使用SQL92。

      9、使用Object SQL將對(duì)象模式轉(zhuǎn)移到數(shù)據(jù)庫中

      既然可以將Oracle的數(shù)據(jù)庫作為一種面向?qū)ο蟮臄?shù)據(jù)庫來使用,就可以考慮將應(yīng)用程序中的面向?qū)ο竽J睫D(zhuǎn)到數(shù)據(jù)庫中。目前的方法是創(chuàng)建Java bean作為偽裝的數(shù)據(jù)庫對(duì)象,將它們的屬性映射到關(guān)系表中,然后在這些bean中添加方法。盡管這樣作在Java中沒有什么問題,但由于操作都是在數(shù)據(jù)庫之外進(jìn)行的,因此其他訪問數(shù)據(jù)庫的應(yīng)用軟件無法利用對(duì)象模式。如果利用Oracle的面向?qū)ο蟮募夹g(shù),可以通過創(chuàng)建一個(gè)新的數(shù)據(jù)庫對(duì)象類型在數(shù)據(jù)庫中模仿其數(shù)據(jù)和操作,然后使用JPublisher等工具生成自己的Java bean類。如果使用這種方式,不但Java應(yīng)用程序可以使用應(yīng)用軟件的對(duì)象模式,其他需要共享你的應(yīng)用中的數(shù)據(jù)和操作的應(yīng)用軟件也可以使用應(yīng)用軟件中的對(duì)象模式。

      10、利用SQL完成數(shù)據(jù)庫內(nèi)的操作

      我要向大家介紹的最重要的經(jīng)驗(yàn)是充分利用SQL的面向集合的方法來解決數(shù)據(jù)庫處理需求,而不是使用Java等過程化的編程語言。

      如果編程人員要在一個(gè)表中查找許多行,結(jié)果中的每個(gè)行都會(huì)查找其他表中的數(shù)據(jù),最后,編程人員創(chuàng)建了獨(dú)立的UPDATE命令來成批地更新第一個(gè)表中的數(shù)據(jù)。與此類似的任務(wù)可以通過在set子句中使用多列子查詢而在一個(gè)UPDATE命令中完成。當(dāng)能夠在單一的SQL命令中完成任務(wù),何必要讓數(shù)據(jù)在網(wǎng)上流來流去的?我建議用戶認(rèn)真學(xué)習(xí)如何最大限度地發(fā)揮SQL的功能。

     

     

    Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=495470

    posted @ 2007-04-24 09:36 A++ 閱讀(249) | 評(píng)論 (0)編輯 收藏

    數(shù)據(jù)庫設(shè)計(jì)范式的通俗理解(轉(zhuǎn))

    第一范式

    對(duì)于表中的每一行,必須且僅僅有唯一的行值.在一行中的每一列僅有唯一的值并且具有原子性.

    第二范式

    第二范式要求非主鍵列是主鍵的子集,非主鍵列活動(dòng)必須完全依賴整個(gè)主鍵。主鍵必須有唯一性的元素,一個(gè)主鍵可以由一個(gè)或更多的組成唯一值的列組成。一旦創(chuàng)建,主鍵無法改變,外鍵關(guān)聯(lián)一個(gè)表的主鍵。主外鍵關(guān)聯(lián)意味著一對(duì)多的關(guān)系.

    第三范式

    第三范式要求非主鍵列互不依賴.

    第四范式

    第四范式禁止主鍵列和非主鍵列一對(duì)多關(guān)系不受約束

    第五范式

    第五范式將表分割成盡可能小的塊,為了排除在表中所有的冗余

    posted @ 2007-04-18 10:36 A++ 閱讀(317) | 評(píng)論 (0)編輯 收藏

    <2007年4月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    293012345

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    http://www.matrix.org.cn/resource/article/2005-10-16/Generic_Types_43864.html

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 高清永久免费观看| 亚洲人成图片小说网站| 无码精品国产一区二区三区免费 | 亚洲AV日韩综合一区尤物| 国产亚洲综合色就色| 亚洲国产成人VA在线观看| 日韩av无码成人无码免费| 人妻无码久久一区二区三区免费| 亚洲一区二区三区免费| 亚洲aⅴ无码专区在线观看| 亚洲一欧洲中文字幕在线| 亚洲国产精品久久| 久久久久久a亚洲欧洲aⅴ| 亚洲一区视频在线播放| 免费在线观看理论片| 日韩毛片免费在线观看| 24小时日本在线www免费的| 91麻豆最新在线人成免费观看| 99在线热视频只有精品免费| 国产成人AV免费观看| 中文字幕高清免费不卡视频| 一级人做人a爰免费视频| 深夜福利在线视频免费| 黄页视频在线观看免费| 又硬又粗又长又爽免费看| 免费人成又黄又爽的视频在线电影| 蜜桃传媒一区二区亚洲AV| 亚洲精品无码专区| 亚洲JIZZJIZZ妇女| 精品久久久久久亚洲综合网| 亚洲AV无码一区二区大桥未久| 亚洲AV无码一区二区三区电影| 丰满亚洲大尺度无码无码专线 | 国产成人无码免费看视频软件| 精品福利一区二区三区免费视频| 91成人免费观看| 日韩免费精品视频| 免费无码一区二区三区蜜桃大 | 美女黄频免费网站| 一级黄色免费网站| 久久久久久久久久免免费精品|