當前位置:首頁 » 編程語言 » 一次無奈的用sql聊天
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

一次無奈的用sql聊天

發布時間: 2022-05-10 07:30:42

⑴ 開網吧的條件

中國網盟第五版-2007網吧7月30日更改版-超越卓越!

中國網吧行業起步原動力最具體的分析最全面性的回答:

網吧證件:

2007年3月7日,中國文化部、工商總局、公安部、信息產業部等14部門聯合印發《關於進一步加強網吧及網路游戲管理工作的通知》。根據通知要求,2007年全國網吧總量不再增加,各地均不得審批新的網吧。雖如此,但社會的發展、經濟的利益和人民的呼聲效率下能否決定最後的選擇而再次開放,我們將拭目以待。

建議:購置別人不做的網吧證件。
加盟全國以網吧為特色的連鎖店。
錢與權可以解決一切問題包括證件。
到外地投資將可以以外商的身份開辦。

評點:
(按現在的市場來進行分析,在今年首選和推舉用第一種購置別人不做的網吧證件,雖然可能在價格上面有些許的高出許多或有很多不合人情理的地方,主要是價格方面的出入,但對於未來的益利和想從事網吧行業的朋友們來說這是今年一個非常明智的選擇。)

解說:
(加盟全國以網吧為特色的連鎖店。很多朋友和我聊天的時候總會提到這個問題,不管是從業於網吧行業或是新的入手很多人對於這方面的情況都不十分了解,現在我在這里為大家解說一下這方面局體的情況。首先,按中國現行的網吧行業來說加盟是屬於一種跟國營或私營企業合作的一種策略營銷方式,簡單來說,在中國分為二種連鎖網盟,第一由國家支持或當政府協助開辦的如:如上海的東方網點。第二由個人或集團企業加上當地政府的協助如:四川的殷商時代。)

總結:
(網盟的形式基本就屬於上述的兩種情況,而網盟對於大家的好處將會在下面的篇幅中提起,之所以有網盟的形式,首先體現的第一點是壟斷的營銷益利形式,第二點體現當地人文情懷,第三點整頓網吧行業形成一種規范合理的格局以企業形式方面發展。當然不管個人或是企業最終的目地都是益利。加盟網盟最大的好處而更重要一點便是要你開網吧的時候像個人一樣有尊嚴和人交流,不需要像條狗一樣被人呼來喚去。這也是網盟最為無奈的一點。很多朋友在選擇開網吧的時候,總是前提想到加盟網盟便可以不用購買證件,直接掛牌,首先這是違法的,簡單來說,法律可分違法和犯法和兩種情況,那麼我們要如何先區分這兩種情況下的利害關系呢?打個比方:開車闖紅燈屬於違法抓住一般情況下以罰款形式結束,但開車闖紅燈並撞傷人那就叫做犯法。如果朋友們在選擇開網吧的時候要選擇後者,那麼是不建議的,而且大多數開網吧的朋友資產不會很多,更重要的是為了有一份安定的工作,自已的事業,合理的規劃自已的人生或是生活,也可以通過這個行業賺取一部份資產用於以後各方面的發展。我相信能夠找到我的朋友很多人都抱有這種想法。因為大家都是想希望生活過得更好,我也同樣。親愛的朋友,當你看完這一篇隨著歲月不斷更改總結了無數傑出同行們的經驗並用我的認真寫下來的文章時,希望能夠給你的人生帶來幫助,如果看完後還有什麼不明白不了解的可以隨時與我保持聯系。下面有聯系方式,快樂同在!)

地理位置:

孫子兵法有雲:天時、地利、人和。換句話說好的地段將是決定其生存和發展的重要關鍵所在。而每一個地方的地理位置和人氣度都不一樣,首先第一點我們要做的是需要保持冷靜,然後再認真的分析周邊的市場、人流、學校、工業區、鬧市區等。加之再擬定多種方案的比較,同時要考慮可行性。例如:投資者看好了一處有利位置,而現在佔有這個位置的店主卻不肯出讓,或者房租超出了自己的承受能力。這樣,即使是好位置,也不可草率行事。這個世界沒有人能肯定的告訴你,這是一塊旺角。首先它不地產石油,那麼最後的取捨在於你本身的思想,眼光與及學識。

電腦配置:

網吧的第二關鍵生存工具便是機器的配置!相信現在的今天,明天或是更遠的將來。硬體戰將在網吧領域中占據著舉足輕重的地位!

建議:內存:1G*2
主板:945板為佳
硬碟:SATA 160G
顯示器:19寸液晶
顯卡:256顯存 7600
處理器:P4 64位 3.0/雙核奔騰/雙核AMD

每個時期的主流配置都不一樣建議請教這方面經驗到位的專家,不過特別提議主板和CPU請務因便宜而選購,諸知天下沒有免費的午餐就算是品牌貨也要小心,現在市面的水貨和拆口貨相當嚴重。建議到大城市的科技廣場等地方選購,那裡有專門的防假和工商部為你在產品上提供真實的進貨來源,如資金許可,也可以直接向生產廠家進購。當然主要也是要你自已對電腦有所了解,而且我們在選購硬體時,也需做到貨比三家,做到知已知彼而百戰不殆,請記住這是自已的血汗錢,每一分都來之不易!

網吧開銷:

光纖費、電話費、工商、地稅、水費、電費、衛生費、清潔員/收銀員/網管/技術員工資(按本身當地的實際情況進行分析),如不是自家門面還需交納屋售費用。

網吧監控:

中國許多省份和地區都已強制性實行公安信息廳與網吧伺服器/客戶機的遠程數據監控,這個監控軟體可附帶收費刷卡客戶管理功能等,大部份主要的特點是監控顧客上網瀏覽的IE歷史記錄、顧客的身份證明、網吧的上座人數等。而為了更好的鞏固網吧的安全,許多省份地區也都要求網吧在室內強制性安裝視頻監控,對於網吧內的視頻監控大家都是眾說紛紜,但總體來說,這一項措施還是相當不錯的,不管對於本身的經營服務,還是對於公安的刑偵辦案都是可取的!

網吧布局:

網吧的布局和桌椅的選購從整體的視覺效果上直接影響到網吧的生意與人文儀態,大家都不想網吧坐下來桌子比地面還要臟,而椅子又粗又硬又冷又缺這又少那的,大家可以想像一下自已當時是一種什麼樣的心情,建議選購較些許深色但不失美感而又不易查覺到臟的桌子,而桌子要求有讀卡器孔、開機鍵、重起鍵孔,櫃箱四周遍布散熱孔,不存在通風不暢問題,台腳有走線結構,如需要檯面下可加走線槽,主機箱和檯面有走線孔,可實現內部布線,整齊、簡潔,沒有拖拖拉拉的不適感。椅子建議用黑色的而質量方面建議買大眾實用堅固耐用的。其它的如風扇、電管、和空調等。 天氣不是很熱可用風扇這樣也為各位業主節剩不必要的電費。其它的如網吧的穩壓器購置,只針對大型的網吧而言。網吧UPS儲電器購置,這針對網吧停電時能及時到位的為客戶提供結賬服務,同時也為自已的管理不至混亂而提供保障。而室內的布局則根據建築和檔次的不同而不同,定位高檔的網吧當需請專業的設計人員全方面的規劃一下形成自有得風格。而中低檔的普通網吧也可依據自身情況加之裝修一下,最重要的是給人一種干凈,空氣流通沒有壓抑的感覺。多在室內放些植物或字畫,不但體現業主的品位增加情調還可以給玩久電腦的顧客一種眼睛放鬆的感覺,更顯示出網吧的貼心。而外觀門面也要新穎別致,別只是掛幾個大字,生怕人不認識字似的,最好加些圖畫做得有創意些,來些電腦迷們做夢都認識的標志(比如微軟的標志)也能起到一定的吸引效果。希望廣大業主把這項工作做好做到位,讓大家來到網吧上網都有一種親切,干凈,歸家的感覺,這不但為了別人,更為了自已!

網吧的內部管理:

從中國本身的大部份網吧而言,中小型的網吧對管理方面的需求不是那麼的迫切,只要運用好相關的收費管理工具,業主們及時性的進行財務上面的查賬和清理,就能維持本身的生存和發展了,在中小型網吧的管理層上運用最多的便是靠自我拍腦袋決策的方式,但事實上,面對日趨激烈的行業競爭,小型網吧在壓縮成本、精簡流程的問題上更應把以往的這種策略轉向共同交流的理性化上決策上來,通過與員工真心誠意的交流加強內部的管理制度,並與周邊的網吧合縱連橫,提高網吧的競爭力,才能適應新的發展形勢。而越來越多的跡象表明,網吧在招聘人員上,中小型網吧很少用正規的招聘程序,大部分員工都是通過親戚朋友推薦,或者親戚朋友直接擔任網吧管理人員。在這種情況下,網吧業主在進行管理時就會礙於情面,縮手縮腳,難以實施嚴格的管理制度,從而至造成內部管理和其它各方面不公平的現象。更重要的是導致員工心理失衡、心理上的負擔和對工作度的低下。中國現在的很多網吧在起步階段都是由本身的家庭給予支持,那麼在進行內部管理層上面更多偏向的是家族式的管理。而這一作法用運用在大中型網吧中是最不明智,最不可取,更是有害而無利的,除非管理者本身是專業人員,與員工達成良好的共識,一同為網吧產業共進退,心胸廣闊,不計得失,認真工作,為人處事正直絕不利用職權而損人利己,得到業主的認可和員工的擁戴。試問:有多少以家族式管理的網吧「核心」能做到這樣的?保守便是落後,得民心者放可得天下,任可一個企業的發展都是一樣,而企業化運作也必將成為網吧行業未來提升運營水平的必由之路。

網吧的技術支持:

網吧不但需要獨具一格的創意和其它方面產業的相互搭配更需要帶有技術色彩的經營模式。投資網吧者不一定要精通網路技術,但必須要有基本技術常識,懂得選擇那種技術模式適合自己的網吧經營特點。技術的優秀同樣關繫到網吧的總體經營收入,網吧運營過程能否一路暢通,這和開車的道理是一樣的。做為網吧投資者身邊一定需要一位技術不錯又十分可靠的人全職幫你,當然,如果你本身就是專家,那就再好不過了。這也是一個至關重要的問題。網吧的初期安裝可以找專業的電腦公司來做的,但必須有人能應付網路故障等突發事件,至少能給出應急的方案,所以不管投資網吧的大小都必須配備專職或兼職的網路技術員,勿因與電腦公司有協議而忽略了自身的安全和經營問題,更重要的一點,電腦公司對於網吧來說是業余的!

網吧的技術詳解:

既然網吧帶有技術色彩的經營模式,那麼技術員的總體技術能力也將決定一個網吧內部的整體素質和面貌,不管是否用於網吧或是其它行業,我想如何第一步接觸網路技術都是許許多多想進入這個行業的朋友們所希望了解的,在這里,我會較為全面性的告訴大家大至的過程和學習的方式,這也是結合自身和許多在這一領域上取得成績的同行們一點小小經驗,但在開始之前,我想對大家說幾句話,IT ,有進步,無止步.雖然每一個行業都在發展但像IT業這樣發展迅速的行業是令人望塵莫及的,今天的知識明天就會過時,今天一流的技術明天就會被淘汰,也許相隔的時間並不是24小時,可能是12小時,又或者不到一分鍾的距離.所有從事IT業並且資深的朋友都會告訴你,累,很累,累斗累,當那一天身軀倒下時,靈魂還繼續在工作.朋友,當你准備選擇這一個行業,並希望堅信用網路讓世界變得更為精彩時,健康會離你越來越遠,生命的足跡也將漸行漸淺,陽光已不再屬於你,小鳥的歌聲對於你來說也不再清聆,取而代之的是日復一日的追求,突破,進取,尋找,理解,創造,這些詞語將伴隨你走過你的IT業生涯,如果你沒有足夠好的自我控制能力,如果你沒有足夠好的信心與毅力,如果你沒有良好的生活習慣,如果你不善於與人交際,如果你不用心和認真對待,那麼請你不要選擇,它會讓你的精神崩潰.我不希望你多年後還一無所獲或一塌糊塗,你要選擇你所需要的,可以改善你生活的,可以帶給你自信的,可以用它來幫助別人的,可以像對待好朋友一樣去對待它的,可以讓自已成為一位傑出的人,那麼你就必須想方設法去擁有它,因為我們的都是最棒的!

