• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      數(shù)據(jù)庫(kù)中“寫錯(cuò)誤”的運(yùn)用

      2016-04-11 13:44:58周進(jìn)平宋紹云
      電腦知識(shí)與技術(shù) 2016年4期
      關(guān)鍵詞:數(shù)據(jù)庫(kù)

      周進(jìn)平+宋紹云

      摘要:數(shù)據(jù)庫(kù)的安全機(jī)制保障了數(shù)據(jù)庫(kù)中數(shù)據(jù)的完整性,如果不允許為空的數(shù)據(jù)項(xiàng)信息不全時(shí)無(wú)法寫入數(shù)據(jù)。利用數(shù)據(jù)庫(kù)的這一特點(diǎn),用軟件控制數(shù)據(jù)庫(kù)的寫錯(cuò)誤,從而實(shí)現(xiàn)了軟件試用限制的功能。

      關(guān)鍵詞:數(shù)據(jù)庫(kù);寫錯(cuò)誤;試用限制a

      中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)04-0032-02

      在開(kāi)發(fā)信息管理軟件時(shí),我們常常在試用版中進(jìn)行試用時(shí)間的限制,在信息增加、修改時(shí)進(jìn)行判斷試用時(shí)間到了就跳過(guò)保存。但是如果到期了,修改一下電腦系統(tǒng)日期還可以再接著使用,使用試用次數(shù)限制的方式也容易通過(guò)破解軟件跟蹤到跳轉(zhuǎn)點(diǎn),運(yùn)用數(shù)據(jù)庫(kù)自己的安全機(jī)制,在數(shù)據(jù)庫(kù)寫入出錯(cuò)時(shí)信息就不能保存這一特點(diǎn),可以更巧妙地實(shí)現(xiàn)軟件試用功能的限制。

      1 意外的發(fā)現(xiàn)

      曾經(jīng)在寫一個(gè)信息管理系統(tǒng)時(shí),使用的是ACCESS數(shù)據(jù)庫(kù),功能全部測(cè)試正常,刻錄光盤交付使用,從光盤復(fù)制到電腦上時(shí)出現(xiàn)了一個(gè)問(wèn)題,新增一條記錄時(shí)系統(tǒng)提示新增成功,但是查詢信息時(shí)卻看不到新增加的信息,只有以前錄入的信息可以正常查詢。軟件功能在我的電腦上已經(jīng)測(cè)試過(guò)多次了,一直都是正常的,為什么到了這臺(tái)電腦上卻不行了?我把這個(gè)模塊的代碼是檢查了三遍也沒(méi)發(fā)現(xiàn)有什么錯(cuò)誤,問(wèn)題出在哪里?最后才發(fā)現(xiàn)數(shù)據(jù)庫(kù)文件的屬性在通過(guò)光盤復(fù)制到新電腦的磁盤時(shí)變成了只讀,把數(shù)據(jù)庫(kù)文件的屬性中的只讀取消,再次測(cè)試系統(tǒng),功能全部正常。這個(gè)問(wèn)題讓我花了半天的時(shí)間,過(guò)后一想,這個(gè)問(wèn)題可以加于利用一下,我在程序代碼中增加一小段代碼來(lái)控制數(shù)據(jù)庫(kù)文件的只讀屬性,這樣就可以給軟件設(shè)置全功能的試用時(shí)間了。

      db="mdb/xxpj@jksmdb.asa" '數(shù)據(jù)庫(kù)文件的位置

      sysyy=15 '2015年開(kāi)始,試用185天

      sysmmdd=now()

      if datediff("d",Cdate("20"&sysyy&"-"&sysmmdd),date())>185 then

      Dim fso,f

      Set fso = CreateObject("Scripting.FileSystemObject")

      Set f = fso.GetFile( Server.MapPath(""&db&""))

      if f.attributes <> 1 then

      f.attributes = 1

      end if

      end if

      通過(guò)上面的幾行代碼,在試用時(shí)間結(jié)束時(shí),將數(shù)據(jù)庫(kù)文件的屬性改為只讀,這樣系統(tǒng)就只有查詢功能了,任何新增、修改信息在保存時(shí)都是提示保存成功,但信息卻不能寫到數(shù)據(jù)庫(kù)中,回到查詢窗口自然就找不到剛才操作的信息了,這時(shí)再修改電腦系統(tǒng)日期也沒(méi)用了,因數(shù)據(jù)庫(kù)的屬性已經(jīng)改成只讀了,這樣的方式在利用破解軟件跟蹤時(shí),程序是按順序執(zhí)行下去的,保存指令也執(zhí)行了。

      2 擴(kuò)展一下

      這個(gè)辦法對(duì)于SQL Server或MySql數(shù)據(jù)庫(kù)有用嗎?直接操作數(shù)據(jù)庫(kù)文件來(lái)修改文件屬性是不可能的,查詢了一下百度,要實(shí)現(xiàn)SQL Server數(shù)據(jù)庫(kù)的只讀還是可行的,可以使用如下命令來(lái)設(shè)置sql server數(shù)據(jù)庫(kù)的只讀特性。

      以下是以SQL Server的mydb數(shù)據(jù)庫(kù)為例來(lái)說(shuō)明的:

      USE [mydb]

      GO

      ALTER DATABASE [TESTDB] SET READ_ONLY WITH NO_WAIT

      GO

      對(duì)于MySql數(shù)據(jù)庫(kù)卻不太好實(shí)現(xiàn)了,flush tables with read lock或者set global read_only=1可以修改數(shù)據(jù)庫(kù)的屬性,但擁有super權(quán)限的仍然可以寫操作,有沒(méi)有更好的辦法來(lái)實(shí)現(xiàn)呢?一直沒(méi)能找到實(shí)現(xiàn)的辦法。

      3 找到新辦法

      這幾天在開(kāi)發(fā)一個(gè)網(wǎng)絡(luò)報(bào)名信息管理系統(tǒng)時(shí)使用的是SQL Server的數(shù)據(jù)庫(kù),在設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí)有一個(gè)表的字段較多,在以前的ACCESS數(shù)據(jù)庫(kù)做過(guò)就想偷懶一下,由ACCESS數(shù)據(jù)庫(kù)導(dǎo)到SQL Server數(shù)據(jù)庫(kù)中來(lái),ok,成功了。在完成模塊代碼后測(cè)試功能,糟了,新增數(shù)據(jù)寫不到數(shù)據(jù)庫(kù)中了,檢查了程序代碼也沒(méi)發(fā)現(xiàn)問(wèn)題,想到以前遇到過(guò)這個(gè)問(wèn)題,就去查看數(shù)據(jù)庫(kù)的屬性,正常呀。為什么不能增加記錄呢?修改也不行。頭大了。只好去求助百度了,可是把百度上解決SQL Server數(shù)據(jù)庫(kù)不能寫的辦法都試了一遍,問(wèn)題還是依舊。只好從頭來(lái)檢查修改程序代碼,沒(méi)用。再來(lái)檢查數(shù)據(jù)庫(kù),檢查到這個(gè)由ACCESS數(shù)據(jù)庫(kù)導(dǎo)入的表時(shí)發(fā)現(xiàn),除了編號(hào)字段不允許為空以外,還有一個(gè)可以為空的字段不知什么原因也被設(shè)置成了不允許為空,因?yàn)樵诔绦蛑行略鲇涗洉r(shí)這個(gè)字段是可以不填的,所以在新增記錄時(shí)沒(méi)有填寫這個(gè)數(shù)據(jù)項(xiàng),保存數(shù)據(jù)時(shí)數(shù)據(jù)庫(kù)就認(rèn)為出錯(cuò),導(dǎo)致新增記錄無(wú)效,也就出現(xiàn)了系統(tǒng)開(kāi)發(fā)中的問(wèn)題。問(wèn)題解決了。

      設(shè)置一個(gè)無(wú)關(guān)緊要的字段為不允許為空,在新增記錄時(shí)又不填寫這個(gè)字段時(shí)就會(huì)導(dǎo)致數(shù)據(jù)庫(kù)新增失敗,這個(gè)辦法用來(lái)解決去年想實(shí)現(xiàn)的問(wèn)題不是挺好的嗎!

      UPDATE xjxxb SET beizhu = "'" WHERE beizhu = ""

      ALTER table xjxxb ALTER column beizhu varchar(100) not null

      注意修改前需要把這個(gè)字段中為空的那些信息填個(gè)字符“”進(jìn)去,修改時(shí)一定要帶上字段類型,不然是修改不成功的。

      兩行代碼就實(shí)現(xiàn)了我想要的功能,而且這個(gè)辦法在每個(gè)類型的數(shù)據(jù)庫(kù)中都可以實(shí)現(xiàn),比起設(shè)置數(shù)據(jù)庫(kù)屬性為只讀要方便可行。

      4 結(jié)束語(yǔ)

      沒(méi)想到在遇到問(wèn)題時(shí)卻發(fā)現(xiàn)了原來(lái)問(wèn)題的解決辦法。我們都怕出現(xiàn)問(wèn)題,都要解決問(wèn)題,但是我們可以自己制造問(wèn)題,利用問(wèn)題來(lái)解決問(wèn)題,從而實(shí)現(xiàn)我們想要的功能。

      參考文獻(xiàn):

      [1] 蘇俊.數(shù)據(jù)庫(kù)基礎(chǔ)教程[M]. 北京:中國(guó)人民大學(xué)出版社,2004.

      [2] SQL Server 2000基礎(chǔ)[M]. 北京: 紅旗出版社,2005.

      [3] 范德蘭斯. SQL完全手冊(cè)[M]. 北京: 電子工業(yè)出版社,2007.

      [4] 王向云,王嶸,張琨.SQL從入門到精通[M]. 北京: 電子工業(yè)出版社,2009.

      猜你喜歡
      數(shù)據(jù)庫(kù)
      數(shù)據(jù)庫(kù)
      數(shù)據(jù)庫(kù)
      兩種新的非確定數(shù)據(jù)庫(kù)上的Top-K查詢
      數(shù)據(jù)庫(kù)
      數(shù)據(jù)庫(kù)
      數(shù)據(jù)庫(kù)
      數(shù)據(jù)庫(kù)
      數(shù)據(jù)庫(kù)
      數(shù)據(jù)庫(kù)
      數(shù)據(jù)庫(kù)
      广饶县| 五寨县| 静宁县| 清流县| 连云港市| 安宁市| 玉田县| 朔州市| 芒康县| 冷水江市| 叶城县| 那坡县| 故城县| 邯郸市| 井研县| 塘沽区| 连州市| 丹江口市| 荔波县| 兴安盟| 尤溪县| 连江县| 镇沅| 光泽县| 红安县| 旬邑县| 平顺县| 凭祥市| 浏阳市| 武汉市| 巨鹿县| 蒲江县| 福贡县| 昌平区| 公主岭市| 长海县| 长岭县| 县级市| 华容县| 杂多县| 宜兰县|