一期:學會打字,熟知,應用,安裝,調試所有流行的操作系統,了解一台電腦內所有的硬體結合並學會組裝,了解每一個硬體在電腦內所發揮的作用,性能,特點,規律,經常嘗試修理硬體出錯的機器,學會應用列印機,掃描機,傳真機,投影儀,噴繪,數碼相記.了解,應用,更改電腦程序(注冊表,本地安全策略,DNS,超級終端,遠程桌面,控制面版,IIS,組件服務,服務,控制台,運行,自動登陸,系統內核EXE,DLL,CPL,網上鄰居,共享許可權,設置許可權,本地用戶和組,設置管理器,磁碟碎片整理程序,硬碟分區, 任務管理器,桌面屬性設置,電腦屬性設置),了解電腦的所有進程作用,了解硬體對應的驅動,了解電腦BIOSS設置,學會批處理應用,學會GHOST,了解常用的後綴名,了解電腦屬性,了解配置,了解右鍵應用,學會用第三方程序優化和管理電腦,了解常用的埠,認識ARP,
認識區域網,區域網,廣域網,學會調試,安裝,認識硬路由,交換機,排網線,學會夾網線,包括568類型,超五類型,學會游戲,聊天工具,播放器,應用軟體的安裝,調試,應用.學會安裝單機,網路防毒軟體,學會下載安裝補丁,關閉不必要的服務,了解應用硬體還原保護卡,軟體保護還原軟體,包括單機,網路.

二期:學會修理電腦硬體,學會電工,電焊,認識電路,認識主板線路,認識主板晶元.學會:FTP,NERO,FPXAIL,虛擬機,虛擬光碟機,PHOTOSHOP,WPS,FLASH,ACDSEE,3DMAX,PHOTOIMPACT,OFFICE,WORD,OUTLOOK,EXCEL,ACCESS,POWERPOINT,DREAMWEAVER.學會構建流媒體,構建論壇,構建私服,構建區域網,構建軟路由,構建虛擬盤,構建游戲伺服器,實現游戲對比,更新,區域網病毒防禦工作,美化系統,美化界面,美化啟動,美化登陸,美化游戲和聊天工具,實現所有聊天工具,應用軟體,股票工具,網游,單機,競技綠色安裝.學會封裝,製作屬於自已的系統,學會腳本應用,學會用第三方工具網刻系統,學會探殼,脫殼,加殼軟體.學會電腦超過255台的分段問題,英語四級.

三期:學會和應用C/C++,JAVA,MSsql,VISUAL,HTML/XHTML,CSS,STUDIO2005,LINUX,UNIX,PHP等開發語言和工具,學會SQL,ORACLE,SERVER等資料庫開發和維護技術,了解NET程序,了解W3C標准等.了解未來更新的技術,因為這一切都可以給你帶來財富,權力,慾望還有女人.

網吧的經營收入:

網吧如果在經營上取得了規范化的管理,那麼收入將與地理/系統/硬體/服務/環境等緊密相結合,現在我以100台機子為例來為大家做個總結:
1.網吧經營費率:早上8-23時為1.5元/小時 晚上24時至早上7時為1元/小時 通宵6元8小時
2.網吧管理費用:技術員一名2000元/月附吃宿 管理員三名500元/月不包吃宿
3.網吧屋售費用:根據地段不同.平方不同.位置不同.我以近街口300平方門面為例.2500元/月
4.網吧光纖費用:將遵守《全國人大常委會關於維護互聯網安全的決定》及中華人民共和國其他各項有關法律法規接入光纖光纖費用以當地的政策而定。每個省區縣城鎮鄉都不一樣請咨詢當地的電信/鐵通/網通三項任選一樣。
5.網吧硬體費用:每月的硬體損耗在一般情況下不會超過300元.除顯卡/CPU風扇/電源/滑鼠/鍵盤/耳機等 易損易壞零件外其它的硬體配置在一般情況下如非運行在五年內是很難存在壞的可能性。但是其總體在運作過程中也會逐漸的損耗,所以現在我們將根據這種情況以100台電腦每月3000元的損耗費用來規劃我們實際性的純收入。
6.網吧稅務費用:工商250元/月 地稅300元/月 營業稅600元/月 衛生費10元/月
7.網吧用電費用:100台電腦商業用電5000元/月如果是農村商業電1.38元/度,就要增加1500元
8.網吧關系費用:15000萬/年
9.按企劃商業運作法計算:早8時=(天1×16時×1.5元×100台)+(晚1×8時×1元×100)-時間段落時/分/秒(盈虧平衡分析法)不排除客戶下機後的時間層/離機時間層/空機時間層/維護時間層/我們將按算術平均值法做出以下結論:在離機和空隙的過程以100台機子40台不運作數量進行對比化將形成5:2那麼就形成算術結果:
我們先求平均數〔(1×16×1.5×100×+1×8×1×100)〕÷5×2=1280
然後我們再求平均收入值〔(1×16×1.5×100×+1×8×1×100)〕-1280=1920
這樣我們得出結果星期一至星期五的收入值為1920元而雙休日的收入值將以1280÷2+1920=2560
以簡單化形式算31天/月雙休日均8日×2560元/天=20480而工作日均為23天/月23日×1920=44160
再以總合的形式得出一個月的總產值/收入值:20480+44160=64640
最後我們還需把通宵的8時6元製做定向分析因為不可能每天晚上都是8元/台的收入所以我們將需統一劃分出比率值出來:
64640-(8時-2時)×1元×100台×(平均15天/月)÷(2空隙率)=平均每月網吧收入 60140
10.按盈虧平衡分析法計算:
網吧月底總收入60140-(工商250元+地稅300+營業稅600+衛生費10+自拿3000損耗費+商業用電5000+技術員工資2000+管理員工資1500+屋售2500+平均關系費15000÷12+平均光纖費750+硬體損耗費300)=42680
11.按史豐收快速計演算法計算:
一年12月×42680=512160
在本次計演算法上基本算出網吧實際性的收入情況,因為每一個省份地區都不可,上面只按廣西省北海市合浦縣當地經濟為輔助,不過你可以把價位提高或是各方面再深入管理,比如說價位上提高/構建包廂/貴賓房/咖啡廳/構建靈感空間廂/晚上通宵8元8時制/游戲區域制等等大家可以

根據自已的實際情況實行。
12.網吧收入的正常化:用方正的處世哲學態度面對人生,以圓滑的交際手婉與人打交道。對下屬需恩威並施,對上級精神要領會,但決不可失之尊嚴,自由可貴,寧無傲氣,絕不可無傲骨。

網吧的工作人員守則:

因篇網路篇幅有限無法全部回答在此只列舉二例!

網吧員工守則:

技術員崗位職責:

網吧技術員除上述工作完成外,還需要經常注意了解各種網路新動態,多向業主提出自已認為可行的寶貴意見,多舉辦各種有意義性的游戲或會員積分優惠活動,業主可每兩星期舉辦一次員工討論會讓大家一起檢討並分析工作中的種種情況和建議。而員工們的建議有時候可以給網吧帶來不可估計的效益。

網吧業主崗位職責:

網吧在規模和經濟許可的情況下,可以對全體員工們進行不定期的資歷培訓,加深他們的總體學識與社會適應能力,培養企業性的文化,學無止境不管在那裡知識的力量很重要。而網吧本身不能只一味的想著如何去賺錢,而忽略了那些日夜奮戰在第一線為你的經營能夠得到提升而披星戴月忘我的技術員,與及全體為網吧辛勤努力的工作人員,如果沒有他們的認真和用心,網吧就不能夠正常的營業,所以我們要感謝他們,尊重別人就相當於尊重自已,今天他們雖然在我們這里學不到多少,但請你誠懇的告訴他們:工作,其實是一份很美好的人生體驗。人與人之間相處最重要的是以誠相待,只有大家共同維護,互相幫助、體諒才能把工作做好,不管是業主還是職員需要的都是健康與誠信,不管什麼事情開始總有艱難與困阻,請給自已一個機會,也給別人一個機會。每天都是一個奇跡,只要肯努力,夢想就能成功。

網吧的預計投資成本:

1.網吧機子的購置如果每台5000元就要看你需購置多少台計算。
2.網吧的桌椅就要以你的機子數量而定來進行計算。
3.網吧的交換器按機子的數量而定來進行計算。
4.網吧的網線/水晶頭等在你總體裝修的時候需要排置的所以會和裝修費一起計算在內。
5.網吧的風扇/排插/空調/燈具/招牌/窗簾/掛鍾/主機收銀台等以網吧的形式而購置。
6.網吧的光纖/地稅/工商稅/屋售等。
7.網吧證件的購買/網吧證件的辦理/二項中選擇一樣。
8.網吧服務員/技術員/工資等。
9.公安局/消防局/文化局/稅務局的關系費等。
10.網吧其它的一些零件的購置這個電腦公司或是你的技術人員會和你說明的,再餘下的就准備等著開業吧。

證件辦理的次序和關鍵過程:

1.網吧證.先去文化局辦理(網吧特許經營證),辦理中要經過填表/簽合同/檢查/交納一些相關的管理費/辦理網吧法人代表/身份證附印件/網吧技術安全員證書/身份證附印件/網吧工作人員名單最少四個。如果無法辦理就要通過網路或別的縣或不做的網吧的購置,如轉讓的網吧那麼網吧法人代表的業主名字與營業執照的名字將需辦理成為自已的名字。需購置上網消費者管理需知,網吧管理需知,網吧管理畫圖,互聯網條例和未成年人進入牌子。
2.消防證.要到消防局辦理(消防意見同意書),辦理前先送禮,辦理時消防局工作人員會對你所要開的網吧進行通風道/通道口/前後門安全出入口等評測,如通過便簽發消防意見書。另外還需購置消防器,自動照明應急燈。
3.安全證.要到公安局辦理(網吧安全許可證),辦理中問一下手機號碼,辦理時公安局計算機安全科的工作人員會在你辦理過程中對你的網吧進行檢查,如果檢查合格並通過,區公安分局會向市局申報,等批示下來後。就會發放給你(網吧安全許可證)。
4.稅務證.工商/地稅局辦理(網吧稅務登記證),記得帶幾包煙。
5.收費證.要到物價局辦理(網吧收費許可證),別忘記帶煙。
6.電信局.開通光纖辦理手續,並負責分配IP組裝區域網,工作完後記得要一起吃頓飯。
7.國家規定網吧開業的機子數量不能少於30台,城市鄉鎮要求均不同。
8.國家規定而營業用房實際可用面積需在60平方米以上的,方圓200米范圍內沒有學校。
9.網吧開通一年後需辦理網吧年檢,年檢的方式每個地方的政策都不相同但相關的法律法規都離不開一個字,大家明白的。
10.我們在做生意,別人也在做生意,所以送禮,請客,去KTV等是上策!

網吧聯盟加盟好處:

1.第一時間內得到網盟加盟提供的各種宣傳品、精美海報等。
2.免費推出主題網吧各種系列活動.如CS比賽/泡泡堂比賽等.網盟互聯比賽等.促進網吧提高人氣和上座率。
3.享受網吧聯盟的娛樂超值點卡優惠折扣。
4.網吧網盟實踐追蹤報道網吧活動,凸顯網吧風采。
5.網吧相互維護通過各方面的管理來促進經濟的提升。
6.網盟服務論壇網將熱點推薦、聚焦玩家視線。
7.網盟網站將為網吧提供風雲排行榜,記錄游戲家或網吧的豐功偉績。
8.網吧如遇非技術性問題可通過網盟來進行協助並解決。
9.網盟將會舉辦各種節日的評估積分抽獎、獎品抽獎等,來豐富和提高吧。
10.網吧聯盟每個地方的形式和活動都不一樣,但不管如何網盟的形式還是不錯的。

網吧最大的魅力:

網吧最大的魅力就是其溫馨度,如果你的待人服務、車輛管理、網吧清潔、設備可以、燈光亮麗、環境不錯、氣氛合諧、安全保障、員工團結。那麼你將會是一位成功者。不管以後你選擇從事任何的職業都會有光輝的星光照耀在你的身旁。

網吧業主從業提醒:

每個做生意的人都非常清楚,開門做生意就不希望看到有人來搞事,而網吧也是屬於一種娛樂性的場所,既然開門做生意就想著希望相安無事如何的營業賺錢。 那麼這要怎麼做呢,其實也很簡單,雖然來網吧上網的人什麼樣的人都有。但只要大家懂得隨機應變,什麼樣的人就給什麼樣的菜,而這個過程的總結還有很多的客觀因素在裡面,需要怎麼做這個我想大家也都能夠理解的,無非就是退一步海闊天空嘛, 大至的原因就是上網費用的問題這個大家就將就著看著辦。千萬不要因為幾元錢的網費而因小失大。而網吧的打架斗毆的事情也會時有發生,這個要怎麼處理好,我相信大家都會有根據自身的情況構思一套適合自已的方案!

中國網吧產業的行情:

自2005年未,全國平均每天網吧人流量超過4000萬人次, 目前網吧所擁有的各類計算機設備共計828.4萬台。網吧行業就業人員容納了近200萬名,年產值達到256.8億元。按照國家統計局1:7計算對周邊行業貢獻的方法,網吧行業每年為相關產業帶來的間接經濟收入達1282億元。而且網吧還帶動了電信、電腦設備、軟體系統、餐飲、游戲、電子競技等一系列產業的發展。中國最大的網路游戲廠商盛大網路在美國納斯達克的上市,這個功勞有一半以上也要歸功於網吧所帶來的網遊玩家。

中國網吧產業的沉重:

中國從最初的五星賓館網路咖啡屋到北大邊上的飛宇網吧一條街,從藍極速的一把火到十大網吧的連鎖事業,網吧從來不缺少媒體和公眾的關注。但是,從來沒有哪個聲音真正為網吧正名,我們能看到的,不過是一次又一次的爭論。 中國網吧行業的未來不管是在爭論中消亡或在歧視中前行,我們本身都應具備堅韌不拔的信念與意志力,志當存高遠,每一個新興行業的發展都需經受一番大起大落,人生亦如此,和巴黎的埃菲爾鐵塔、紐約的自由女神像一樣,網吧在中國被接受也需要經過一個過程。 但請相信我們將是光榮自豪的先驅者與卓越執手!

中國網吧產業的飛翔:

灑上廉潔的陽光才能茁壯成長!

永不停止,相信自已!

客服咨詢QQ:14214755 註明:加入時請說明來意!

客服咨詢QQ群:
(請入群的朋友們自動更改前面加上地區,否則將於48小時T出群組,人員繁多,加之工作忙碌不能一一回復的朋友請隨時與我QQ保持聯系。)

中國網路東方網盟:( 15324726)(上海/福建/台灣/浙江/湖北/安微/江蘇/江西/山東)
中國網路西方網盟:( 6133837 )(西藏/青海/新疆/甘肅/寧夏/陝西/內蒙古/四川/重慶)
中國網路南方網盟:( 8441680 )(廣西/海南/貴州/雲南/廣東/澳門/香港/湖南)
中國網路北方網盟:( 8439525 )(北京/山西/河北/天津/遼寧/吉林/黑龍江)

⑵ SQL2005, 在連接資料庫引擎時,用windows身份驗證時可以正常連接上,但是用Sql身份驗證就連接不上。

SQL Server 2005 之 Windows身份認證 無法登陸「網路追蹤」 收藏
今天有個網友安裝完SQL Server2005後,登陸是遇到了一個我問題:

Windows身份認證方式無法登陸,SQl Server 身份認證方方式可以登陸

我用sql server 的時間並不長,對於這個我問題我也沒遇到過。起初跟他說很多我知道的方法去嘗試,比如 ,安裝後要是把機器名修改了,就會導致登陸界面上的「伺服器名」失效,從而無法登陸;還有什麼混合登陸模式,是否開啟 sql server agent,然後仔細看了一下他發過來的截圖

發現 「伺服器名稱 」只有一個機器名,我記得我安裝的時候應該是: 機器名\SQLServer2005(後面這個好像安裝的時候可以自己設置的) ,然後我就以為他缺少後面那個東西,然後他說安裝完成後就是那樣,什麼都沒改。死馬當活馬醫吧,我讓他在後面添上了

\SQL Server2005、\SQL Server、\MSSQLSERVER ,結果還是不行。接著,就讓他去查看「安全性」,發現以windows身份驗證創建登陸名的時候會報錯 ,而sql serser身份驗證創建登陸名不會報錯。

遇到沒見過的錯誤當然是上網去搜索一下再說啊,查來查去,根據網上說的,我懷疑是和 本地系統帳戶,域用戶帳戶有關,網上的資料如下:(有點多,呵呵)

1、裝SQL Server2000,服務設置里的,使用本地系統帳戶和使用域用戶帳戶 有何區別?

SQLServer2000 使用本地系統帳戶和使用域用戶帳戶兩者區別

在安裝SQLSERVER2000時,會有這樣的一個選擇畫面,這是設置啟動sqlserver服務的登錄身份。SQLSERVER2000裝好後,會產 生一個MSSQLSERVER服務,在這里設置的就是啟動它這個服務的登錄身份。

那麼我們究竟要選擇哪一個呢?兩者各代表什麼意思呢?下文我們就來研究一下。

我們先看熟悉一下兩個相關概念。

什麼是憑據?
Windows憑據(Credential)其實就是指用戶帳戶和口令,我們調用一些API,如 WTSOpenServer,QueryServiceStatus,NetUserEnum等等涉及到RPC的,只要當前用戶存儲有目標遠程機的許可權合 適的憑據,則這些API就不會因產生ERROR_ACCESS_DENIED而執行失敗。
不好理解么?那麼我們來看一下訪問別的計算機的情形,加深理解。訪問遠程計算機必然用到rpc。

上圖就是我們連接到IP為172.16.100.1計算時的情形,這個時候是需要我們輸入用戶帳戶與密碼的。這里的用戶帳戶與密碼就是所謂的憑據。

當我們輸入用戶帳戶與密碼後,並把「記住我的密碼」打上勾,點確定。那麼我們的憑據(即這個用戶帳戶與密碼)被存儲了,以後再訪問的時候就無須再輸入。

安 全上下文
安全上下文(Security context)是指在一個系統中有效的安全屬性或規則。

下面我們來看SQLSERVER2000服務的兩種登錄方式:本地系統帳戶和域用戶帳戶

本 地系統帳戶:

該帳戶是對本地計算機具有管理員許可權的預定義本地帳戶。在本地系統帳戶的安全上下文中運行的服務向遠程伺服器提供本地計算機的憑據。在本地系統帳戶的安全 上下文中運行的服務不能建立身份驗證會話,因為本地系統帳戶不屬於域中的 Everyone 組。因此,使用該帳戶的服務只能通過空會話(沒有憑據)來訪問網路資源。(這個訪問指的是為了完成某項任務服務的自動訪問,和我們的連接SQL伺服器不一 概念)

域 用戶帳戶:

使用專用域用戶帳戶作為登錄帳戶

域用戶帳戶是指在 Active Directory 目錄服務中創建的用戶帳戶。該帳戶是域中 Authenticated Users 組的成員。在域用戶帳戶的安全上下文中運行的服務向遠程伺服器提供域用戶帳戶的 Kerberos 票證。在域用戶帳戶的安全上下文中運行的服務可以訪問經過身份驗證的用戶或特定用戶帳戶有權訪問的遠程伺服器上的資源。

使用本地用戶帳戶作為登錄帳戶

本地用戶帳戶是指在本地計算機上創建的Windows用戶帳戶。在本地用戶帳戶的安全上下文中運行的服務向遠程伺服器提供本地用戶帳戶的訪問標記。如果在 遠程伺服器上配置了匹配用戶名和密碼,則使用本地用戶帳戶的服務將能夠訪問同名帳戶有權訪問的遠程伺服器上的資源。雖然此方案行之有效,但是維護這些單獨 的帳戶並保持帳戶密碼同步將增加管理開銷。
如果你沒有加入域,但又需要連接到網路資源,那麼可以使用本地用戶帳戶作為登錄帳戶。
由此可見使用域用戶帳戶可以使用憑據來訪問遠程計算機,並使用相應的資源。

例如SQLSERVER服務,當它進行以下操作時,是需要訪問遠程計算機的。
• 遠程過程調用。
• 復制。
• 備份到網路驅動器。
• 涉及遠程數據源的異類聯接。
• SQL Server 代理郵件功能和 SQL 郵件。

在這幾種情況下是無法不使用憑證去訪問遠程計算機,並使用其資源的。所以必須得把登錄類型改為「域用戶帳戶」,並輸入在遠程計算機上配置好的,存在的「用 戶名」和「密碼」。

如果只是裝在本機進行開發或學習,完全沒必要使用域用戶帳戶登錄模式,因為有時候因為切換不同用戶而導致服務不能啟動。

修 改SQLSERVER服務的登錄類型

服務的登錄類型是隨時可以改變的。可以需要的時候通過以下兩種方法修改SQLSERVER服務的登錄類型。

1. 通過企業管理器修改

右擊SQLSERVER伺服器---「屬性」---「安全性」下的「啟動服務帳戶」

2.通過服務修改

「控制面板」---「服務」----「MSSQLSERVER」,右擊---「屬性」---「登錄」

裝 SQLSERVER時遇到的一些問題
1.在安裝時出現提示"command line option syntax error!type command /? for help"
這是因為你可能把SQLSERVER的安裝文件放在了中文目錄下,可以你它改為英文目錄即可。每一級目錄都不能含有中文。
2.出現提示"以前的某個程序安裝已在安裝計算機上創建掛起的文件操作。運行安裝程序之前必須重啟計算機"
打開注冊表編輯器(或在命令行輸入:regedit),在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet \Control\Session Manager中找到PendingFileRenameOperations項目,並刪除它。然後進行安裝。

2、安裝SQL時,使用域用戶賬戶中的域填寫什麼(填寫其他無法繼續下一步)急急急!!!!

此時出現"服務賬戶"對話框,在該對話框中共有4個選項,我們建議用戶選擇"對每個服務使用同一賬戶。自動啟動SQL Server 服務"和"使用本地系統賬戶"這兩個選項,選好以後點擊下一步,繼續安裝;
進入"身份驗證模式"窗口,此時請選擇第二項"混合模式"只有選擇混合模式後SQL Server 資料庫的超級用戶才是"sa";在此窗口可輸入超級用戶的密碼,也可選擇空密碼(建議:不要使用空密碼)。選擇下一步後繼續安裝;
這時安裝程序將從光碟向您的機器安裝SQL 2000的部件,這需要一段時間。當安裝完成後,出現"安裝完成"對話框。單擊"完成"按鈕,完成SQL 2000的安裝。

3、SQL2000 1069錯誤(由於登錄失 敗而無法啟動服務)解決辦法?

原因很簡單,安裝SQL Server時是使用默認登錄用戶來作為啟動SQL Server服務的賬號(對於自己使用的單機,通常就是administrator了),當該用戶更改了用戶名(如有人喜歡把administrator 改成admin)或更改了其口令時,再次啟動伺服器,就出現"同於登錄失敗而無法啟動服務"的錯誤了
知道了原因,解決方法也就很顯然了
1、把用戶口令改回原來的,再啟動服務
2、使用控制面版服務管理器,找到 MSSQLSERVER服務,更改啟動賬號信息,改成變更後的,再啟動服務
3、也是推薦使用的方法,創建一個新用戶,專門用於啟動SQL Server服務,安裝SQL Server時就使用該用戶來啟動SQL Server,這樣就可以避免用於頻繁更改administrator口令而帶來的1069錯誤了。如果已經安裝好SQL Server,也可以在控制面版服務管理器下更改MSSQLSERVER服務的服務賬號信息,換成SQL服務專用的用戶。
首先介紹網路上常用的兩種解決方法:

1.我的電腦--控制面板--管理工具--服務--右鍵 MSSQLSERVER--屬性--登陸--登陸身份--選擇"本地系統帳戶"
或:
2.我的電腦--控制面板--管理工具--服務--右鍵 MSSQLSERVER--屬性--登陸--登陸身份--選擇"此帳戶"--密碼和確認密碼中輸入你修改後的administrator密碼.

兩者的區別:
選擇第一種方式,以後修改了administrator密碼,不用再調整(但要求登陸操作系統的是系統管理員)
選擇第二種方式,以後修改了administrator密碼,還要再重復做上面的操作.
下面是我遇到的一種情況:
今天上午同事又告訴我他的SQL不能登陸自己的"企業管理器"了,報出的錯誤就是"1069 錯誤,由於登錄失敗而無法啟動服務",上網查到了以上兩種方案,但是當我看到了服務的窗口又發現了一個可能引起此問題的地方,我們先找到 MSSQLSERVER服務,然後查看它的屬性,發現是使用域帳戶在啟動服務時進行驗證,於是便詢問是否修改過登陸域的密碼,得到答案是修改過,因為域中作了設置,一定時期後要求用戶修改密碼,而且不能與以前密碼相同(空密碼除外,這個我做過實驗^_^)。於是將這里的密碼重新進行設置,再重新啟動服務成功,SQL也可登陸成功。

4、[SQL Server 2000]發生錯誤1069:由於登錄失敗而無法啟動服務 (這個和上面的差不多)

如何修改 SQL Server 2000身份驗證模式和系統 管理 員Sa的登錄密碼

1、如何修改SQL Server 2000身份驗證模式?
分析:由於千方百劑軟體,在 資料庫 安全方面採用了最安全的方式「混合模式」,它主要應用於網路主要是Novell網路或者對等網,使用SPX/IP協議和SQL Server驗證模式。

優點如下:
創建了Windows NT/2000之上的另外一個安全層次。
支持更大范圍的用戶,例如非Windows NT客戶、Novell網路等。
一個應用程序可以使用單個的SQL Server登錄和口令。

下面以操作系統Windows 2000上的SQL Server 2000為例,對誤將身份驗證模式選擇為「windows身份驗證模式」的資料庫進行修改,操作步驟為:
1. 打開企業管理器,依次展開伺服器組,用右鍵單擊軟體使用的伺服器。
2. 在彈出的快捷菜單,執行「屬性」命令,出現「SQL Server屬性」對話框。如圖3所示。單擊「安全性」標簽,在「安全性」選項框中,將「僅Windows」改為「SQL Server和Windows」身份驗證。
3. 設置完成後,單擊「確定」按鈕,系統提示重新啟動伺服器。
4. 單擊「是」按鈕,完成對身份驗證模式的修改。
說明:在 Windows XP操作系統與Windows 2000操作系統下修改SQL Server 2000身份驗證模式相同,但在Windows 98操作系統下,卻不能通過以上方法對身份驗證模式進行修改。因為在Windows 98操作系統下,安裝SQL Server 2000時,系統只支持「混合模式」身份驗證模式。

2、如何修改SQL Server 2000系統管理員Sa的登錄密碼?

分析:SQL Server 2000系統管理員Sa的登錄密碼,一般在安裝SQL Server 2000時就已經設置。在資料庫管理系統中,用檢查口令等手段來檢查用戶身份,合法的用戶才能進入資料庫系統。千方百劑系列需要通過驗證Sa登錄密碼才能 創建、刪除賬套,這樣Sa的登錄密碼在此就顯得尤為重要。

操作步驟如下:
1. 打開企業管理器,依次展開伺服器組,然後展開伺服器。
2. 打開「安全性」文件夾,單擊「登錄」,然後用右鍵單擊「Sa」,執行「屬性」命令。
3. 彈出「SQL Server登錄屬性」對話框,如圖4所示。在「SQL Server身份驗證」密碼欄,輸入最新密碼。
4. 單擊「確定」按鈕,彈出「確認密碼」對話框,再輸一遍登錄密碼。
5. 單擊「確定」按鈕,完成對Sa登錄密碼的修改。

3、發生錯誤1069:由於登錄失敗而無法啟動服務

錯誤1069是一個Windows NT/2000的系統錯誤。錯誤1069表明服務不能被啟動(當啟動服務時返回「登錄失敗」錯誤)。例如,當啟動MSSQLServer服務時,得到如下 錯誤提示:

發生錯誤1069:由於登錄失敗而無法啟動服務
此時正在MSSQLServer服務上執行該服務操作

如果服務被一個沒有「登錄服務」許可權的帳戶所啟動時會發生1069錯誤。解決該問題的方法是給予該帳戶以「登錄服 務」許可權。
具體到MSSQLServer的問題,如果在安裝在Windows XP上安裝SQL Server 2000開發版,並選擇了默認設置(僅Windows的身份驗證方式,默認實例,用Windows的Administrator用戶進行的安裝等),一般 會發生上述問題。解決的方法會有很多種,但最簡單的方法是:
依次打開Windows控制面版->管理工具->服務->MSSQLSERVER->屬性->登錄,將登錄身份改為本地系 統帳戶

通過以上資料,初步認為是因為設置了 「使用域用戶帳戶 」,於是就去查看了 控制面板--管理工具--服務--右鍵 MSSQLSERVER--屬性--登陸--登陸身份--選擇"本地系統帳戶" ,哎!發現他的電腦本來就是選擇的「 本地系統帳戶 」

這下我是真的無語了。。。。無奈啊!

他說是不是因為win7系統的緣故,也許安裝的時候和 xp 不一樣,我也這么想過,但是我覺得應該沒多大差別才對。沒辦法,繼續上網查!

5、win7安裝sql server 2005的方法詳解:

本文將為大家介紹Windows 7下如何安裝SQL Server 2005,相信通過本文,能讓大家了解安裝的過程。

一、配置IIS

到控制面板,打開IIS Features,點左邊的加號,打開詳細信息,我們勾上以下組件:

1: Web Managerment Tools\IIS 6 Management Compatibility\IIS6 WMI Compatibility

2: Web Managerment Tools\IIS 6 Management Compatibility\IIS6 Metabase and IIS 6 Configuration Compatibility

3: World Wide Web Services\Application Development Features\Asp.net

4: World Wide Web Services\Common Http Features\Http Redirection

5: World Wide Web Services\Security\Windows Authentication

二、安裝標准版SQL Server 2005

按照提示安裝即可。

三、安裝SQL Server 2005 SP3

最後一步設置系統帳號許可權,需要先到任務管理器中關閉 sqlserver 進程,然後到打開dos窗口之前的一步,又需要手動啟動 sqlserver服務。

四、啟用 SQL Server Browser 服務

單擊「開始」,依次指向「程序」、「Microsoft SQL Server 2005」和「配置工具」,然後單擊「SQL Server 外圍應用配置器」。

在「SQL Server 2005 外圍應用配置器」頁上,單擊「服務和連接的外圍應用配置器」。

在「服務和連接的外圍應用配置器」頁上,單擊「SQL Server Browser」,在「啟動類型」中單擊「自動」選項,然後單擊「應用」。

打開 Windows 防火牆,請單擊「開始」,再單擊「運行」,鍵入 firewall.cpl,然後單擊「確定」。

五、在 Windows 防火牆中為 SQL Server 2005 創建例外

若要在 Windows 防火牆中為 SQL Server 2005 創建例外,請執行以下步驟:

六、在 Windows 防火牆中為 SQL Server Browser 服務創建例外

若要在 Windows 防火牆中為 SQL Server Browser 服務創建例外,請執行以下步驟:

1.在 Windows 防火牆中,單擊「例外」選項卡,然後單擊「添加程序」。

2.在「添加程序」窗口中,單擊「瀏覽」。

3.單擊 C:\Program Files\Microsoft SQL Server\90\Shared\sqlbrowser.exe 可執行程序,單擊「打開」,然後單擊「確定」。

七、配置SQLServer2005 遠程連接

第一步 :SQL Server Configuration Manager -> SQL Server 2005 Services 將 SQL Server Browser 設置為 running,

如果沒有Enable的話,右鍵Properties -> Service -> StartMode = Auotomatic

注意,同時必須打開SQL Server Browser 服務第二步: SQL Server 2005 Network Configuration -> Protocols for SQLXPRESS 下同時使用TCP/IP和named pipes第三步:SQL Native Client Configuration 下同時使用TCP/IP和named pipes



2、登陸改為混合模式:

打開manage管理器->以windows方式連接並進入資料庫->右鍵點擊你的數據伺服器->屬性 ->security>選中Sql server and windows Authentication3、新建SQL server方式的用戶名和密碼:

manage管理器 -> security -> 右鍵點擊logins->new login...-> 選中sql server authentication ->設置login name 和password(confirm password)以及 默認的資料庫

最好去掉「enforce password expiration」前的小鉤,否則每次登陸都要修改密碼。

注意 : 一定要在User Mapping 頁面中選擇該用戶對應的資料庫(即使前面已經選擇了默認資料庫),否則還是會登錄不上

如果需要修改資料庫,必須分配 db_Owner 角色


4、重新啟動伺服器

雖然網上好多文章都說只需要重新啟動SQL服務就可以,但是經過驗證,必須重新啟動機器才行

In order to get things to work. You might need to completely reboot the server machine after making the changes. There have been reports (thanks P.C.) that starting and stopping the SQL Server and Browser software is not enough.

5、使用SQL Server Configuration Manager 測試

注意 : Server Name 一定要 Serever\SQLEXPRESS同時還要在 Options -> Network protocol 中選擇TCP/IP才能順利登錄在 Windows 防火牆中,單擊「例外」選項卡,然後單擊「添加程序」。

在「添加程序」窗口中,單擊「瀏覽」。

單擊 C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqlservr.exe 可執行程序,單擊「打開」,然後單擊「確定」。

注意:上述路徑可能會根據 SQL Server 2005 的安裝位置而不同。MSSQL.1 這個佔位符代表的是您在前面過程的步驟 3 中獲得的實例 ID。

對於每個需要為其創建例外的 SQL Server 2005 實例,重復步驟 1 到步驟 3。

6、Windows7安裝SQL Server 2005 全攻略

費了整整兩個晚上加一天時間,把SQL Server 2005 不知安裝、卸載過多少次,今天終於完美安裝上去了,記錄一下安裝過程,以備以後查看,首先說一下本機配置。

本人操作系統是Windows7簡體中文旗艦版,安裝的是SQL.Server.2005.開發人員版、企業版、標准版32、64位DVD合集,這個版的鏡像文件網上很多。用虛擬光碟機載入鏡像,照例是檢查組建支持,剛開始安裝的時候,就檢查iis和com+組件警告,我一開始只勾選了asp.net這個選項,結果還是警告,後來發現全選就沒事了。在com+組件上浪費的時間最多,開始老是無法啟動這個分布式事務支持組件,在網上了查了無數資料還是無法啟動,最終發現是之前安裝的操作系統的版本問題,估計是被修改過的版本,然後不想再發生麻煩,就重裝了一下系統。

接下來sql順利安裝通過,中間會有多次警告"版本不受支持",不用管它,繼續安裝。有一點也很搞笑,估計是安裝包的bug,在安裝過程中雖然選擇了"混合模式驗證",安裝完成過後用windows系統帳戶卻死活登不上去,sa賬戶可以正常登錄。安裝完成後需要下載SQL Server 2005 sp3的升級包,一路默認下去,有兩點注意:第一個需要先把sql服務手動停掉,升級包才能安裝;第二點,也是最關鍵的一點,當一切安裝完成,出現一個 "完成後啟動Windws Vista 配置工具的時候",不要動,要先啟動sql服務後,再點下一步,然後一個dos窗口一閃而過,出現一個配置工具,把左側的系統默認賬戶添加到右側,下一步,現在就可以用系統帳戶正常登錄sql了。

之前因為安裝升級包都是一路"下一步",但是因為停掉的sql服務沒有啟動,導致最後一步添加系統帳戶失敗,好像是什麼"錯誤18456",我在這個上浪費的時間最多,後來仔細回憶一下安裝步驟,猛然想到服務未啟動怎麼能添加進去賬戶呢,今天安裝的時候特意把sql服務啟動之後再添加果然成功了。

用系統帳戶登錄進去看了下,多了一個"計算機名/默認賬戶名"的用戶,這也為我們提供了一個思路:如果安裝過程中忘記啟動sql服務,用sa帳戶登錄,然後安全性--右鍵登錄名--新建登錄帳戶--搜索--高級--立即查找,在下面找到自己系統的默認登錄帳戶(必須是管理員組的),確定。然後選擇 "Windows身份驗證",伺服器腳色選擇public和sysadmin這兩個,狀態選"授權"和"啟用"這兩個,至此應該就可以了。之所以說應該就可以了,因為我沒試過,我看到那個"計算機名/默認賬戶名"是這樣配置的。

還有些人可能安裝的過程中資料庫服務安裝成功了,但是企業管理器沒有安裝上去,沒關系,到網上下載一個企業管理器,比如 SQLServer2005_SSMSEE.msi,放到人一個盤,最好是根目錄,比如我的放到G:盤,直接運行這個安裝程序是不行,會提示安裝失敗,這時新建一個文本文件,內容是msiexec /i G:\SQLServer2005_SSMSEE.msi ,注意路徑和你的文件名要對應一致。然後把文本文件後綴名改為cmd,右鍵"以管理員身份運行"這個文件,這樣就安裝成功了,最好先安裝這個管理器,再安裝sp3升級包。

⑶ 執行存儲過程有多少種方法java

Java執行存儲過程的方法:

簡單的老的JDBC通過CallableStatement類支持存儲過程的調用。該類實際上是PreparedStatement的一個子類。假設有一個poets資料庫。資料庫中有一個設置詩人逝世年齡的存儲過程。下面是對老酒鬼Dylan Thomas(old soak Dylan Thomas,不指定是否有關典故、文化,請批評指正。譯注)進行調用的詳細代碼:

try{
intage=39;
StringpoetName="dylanthomas";
CallableStatementproc=connection.prepareCall("{callset_death_age(?,?)}");
proc.setString(1,poetName);
proc.setInt(2,age);
cs.execute();
}catch(SQLExceptione){//....}

傳給prepareCall方法的字串是存儲過程調用的書寫規范。它指定了存儲過程的名稱,?代表了需要指定的參數。
和JDBC集成是存儲過程的一個很大的便利:為了從應用中調用存儲過程,不需要存根(stub)類或者配置文件,除了你的DBMS的JDBC驅動程序外什麼也不需要。
當這段代碼執行時,資料庫的存儲過程就被調用。我們沒有去獲取結果,因為該存儲過程並不返回結果。執行成功或失敗將通過例外得知。失敗可能意味著調用存儲過程時的失敗(比如提供的一個參數的類型不正確),或者一個應用程序的失敗(比如拋出一個例外指示在poets資料庫中並不存在「Dylan Thomas」)

結合SQL操作與存儲過程

映射Java對象到SQL表中的行相當簡單,但是通常需要執行幾個SQL語句;可能是一個SELECT查找ID,然後一個INSERT插入指定ID的數據。在高度規格化(符合更高的範式,譯注)的資料庫模式中,可能需要多個表的更新,因此需要更多的語句。Java代碼會很快地膨脹,每一個語句的網路開銷也迅速增加。
將這些SQL語句轉移到一個存儲過程中將大大簡化代碼,僅涉及一次網路調用。所有關聯的SQL操作都可以在資料庫內部發生。並且,存儲過程語言,例如PL/SQL,允許使用SQL語法,這比Java代碼更加自然。早期的存儲過程,使用Oracle的PL/SQL語言編寫:

createprocereset_death_age(poetVARCHAR2,poet_ageNUMBER)
poet_idNUMBER;
beginSELECTidINTOpoet_idFROMpoetsWHEREname=poet;
INSERTINTOdeaths(mort_id,age)VALUES(poet_id,poet_age);
endset_death_age;

set_death_age幾乎可以肯定是一個很爛的實現。應該在poets表中添加一列來存儲逝世年齡。Java代碼中並不關心資料庫模式是怎麼實現的,因為它僅調用存儲過程。以後可以改變資料庫模式以提高性能,但是不必修改代碼。
下面是調用上面存儲過程的Java代碼:

publicstaticvoidsetDeathAge(PoetdyingBard,intage)throwsSQLException{
Connectioncon=null;
CallableStatementproc=null;
try{
con=connectionPool.getConnection();
proc=con.prepareCall("{callset_death_age(?,?)}");
proc.setString(1,dyingBard.getName());
proc.setInt(2,age);
proc.execute();
}
finally{
try{proc.close();}
catch(SQLExceptione){}
con.close();
}
}

為了確保可維護性,建議使用像這兒這樣的static方法。這也使得調用存儲過程的代碼集中在一個簡單的模版代碼中。如果用到許多存儲過程,就會發現僅需要拷貝、粘貼就可以創建新的方法。因為代碼的模版化,甚至也可以通過腳本自動生產調用存儲過程的代碼。

Functions

存儲過程可以有返回值,所以CallableStatement類有類似getResultSet這樣的方法來獲取返回值。當存儲過程返回一個值時,必須使用registerOutParameter方法告訴JDBC驅動器該值的SQL類型是什麼。也必須調整存儲過程調用來指示該過程返回一個值。
下面接著上面的例子。這次查詢Dylan Thomas逝世時的年齡。這次的存儲過程使用PostgreSQL的pl/pgsql:

createfunctionsnuffed_it_when(VARCHAR)returnsinteger'declare
poet_idNUMBER;
poet_ageNUMBER;
begin
--.
SELECTidINTOpoet_idFROMpoetsWHEREname=$1;
--getandreturntheage.
SELECTageINTOpoet_ageFROMdeathsWHEREmort_id=poet_id;
returnage;
end;'language'pl/pgsql';

另外,注意pl/pgsql參數名通過Unix和DOS腳本的$n語法引用。同時,也注意嵌入的注釋,這是和Java代碼相比的另一個優越性。在Java中寫這樣的注釋當然是可以的,但是看起來很凌亂,並且和SQL語句脫節,必須嵌入到Java String中。
下面是調用這個存儲過程的Java代碼:

connection.setAutoCommit(false);
CallableStatementproc=connection.prepareCall("{?=callsnuffed_it_when(?)}");
proc.registerOutParameter(1,Types.INTEGER);
proc.setString(2,poetName);
cs.execute();
intage=proc.getInt(2);

如果指定了錯誤的返回值類型會怎樣?那麼,當調用存儲過程時將拋出一個RuntimeException,正如你在ResultSet操作中使用了一個錯誤的類型所碰到的一樣。

復雜的返回值

如果這是存儲過程的全部功能,那麼存儲過程就不是其它遠程執行機制的替換方案了。存儲過程的功能比這強大得多。
當執行一個SQL查詢時,DBMS創建一個叫做cursor(游標)的資料庫對象,用於在返回結果中迭代每一行。ResultSet是當前時間點的游標的一個表示。這就是為什麼沒有緩存或者特定資料庫的支持,只能在ResultSet中向前移動。
某些DBMS允許從存儲過程中返回遊標的一個引用。JDBC並不支持這個功能,但是Oracle、PostgreSQL和DB2的JDBC驅動器都支持在ResultSet上打開到游標的指針(pointer)。
設想列出所有沒有活到退休年齡的詩人,下面是完成這個功能的存儲過程,返回一個打開的游標,同樣也使用PostgreSQL的pl/pgsql語言:

createprocerelist_early_deaths()returnrefcursoras'declare
toesuprefcursor;
begin
opentoesupforSELECTpoets.name,deaths.ageFROMpoets,deaths--allentriesindeathsareforpoets.--butthetablemightbecomegeneric.
WHEREpoets.id=deaths.mort_idANDdeaths.age<60;
returntoesup;
end;'language'plpgsql';

下面是調用該存儲過程的Java方法,將結果輸出到PrintWriter:
PrintWriter:

staticvoidsendEarlyDeaths(PrintWriterout){
Connectioncon=null;
CallableStatementtoesUp=null;
try{
con=ConnectionPool.getConnection();
//...con.
setAutoCommit(false);//Setupthecall.
CallableStatementtoesUp=connection.prepareCall("{?=calllist_early_deaths()}");
toesUp.registerOutParameter(1,Types.OTHER);
toesUp.execute();
ResultSetrs=(ResultSet)toesUp.getObject(1);
while(rs.next()){
Stringname=rs.getString(1);
intage=rs.getInt(2);
out.println(name+"was"+age+"yearsold.");
}
rs.close();
}
catch(SQLExceptione){//Weshouldprotectthesecalls.toesUp.close();con.close();
}
}

因為JDBC並不直接支持從存儲過程中返回遊標,使用Types.OTHER來指示存儲過程的返回類型,然後調用getObject()方法並對返回值進行強制類型轉換。
這個調用存儲過程的Java方法是mapping的一個好例子。Mapping是對一個集上的操作進行抽象的方法。不是在這個過程上返回一個集,可以把操作傳送進去執行。本例中,操作就是把ResultSet列印到一個輸出流。這是一個值得舉例的很常用的例子,下面是調用同一個存儲過程的另外一個方法實現:

publicclassProcessPoetDeaths{
publicabstractvoidsendDeath(Stringname,intage);
}
staticvoidmapEarlyDeaths(ProcessPoetDeathsmapper){
Connectioncon=null;
CallableStatementtoesUp=null;
try{
con=ConnectionPool.getConnection();
con.setAutoCommit(false);
CallableStatementtoesUp=connection.prepareCall("{?=calllist_early_deaths()}");
toesUp.registerOutParameter(1,Types.OTHER);
toesUp.execute();
ResultSetrs=(ResultSet)toesUp.getObject(1);
while(rs.next()){
Stringname=rs.getString(1);
intage=rs.getInt(2);
mapper.sendDeath(name,age);
}
rs.close();
}catch(SQLExceptione){//Weshouldprotectthesecalls.toesUp.close();
con.close();
}
}

這允許在ResultSet數據上執行任意的處理,而不需要改變或者復制獲取ResultSet的方法:

staticvoidsendEarlyDeaths(finalPrintWriterout){
ProcessPoetDeathsmyMapper=newProcessPoetDeaths(){
publicvoidsendDeath(Stringname,intage){
out.println(name+"was"+age+"yearsold.");
}
};
mapEarlyDeaths(myMapper);
}

這個方法使用ProcessPoetDeaths的一個匿名實例調用mapEarlyDeaths。該實例擁有sendDeath方法的一個實現,和我們上面的例子一樣的方式把結果寫入到輸出流。當然,這個技巧並不是存儲過程特有的,但是和存儲過程中返回的ResultSet結合使用,是一個非常強大的工具。

⑷ 怎樣一次執行多條獨立的SQL語句

1、將你要執行的sql語句寫入一個txt文件中; 2、修改文件後綴為.sql文件; 3、使用 「source + 路徑+文件名」 註: source與路徑之間有空格。

⑸ 伺服器被黑,每次進登錄界面都彈出來一個對話框,大意是「你的伺服器已經被拿下,下次注意」。怎樣取消

伺服器安全這問題,很重要,之前伺服器被黑,管理員賬號也被篡改,遠程埠也登陸不了了。,在網上搜索了一些伺服器安全設置以及防黑的文章,對著文章,我一個一個的設置起來,費了好幾天的時間才設置完,原以為會防止伺服器再次被黑,沒想到伺服器竟然癱瘓了,網站都打不開了,無奈對伺服器安全也是一竅不通,損失真的很大,資料庫都損壞了,我哪個後悔啊。娘個咪的。最後還是讓機房把系統重裝了。找了幾個做網站伺服器方面的朋友,咨詢了關於伺服器被黑的解決辦法,他們建議找國內最有名的伺服器安全的安全公司來給做安全維護,推薦了sinesafe,伺服器被黑的問題,才得以解決。

一路的走來,才知道,伺服器安全問題可不能小看了。經歷了才知道,伺服器安全了給自己帶來的也是長遠的利益。 希望我的經歷能幫到樓主,幫助別人也是在幫助我自己。

下面是一些關於安全方面的建議!

建站一段時間後總能聽得到什麼什麼網站被掛馬,什麼網站被黑。好像入侵掛馬似乎是件很簡單的事情。其實,入侵不簡單,簡單的是你的網站的必要安全措施並未做好。

一:掛馬預防措施:

1、建議用戶通過ftp來上傳、維護網頁,盡量不安裝asp的上傳程序。

2、定期對網站進行安全的檢測,具體可以利用網上一些工具,如sinesafe網站掛馬檢測工具!

序,只要可以上傳文件的asp都要進行身份認證!

3、asp程序管理員的用戶名和密碼要有一定復雜性,不能過於簡單,還要注意定期更換。

4、到正規網站下載asp程序,下載後要對其資料庫名稱和存放路徑進行修改,資料庫文件名稱也要有一定復雜性。

5、要盡量保持程序是最新版本。

6、不要在網頁上加註後台管理程序登陸頁面的鏈接。

7、為防止程序有未知漏洞,可以在維護後刪除後台管理程序的登陸頁面,下次維護時再通過ftp上傳即可。

8、要時常備份資料庫等重要文件。

9、日常要多維護,並注意空間中是否有來歷不明的asp文件。記住:一分汗水,換一分安全!

10、一旦發現被入侵,除非自己能識別出所有木馬文件,否則要刪除所有文件。

11、對asp上傳程序的調用一定要進行身份認證,並只允許信任的人使用上傳程序。這其中包括各種新聞發布、商城及論壇程

二:掛馬恢復措施:

1.修改帳號密碼

不管是商業或不是,初始密碼多半都是admin。因此你接到網站程序第一件事情就是「修改帳號密碼」。帳號

密碼就不要在使用以前你習慣的,換點特別的。盡量將字母數字及符號一起。此外密碼最好超過15位。尚若你使用

SQL的話應該使用特別點的帳號密碼,不要在使用什麼什麼admin之類,否則很容易被入侵。

2.創建一個robots.txt

Robots能夠有效的防範利用搜索引擎竊取信息的駭客。

3.修改後台文件

第一步:修改後台里的驗證文件的名稱。

第二步:修改conn.asp,防止非法下載,也可對資料庫加密後在修改conn.asp。

第三步:修改ACESS資料庫名稱,越復雜越好,可以的話將數據所在目錄的換一下。

4.限制登陸後台IP

此方法是最有效的,每位虛擬主機用戶應該都有個功能。你的IP不固定的話就麻煩點每次改一下咯,安全第一嘛。

5.自定義404頁面及自定義傳送ASP錯誤信息

404能夠讓駭客批量查找你的後台一些重要文件及檢查網頁是否存在注入漏洞。

ASP錯誤嘛,可能會向不明來意者傳送對方想要的信息。

6.慎重選擇網站程序

注意一下網站程序是否本身存在漏洞,好壞你我心裡該有把秤。

7.謹慎上傳漏洞

據悉,上傳漏洞往往是最簡單也是最嚴重的,能夠讓黑客或駭客們輕松控制你的網站。

可以禁止上傳或著限制上傳的文件類型。不懂的話可以找專業做網站安全的sinesafe公司。

8. cookie 保護

登陸時盡量不要去訪問其他站點,以防止 cookie 泄密。切記退出時要點退出在關閉所有瀏覽器。

9.目錄許可權

請管理員設置好一些重要的目錄許可權,防止非正常的訪問。如不要給上傳目錄執行腳本許可權及不要給非上傳目錄給於寫入權。

10.自我測試

如今在網上黑客工具一籮筐,不防找一些來測試下你的網站是否OK。

11.例行維護

a.定期備份數據。最好每日備份一次,下載了備份文件後應該及時刪除主機上的備份文件。

b.定期更改資料庫的名字及管理員帳密。

c.借WEB或FTP管理,查看所有目錄體積,最後修改時間以及文件數,檢查是文件是否有異常,以及查看是否有異常的賬號。

⑹ 一個很無奈的sql查詢語句問問大神們誰會

insert into 表名 (日期,學生姓名,是否簽到) values(日期,學生姓名,IFNULL((select 是否簽到 from 表名 where 日期= 昨天日期 and 學生姓名 = 姓名),0))

⑺ SQL的問題

說明:復製表(只復制結構,源表名:a 新表名:b)

SQL: select * into b from a where 1<>1

說明:拷貝表(拷貝數據,源表名:a 目標表名:b)

SQL: insert into b(a, b, c) select d,e,f from b;

說明:顯示文章、提交人和最後回復時間

SQL: select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b

說明:外連接查詢(表名1:a 表名2:b)

SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

說明:日程安排提前五分鍾提醒

SQL: select * from 日程安排 where datediff('minute',f開始時間,getdate())>5

說明:兩張關聯表,刪除主表中已經在副表中沒有的信息

SQL:

delete from info where not exists ( select * from infobz where info.infid=infobz.infid )

說明:--

SQL:

SELECT A.NUM, A.NAME, B.UPD_DATE, B.PREV_UPD_DATE

FROM TABLE1,

(SELECT X.NUM, X.UPD_DATE, Y.UPD_DATE PREV_UPD_DATE

FROM (SELECT NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHAND

FROM TABLE2

WHERE TO_CHAR(UPD_DATE,'YYYY/MM') = TO_CHAR(SYSDATE, 'YYYY/MM')) X,

(SELECT NUM, UPD_DATE, STOCK_ONHAND

FROM TABLE2

WHERE TO_CHAR(UPD_DATE,'YYYY/MM') =

TO_CHAR(TO_DATE(TO_CHAR(SYSDATE, 'YYYY/MM') ¦¦ '/01','YYYY/MM/DD') - 1, 'YYYY/MM') ) Y,

WHERE X.NUM = Y.NUM (+)

AND X.INBOUND_QTY + NVL(Y.STOCK_ONHAND,0) <> X.STOCK_ONHAND ) B

WHERE A.NUM = B.NUM

說明:--

SQL:

select * from studentinfo where not exists(select * from student where studentinfo.id=student.id) and 系名稱='"&strdepartmentname&"' and 專業名稱='"&strprofessionname&"' order by 性別,生源地,高考總成績

說明:

從資料庫中去一年的各單位電話費統計(電話費定額賀電化肥清單兩個表來源)

SQL:

SELECT a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate, 'yyyy') AS telyear,

SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '01', a.factration)) AS JAN,

SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '02', a.factration)) AS FRI,

SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '03', a.factration)) AS MAR,

SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '04', a.factration)) AS APR,

SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '05', a.factration)) AS MAY,

SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '06', a.factration)) AS JUE,

SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '07', a.factration)) AS JUL,

SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '08', a.factration)) AS AGU,

SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '09', a.factration)) AS SEP,

SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '10', a.factration)) AS OCT,

SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '11', a.factration)) AS NOV,

SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '12', a.factration)) AS DEC

FROM (SELECT a.userper, a.tel, a.standfee, b.telfeedate, b.factration

FROM TELFEESTAND a, TELFEE b

WHERE a.tel = b.telfax) a

GROUP BY a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate, 'yyyy')

說明:四表聯查問題:

SQL: select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....

說明:得到表中最小的未使用的ID號

SQL:

SELECT (CASE WHEN EXISTS(SELECT * FROM Handle b WHERE b.HandleID = 1) THEN MIN(HandleID) + 1 ELSE 1 END) as HandleID

FROM Handle

WHERE NOT HandleID IN (SELECT a.HandleID - 1 FROM Handle a)

掌握SQL四條最基本的數據操作語句:Insert,Select,Update和Delete。

練掌握SQL是資料庫用戶的寶貴財 富。在本文中,我們將引導你掌握四條最基本的數據操作語句—SQL的核心功能—來依次介紹比較操作符、選擇斷言以及三值邏輯。當你完成這些學習後,顯然你已經開始算是精通SQL了。

在我們開始之前,先使用CREATE TABLE語句來創建一個表(如圖1所示)。DDL語句對資料庫對象如表、列和視進行定義。它們並不對表中的行進行處理,這是因為DDL語句並不處理資料庫中實際的數據。這些工作由另一類SQL語句—數據操作語言(DML)語句進行處理。

SQL中有四種基本的DML操作:INSERT,SELECT,UPDATE和DELETE。由於這是大多數SQL用戶經常用到的,我們有必要在此對它們進行一一說明。在圖1中我們給出了一個名為EMPLOYEES的表。其中的每一行對應一個特定的雇員記錄。請熟悉這張表,我們在後面的例子中將要用到它。

INSERT語句

用戶可以用INSERT語句將一行記錄插入到指定的一個表中。例如,要將雇員John Smith的記錄插入到本例的表中,可以使用如下語句:

INSERT INTO EMPLOYEES VALUES

('Smith','John','1980-06-10',

'Los Angles',16,45000);

通過這樣的INSERT語句,系統將試著將這些值填入到相應的列中。這些列按照我們創建表時定義的順序排列。在本例中,第一個值「Smith」將填到第一個列LAST_NAME中;第二個值「John」將填到第二列FIRST_NAME中……以此類推。

我們說過系統會「試著」將值填入,除了執行規則之外它還要進行類型檢查。如果類型不符(如將一個字元串填入到類型為數字的列中),系統將拒絕這一次操作並返回一個錯誤信息。

如果SQL拒絕了你所填入的一列值,語句中其他各列的值也不會填入。這是因為SQL提供對事務的支持。一次事務將資料庫從一種一致性轉移到另一種一致性。如果事務的某一部分失敗,則整個事務都會失敗,系統將會被恢復(或稱之為回退)到此事務之前的狀態。

回到原來的INSERT的例子,請注意所有的整形十進制數都不需要用單引號引起來,而字元串和日期類型的值都要用單引號來區別。為了增加可讀性而在數字間插入逗號將會引起錯誤。記住,在SQL中逗號是元素的分隔符。

同樣要注意輸入文字值時要使用單引號。雙引號用來封裝限界標識符。

對於日期類型,我們必須使用SQL標准日期格式(yyyy-mm-dd),但是在系統中可以進行定義,以接受其他的格式。當然,2000年臨近,請你最好還是使用四位來表示年份。

既然你已經理解了INSERT語句是怎樣工作的了,讓我們轉到EMPLOYEES表中的其他部分:

INSERT INTO EMPLOYEES VALUES

('Bunyan','Paul','1970-07-04',

'Boston',12,70000);

INSERT INTO EMPLOYEES VALUES

('John','Adams','1992-01-21',

'Boston',20,100000);

INSERT INTO EMPLOYEES VALUES

('Smith','Pocahontas','1976-04-06',

'Los Angles',12,100000);

INSERT INTO EMPLOYEES VALUES

('Smith','Bessie','1940-05-02',

'Boston',5,200000);

INSERT INTO EMPLOYEES VALUES

('Jones','Davy','1970-10-10',

'Boston',8,45000);

INSERT INTO EMPLOYEES VALUES

('Jones','Indiana','1992-02-01',

'Chicago',NULL,NULL);

在最後一項中,我們不知道Jones先生的工薪級別和年薪,所以我們輸入NULL(不要引號)。NULL是SQL中的一種特殊情況,我們以後將進行詳細的討論。現在我們只需認為NULL表示一種未知的值。

有時,像我們剛才所討論的情況,我們可能希望對某一些而不是全部的列進行賦值。除了對要省略的列輸入NULL外,還可以採用另外一種INSERT語句,如下:

INSERT INTO EMPLOYEES(

FIRST_NAME, LAST_NAME,

HIRE_DATE, BRANCH_OFFICE)

VALUE(

'Indiana','Jones',

'1992-02-01','Indianapolis');

這樣,我們先在表名之後列出一系列列名。未列出的列中將自動填入預設值,如果沒有設置預設值則填入NULL。請注意我們改變了列的順序,而值的順序要對應新的列的順序。如果該語句中省略了FIRST_NAME和LAST_NAME項(這兩項規定不能為空),SQL操作將失敗。

讓我們來看一看上述INSERT語句的語法圖:

INSERT INTO table

[(column { ,column})]

VALUES

(columnvalue [{,columnvalue}]);

和前一篇文章中一樣,我們用方括弧來表示可選項,大括弧表示可以重復任意次數的項(不能在實際的SQL語句中使用這些特殊字元)。VALUE子句和可選的列名列表中必須使用圓括弧。

SELECT語句

SELECT語句可以從一個或多個表中選取特定的行和列。因為查詢和檢索數據是資料庫管理中最重要的功能,所以SELECT語句在SQL中是工作量最大的部分。實際上,僅僅是訪問資料庫來分析數據並生成報表的人可以對其他SQL語句一竅不通。

SELECT語句的結果通常是生成另外一個表。在執行過程中系統根據用戶的標准從資料庫中選出匹配的行和列,並將結果放到臨時的表中。在直接SQL(direct SQL)中,它將結果顯示在終端的顯示屏上,或者將結果送到列印機或文件中。也可以結合其他SQL語句來將結果放到一個已知名稱的表中。

SELECT語句功能強大。雖然表面上看來它只用來完成本文第一部分中提到的關系代數運算「選擇」(或稱「限制」),但實際上它也可以完成其他兩種關系運算—「投影」和「連接」,SELECT語句還可以完成聚合計算並對數據進行排序。

SELECT語句最簡單的語法如下:

SELECT columns FROM tables;

當我們以這種形式執行一條SELECT語句時,系統返回由所選擇的列以及用戶選擇的表中所有指定的行組成的一個結果表。這就是實現關系投影運算的一個形式。

讓我們看一下使用圖1中EMPLOYEES表的一些例子(這個表是我們以後所有SELECT語句實例都要使用的。而我們在圖2和圖3中給出了查詢的實際結果。我們將在其他的例子中使用這些結果)。

假設你想查看雇員工作部門的列表。那下面就是你所需要編寫的SQL查詢:

SELECT BRANCH_OFFICE FROM EMPLOYEES;

以上SELECT語句的執行將產生如圖2中表2所示的結果。

由於我們在SELECT語句中只指定了一個列,所以我們的結果表中也只有一個列。注意結果表中具有重復的行,這是因為有多個雇員在同一部門工作(記住SQL從所選的所有行中將值返回)。要消除結果中的重復行,只要在SELECT語句中加上DISTINCT子句:

SELECT DISTINCT BRANCH_OFFICE

FROM EMPLOYEES;

這次查詢的結果如表3所示。

現在已經消除了重復的行,但結果並不是按照順序排列的。如果你希望以字母表順序將結果列出又該怎麼做呢?只要使用ORDER BY子句就可以按照升序或降序來排列結果:

SELECT DISTINCT BRANCH_OFFICE

FROM EMPLOYEES

ORDER BY BRANCH_OFFICE ASC;

這一查詢的結果如表4所示。請注意在ORDER BY之後是如何放置列名BRANCH _OFFICE的,這就是我們想要對其進行排序的列。為什麼即使是結果表中只有一個列時我們也必須指出列名呢?這是因為我們還能夠按照表中其他列進行排序,即使它們並不顯示出來。列名BRANCH_ OFFICE之後的關鍵字ASC表示按照升序排列。如果你希望以降序排列,那麼可以用關鍵字DESC。

同樣我們應該指出ORDER BY子句只將臨時表中的結果進行排序;並不影響原來的表。

假設我們希望得到按部門排序並從工資最高的雇員到工資最低的雇員排列的列表。除了工資括弧中的內容,我們還希望看到按照聘用時間從最近聘用的雇員開始列出的列表。以下是你將要用到的語句:

SELECT BRANCH_OFFICE,FIRST_NAME,

LAST_NAME,SALARY,HIRE_DATE

FROM EMPLOYEES

ORDER BY SALARY DESC,

HIRE_DATE DESC;

這里我們進行了多列的選擇和排序。排序的優先順序由語句中的列名順序所決定。SQL將先對列出的第一個列進行排序。如果在第一個列中出現了重復的行時,這些行將被按照第二列進行排序,如果在第二列中又出現了重復的行時,這些行又將被按照第三列進行排序……如此類推。這次查詢的結果如表5所示。

將一個很長的表中的所有列名寫出來是一件相當麻煩的事,所以SQL允許在選擇表中所有的列時使用*號:

SELECT * FROM EMPLOYEES;

這次查詢返回整個EMPLOYEES表,如表1所示。

下面我們對開始時給出的SELECT語句的語法進行一下更新(豎直線表示一個可選項,允許在其中選擇一項。):

SELECT [DISTINCT]

(column [{, columns}])| *

FROM table [ {, table}]

[ORDER BY column [ASC] | DESC

[ {, column [ASC] | DESC }]];

定義選擇標准

在我們目前所介紹的SELECT語句中,我們對結果表中的列作出了選擇但返回的是表中所有的行。讓我們看一下如何對SELECT語句進行限制使得它只返回希望得到的行:

SELECT columns FROM tables [WHERE predicates];

WHERE子句對條件進行了設置,只有滿足條件的行才被包括到結果表中。這些條件由斷言(predicate)進行指定(斷言指出了關於某件事情的一種可能的事實)。如果該斷言對於某個給定的行成立,該行將被包括到結果表中,否則該行被忽略。在SQL語句中斷言通常通過比較來表示。例如,假如你需要查詢所有姓為Jones的職員,則可以使用以下SELECT語句:

SELECT * FROM EMPLOYEES

WHERE LAST_NAME = 'Jones';

LAST_NAME = 'Jones'部分就是斷言。在執行該語句時,SQL將每一行的LAST_NAME列與「Jones」進行比較。如果某一職員的姓為「Jones」,即斷言成立,該職員的信息將被包括到結果表中(見表6)。

使用最多的六種比較

我們上例中的斷言包括一種基於「等值」的比較(LAST_NAME = 'Jones'),但是SQL斷言還可以包含其他幾種類型的比較。其中最常用的為:

等於 =

不等於 <>

小於 <

大於 >

小於或等於 <=

大於或等於 >=

下面給出了不是基於等值比較的一個例子:

SELECT * FROM EMPLOYEES

WHERE SALARY > 50000;

這一查詢將返回年薪高於$50,000.00的職員(參見表7)。

邏輯連接符

有時我們需要定義一條不止一種斷言的SELECT語句。舉例來說,如果你僅僅想查看Davy Jones的信息的話,表6中的結果將是不正確的。為了進一步定義一個WHERE子句,用戶可以使用邏輯連接符AND,OR和NOT。為了只得到職員Davy Jones的記錄,用戶可以輸入如下語句:

SELECT * FROM EMPLOYEES

WHERE LAST_NAME = 'Jones' AND FIRST_NAME = 'Davy';

在本例中,我們通過邏輯連接符AND將兩個斷言連接起來。只有兩個斷言都滿足時整個表達式才會滿足。如果用戶需要定義一個SELECT語句來使得當其中任何一項成立就滿足條件時,可以使用OR連接符:

SELECT * FROM EMPLOYEES

WHERE LAST_NAME = 'Jones' OR LAST_NAME = 'Smith';

有時定義一個斷言的最好方法是通過相反的描述來說明。如果你想要查看除了Boston辦事處的職員以外的其他所有職員的信息時,你可以進行如下的查詢:

SELECT * FROM EMPLOYEES

WHERE NOT(BRANCH_OFFICE = 'Boston');

關鍵字NOT後面跟著用圓括弧括起來的比較表達式。其結果是對結果取否定。如果某一職員所在部門的辦事處在Boston,括弧內的表達式返回true,但是NOT操作符將該值取反,所以該行將不被選中。

斷言可以與其他的斷言嵌套使用。為了保證它們以正確的順序進行求值,可以用括弧將它們括起來:

SELECT * FROM EMPLOYEES

WHERE (LAST_NAME = 'Jones'

AND FIRST_NAME = 'Indiana')

OR (LAST_NAME = 'Smith'

AND FIRST_NAME = 'Bessie');

SQL沿用數學上標準的表達式求值的約定—圓括弧內的表達式將最先進行求值,其他表達式將從左到右進行求值。

以上對邏輯連接符進行了說明,在對下面的內容進行說明之前,我們再一次對SELECT語句的語法進行更新:

SELECT [DISTINCT]

(column [{, column } ] )| *

FROM table [ { , table} ]

[ORDER BY column [ASC] | [DESC

[{ , column [ASC] | [DESC } ] ]

WHERE predicate [ { logical-connector predicate } ];

NULL和三值邏輯

在SQL中NULL是一個復雜的話題,關於NULL的詳細描述更適合於在SQL的高級教程而不是現在的入門教程中進行介紹。但由於NULL需要進行特殊處理,並且你也很可能會遇到它,所以我們還是簡略地進行一下說明。

首先,在斷言中進行NULL判斷時需要特殊的語法。例如,如果用戶需要顯示所有年薪未知的職員的全部信息,用戶可以使用如下SELECT語句:

SELECT * FROM EMPLOYEES

WHERE SALARY IS NULL;

相反,如果用戶需要所有已知年薪數據的職員的信息,你可以使用以下語句:

SELECT * FROM EMPLOYEES

WHERE SALARY IS NOT NULL;

請注意我們在列名之後使用了關鍵字IS NULL或IS NOT NULL,而不是標準的比較形式:COLUMN = NULL、COLUMN <> NULL或是邏輯操作符NOT(NULL)。

這種形式相當簡單。但當你不明確地測試NULL(而它們確實存在)時,事情會變得很混亂。

例如,回過頭來看我們圖1中的EM-PLOYEES表,可以看到Indiana Jones的工薪等級或年薪值都是未知的。這兩個列都包含NULL。可以想像運行如下的查詢:

SELECT * FROM EMPLOYEES

WHERE GRADE <= SALARY;

此時,Indiana Jones應該出現在結果表中。因為NULL都是相等的,所以可以想像它們是能夠通過GRADE小於等於SALARY的檢查的。這其實是一個毫無疑義的查詢,但是並沒有關系。SQL允許進行這樣的比較,只要兩個列都是數字類型的。然而,Indiana Jones並沒有出現在查詢的結果中,為什麼?

正如我們早先提到過的,NULL表示未知的值(而不是象某些人所想像的那樣表示一個為NULL的值)。對於SQL來說意味著這個值是未知的,而只要這個值為未知,就不能將其與其他值比較(即使其他值也是NULL)。所以SQL允許除了在true 和false之外還有第三種類型的真值,稱之為「非確定」(unknown)值。

如果比較的兩邊都是NULL,整個斷言就被認為是非確定的。將一個非確定斷言取反或使用AND或OR與其他斷言進行合並之後,其結果仍是非確定的。由於結果表中只包括斷言值為「真」的行,所以NULL不可能滿足該檢查。從而需要使用特殊的操作符IS NULL和IS NOT NULL。

UPDATE語句

UPDATE語句允許用戶在已知的表中對現有的行進行修改。

例如,我們剛剛發現Indiana Jones的等級為16,工資為$40,000.00,我們可以通過下面的SQL語句對資料庫進行更新(並清除那些煩人的NULL)。

UPDATE EMPLOYEES

SET GRADE = 16, SALARY = 40000

WHERE FIRST_NAME = 'Indiana'

AND LAST_NAME = 'Jones';

上面的例子說明了一個單行更新,但是UPDATE語句可以對多行進行操作。滿足WHERE條件的所有行都將被更新。如果,你想讓Boston辦事處中的所有職員搬到New York,你可以使用如下語句:

UPDATE EMPLOYEES

SET BRANCH_OFFICE = 'New York'

WHERE BRANCH_OFFICE = 'Boston';

如果忽略WHERE子句,表中所有行中的部門值都將被更新為'New York'。

UPDATE語句的語法流圖如下面所示:

UPDATE table

SET column = value [{, column = value}]

[ WHERE predicate [ { logical-connector predicate}]];

DELETE語句

DELETE語句用來刪除已知表中的行。如同UPDATE語句中一樣,所有滿足WHERE子句中條件的行都將被刪除。由於SQL中沒有UNDO語句或是「你確認刪除嗎?」之類的警告,在執行這條語句時千萬要小心。如果決定取消Los Angeles辦事處並解僱辦事處的所有職員,這一卑鄙的工作可以由以下這條語句來實現:

DELETE FROM EMPLOYEES

WHERE BRANCH_OFFICE = 'Los Angeles';

如同UPDATE語句中一樣,省略WHERE子句將使得操作施加到表中所有的行。

DELETE語句的語法流圖如下面所示:

DELETE FROM table

[WHERE predicate [ { logical-connector predicate} ] ];

現在我們完成了數據操作語言(DML)的主要語句的介紹。我們並沒有對SQL能完成的所有功能進行說明。SQL還提供了許多的功能,如求平均值、求和以及其他對表中數據的計算,此外SQL還能完成從多個表中進行查詢(多表查詢,或稱之為連接)的工作。這種語言還允許你使用GRANT和REVOKE命令控制使用者的數據訪問許可權。

Visual C++中實現對圖像數據的讀取顯示
2003-12-9加入 來自yesky 作者劉 濤 4條評論 點擊3030次

在利用VC進行資料庫編程時,經常需要處理資料庫中的圖像數據,將該圖像從資料庫中讀取出來並顯示,圖像數據與文本欄位不同,它是作為OLE欄位在資料庫中存儲,通過數據集對象的成員變數自動交換得到的圖像數據,得到的數據並不能直接顯示,如何處理圖像數據,一直是資料庫編程中的一個難點,目前關於VC進行資料庫編程的資料不少,但很少涉及圖像數據的操作,筆者針對一現狀,結合自己開發的一個項目,解決了如何顯示資料庫中的圖像這一問題,本文以操作ACESS資料庫為例子,講解一下自己的實現思路,希望對愛好VC編程的朋友們有所幫助,以起到拋磚引玉的作用。

為了簡化問題,該資料庫的表中只有一個名為Images的OLE欄位,我使用DAO連接操作資料庫,讀取的圖像數據顯示在一個對話框上,至於使用ODBC、DAO還是ADO,這要根據具體情況而定,但無論使用哪一種,對圖像的顯示來說,實現的過程是大同小異的。由於篇幅有限,文章中對如何實現資料庫的連接不再作具體的說明,有興趣的讀者朋友可以參考VC資料庫編程的資料。實現過程中,首先定義一個CDaoRecordset的子類 CimageData如下:

class CimageData : public CDaoRecordset
{
public:
CimageData (CDaoDatabase* pDatabase = NULL);
DECLARE_DYNAMIC(CimageData)
file://{{AFX_FIELD(CimageData, CDaoRecordset)
CByteArray m_Images;//聲明位元組數組用來存放圖像數據
file://}}AFX_FIELD
// Overrides
// ClassWizard generated virtual function overrides
file://{{AFX_VIRTUAL(CimageData)
public:
virtual CString GetDefaultDBName();
virtual CString GetDefaultSQL();
virtual void DoFieldExchange(CDaoFieldExchange* pFX);
file://}}AFX_VIRTUAL

該類的實現為:

CimageData:: CimageData (CDaoDatabase* pdb)
: CDaoRecordset(pdb)
{
file://{{AFX_FIELD_INIT(CimageData)
m_nFields = 1;//資料庫的表中僅有一個欄位
file://}}AFX_FIELD_INIT
m_nDefaultType = dbOpenDynaset;//以動態集方式打開資料庫
}
CString CimageData::GetDefaultDBName()
{
return _T("E:\\IMAGES.mdb");//默認的ACESS資料庫在E盤,名為IMAGES
}

CString CimageData::GetDefaultSQL()
{
return _T("[Table]");//默認打開資料庫中名為"Table"的表
}

void CimageData::DoFieldExchange(CDaoFieldExchange* pFX)
{
file://{{AFX_FIELD_MAP(CimageData)
pFX->SetFieldType(CDaoFieldExchange::outputColumn);
DFX_Binary(pFX, _T("[Images]"), m_Images);//以二進制方式在Images欄位和m_Images變數間交換數據
file://}}AFX_FIELD_MAP
}

有了該類,就可以定義相應的對象來與資料庫中的圖像欄位交換數據,下面定義的函數GetImageData()說明了如何根據讀取的OLE欄位數據生成待顯示的圖像,需要注意的是該函數中使用的CBitmap類的變數Bitmap是預定義的一個全局變數:

BOOL CImageDlg:: GetImageData(CByteArray & DBArray)
{
CByteArray Array;
Array.Copy( DBArray);
int HeaderLen = 78 + sizeof(BITMAPFILEHEADER); file://確定圖像頭信息的起始位置
Array.RemoveAt( 0, HeaderLen ); // 移動到圖像頭信息的起始位置
BITMAPINFOHEADER &bmiHeader = *(LPBITMAPINFOHEADER)Array.GetData() ;
BITMAPINFO &bmInfo = *(LPBITMAPINFO)Array.GetData() ;
file://得到圖像數據的頭信息
int nColors=bmiHeader.biClrUsed ? bmiHeader.biClrUsed : 1 << bmiHeader.biBitCount;
file://確定圖像的顏色數
LPVOID lpDIBBits;
if( bmInfo.bmiHeader.biBitCount > 8 )
lpDIBBits=(LPVOID)((LPDWORD)(bmInfo.bmiColors+bmInfo.bmiHeader.biClrUsed)+
((bmInfo.bmiHeader.biCompression == BI_BITFIELDS) ? 3 : 0));
else
lpDIBBits = (LPVOID)(bmInfo.bmiColors + nColors);
file://得到圖像各個像素的具體數據
CClientDC dc(NULL);
HBITMAP hBmp = CreateDIBitmap( dc.m_hDC,
&bmiHeader,
CBM_INIT,

⑻ 在oracle資料庫中,影響優化器生成執行計劃的因素有哪些

9i前的RBO不熟,也就不敢妄言。

關於10g後的CBO,談下我的理解。
首先,影響優化器執行計劃最主要的因素是統計信息。優化器根據統計信息情況,單表上選擇全表掃描還是索引。表聯接方式上選擇嵌套,哈希還是合並排序。不同的統計信息將會生成不同的執行計劃。很多時候發現之前跑的好好的sql,突然變慢了,多數情況下重新收集下統計信息便解決了。統計信息這一塊需要關注直方圖這一塊,很多生產環境都存在數據傾斜的情況,如若未准確收集直方圖,那麼生成的執行計劃便有失偏頗。
--------------------------------------------------------------------------------------------------------------------
第二點,sql語句的寫法問題。比如欄位上有索引,但謂詞條件寫成like '%xxx%'方式,將導致該欄位上索引不可用。比如表連接方式用<>之類,將無法使用hash join。其實這些與其說是寫法問題,倒不如說是oracle自身有一定的編碼規則,符合該規則條件,方可用到index之類。
--------------------------------------------------------------------------------------------------------------------
第三點,也是最無奈的一點,CBO的自身缺陷問題。很多時候,統計信息是最新的,也符合寫法規范,但CBO就是不生成我們所期待的執行計劃。這個時候,通常要改變sql語句的邏輯寫法,比如標量子查詢可否換成左連接,用with as替換一些子查詢等,以期待oracle生成更高效率的執行計劃。另外,就是使用hint來迫使CBO生成你所期待的執行計劃,但CBO不一定就範。

談及缺陷,也不算不上缺陷,尤其是表越多,將會出現更多排列的可能性,oracle不可能將所有執行計劃都生成出來然後選擇一個最優的,定是按照一定比例擇取,但具體多少,我不詳。也就是說,DBA完全可以憑借自身對你所管理的oracle了解程度,給sql語句指定一個最優的執行計劃。
--------------------------------------------------------------------------------------------------------------------
其他還有一些細節問題,可在日常工作中慢慢體會,cbo還是相當強大的。

⑼ 一次向一個表中插入多條數據,SQL應該如何樣寫效率最好

------解決方案--------------------------------------------------------你那些 SELECT xx,xx,xx,xx,xx 是從幾個表裡查出來?如果是一個表的話直接用一個SELECT把所有的查出來,一次性插進去,就不需要用UNION ALL了,如果從不同的表的話可以那樣做.
------解決方案-------------------------------------------------------- 分開寫快
但可放在一起執行.
------解決方案--------------------------------------------------------C# code Sqlconnection connection=new SqlConnection(); string sql="INSERT Biao SELECT xx,xx,xx,xx,xx UNION ALL SELECT xx,xx,xx,xx,xx UNION ALL SELECT xx,xx,xx,xx,xx UNION ALL SELECT xx,xx,xx,xx,xx"; SqlComand command=new SqlCommand(sql,connection); connection.Open(); int count=command.ExecuteNonQuery(); connection.Close();
------解決方案--------------------------------------------------------探討分開寫快
但可放在一起執行.
------解決方案--------------------------------------------------------都差不對!!
------解決方案--------------------------------------------------------存儲過程效率高
------解決方案--------------------------------------------------------都差不多
------解決方案--------------------------------------------------------批量的搞法,可以這樣,一次insert一條,用 insert into table(...) values(...) 的方法,可以積攢到 1000 條左右的時候再去提交,這樣比插入一條提交一條的速度要快一些,但不是很明顯。
------解決方案--------------------------------------------------------不是太影響速度,隨意吧
------解決方案--------------------------------------------------------探討分開寫快
但可放在一起執行.
------解決方案--------------------------------------------------------探討分開寫快
但可放在一起執行.
------解決方案--------------------------------------------------------SQL code declare @x int set @x=0; while (@x

⑽ my sql如何從上一次查詢的位置繼續往下查詢;php 實現:添加好友,對方通過才能聊天

  1. 你可以在表中添加一個欄位,設2個值:0和1. 0表示這條信息未讀,1為已讀。然後你查詢資料庫的時候就查未讀的,而且按時間的先後順序查詢,查到的第一條就是你上次看的最後一條了。

  2. 添加好友,這個和1原理差不多,比如你有一個好友表,當你添加對方為好友的時候,在這個表添加一條記錄,表示他是你的好友,那麼你們就可以聊天了。如果你嫌麻煩,你可以在你的用戶表中添加一個欄位,用來存好友的id,以逗號隔開,讀取的時候就分割成數組,然後聊天的時候就判斷對方的id是不是存在數組中,有就是好友,沒有提示添加好友。