欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

Access與Sql Server之ASP代碼比較

admin
2010年7月22日 22:59 本文熱度 5337
[p][align=left]后臺(tái)數(shù)據(jù)庫(kù): [microsoft access] 與 [microsoft sql server] 更換之后,asp代碼應(yīng)注意要修改的一些地方:[/align][/p]
[p][align=left][br][一]連接問(wèn)題(舉例) [br][microsoft access] [br]constr = "dbq=c:\data\clwz.mdb; driver={microsoft access driver (*.mdb)}" [br][microsoft sql server] [br]constr = "driver={sql server};server=host;database=mydata;uid=sa;pwd="[/align][/p]
[p][align=left][二]相似函數(shù)(舉例)[/align][/p]
[p][align=left][1]datediff(datepart, startdate, enddate) [br]其中“datepart”參數(shù)可選項(xiàng)如下: [br]設(shè)置 描述 [br]———————————— [br][microsoft access] [br]年 yyyy [br]季度 q [br]月 m [br]一年的日數(shù) y [br]日 d [br]一周的日數(shù) w [br]周 ww [br]小時(shí) h [br]分鐘 n [br]秒 s[/align][/p]
[p][align=left][microsoft sql server] [br]year yy, yyyy [br]quarter qq, q [br]month mm, m [br]dayofyear dy, y [br]day dd, d [br]week wk, ww [br]hour hh [br]minute mi, n [br]second ss, s [br]millisecond ms[/align][/p]
[p][align=left]-------------------------[/align][/p]
[p][align=left]基本上差不多,但注意的是在寫(xiě)的時(shí)候, [br][microsoft access]要加引號(hào),如:datediff('d',enddate,'2004/08/01') [br][microsoft sql server]則不需要,如:datediff(d,enddate,'2004/08/01')[/align][/p]
[p][align=left][2][microsoft access]中可用如cstr等轉(zhuǎn)數(shù)據(jù)類(lèi)型函數(shù),而 [br][microsoft sql server]中則用convert或cast函數(shù),如: [br]convert(varchar,[amount])等。[/align][/p]
[p][align=left][3][microsoft sql server] [br]取當(dāng)前時(shí)間用getdate等等...[/align][/p]
[p][align=left][三]語(yǔ)句 [br][microsoft sql server] [br]可以用 [br]case [br]when then [br]when then [br]... [br]else [br]end [br]語(yǔ)句,而 [br][microsoft access] [br]不支持。 [br][microsoft access]也不支持between語(yǔ)句 [br][microsoft sql server]則可以這樣寫(xiě): [br][date] between @date1 and @date2 [br][四]查詢表 [br][microsoft sql server] [br]可三個(gè)及以上表join查詢,而 [br][microsoft access] [br]好像只能兩個(gè)表聯(lián)接查詢(待權(quán)威確認(rèn)), [br]而且[microsoft sql server]可用“*=”和“=*”連接符。[五]除零問(wèn)題 [br][microsoft access] [br]在碰到除數(shù)為零時(shí),自動(dòng)丟掉相關(guān)記錄,而 [br][microsoft sql server] [br]則會(huì)報(bào)錯(cuò),且查詢中止。刪除代碼: [br][microsoft access] [br]可以這樣寫(xiě):delete * from [table] [br][microsoft sql server] [br]只能這樣寫(xiě):delete from [table] [br]多*會(huì)報(bào)錯(cuò) [br]_____________________________________ [br]當(dāng)前日期: [br][microsoft access] [br]用date() [br][microsoft sql server] [br]用getdate()如果數(shù)據(jù)庫(kù)可能會(huì)更換類(lèi)型的話,可以 [br]在asp代碼中加上如這樣: [br]if instr(constr,"microsoft access") > 0 then [br]sqlstr=[microsoft access][sql代碼] [br]else [br]sqlstr=[microsoft sql server][sql代碼] [br]end if [br](constr--連接字符串) [br]這樣即使改了數(shù)據(jù)庫(kù),也不用改數(shù)據(jù)庫(kù)查詢更新代碼了。 [br]再加:access中有true、false的字段記錄,而sql里只有smallint,對(duì)應(yīng)如果在access里有“字段名=true”的,在sql里要改成“字段名=1” [br]網(wǎng)上大部分的免費(fèi)asp程序使用的是access數(shù)據(jù)庫(kù)。但是access數(shù)據(jù)庫(kù)作為一個(gè)中小型的單機(jī)數(shù)據(jù)庫(kù)系統(tǒng),在承擔(dān)訪問(wèn)量、數(shù)據(jù)量大的網(wǎng)站應(yīng)用時(shí),往往就不堪重負(fù)了。一般認(rèn)為,超過(guò)50m的access數(shù)據(jù)庫(kù)性能就開(kāi)始明顯下降,超過(guò)100m以后,出錯(cuò)、運(yùn)行慢的問(wèn)題會(huì)更加突出。盡管可以如動(dòng)網(wǎng)7.0以后那樣,從程序的角度盡量?jī)?yōu)化以圖提高性能,但是不能從根本上解決問(wèn)題。 [br]這時(shí)也許使用微軟的sql server數(shù)據(jù)庫(kù)就是最可能的辦法,當(dāng)然也可以使用其它的如oracle、mysql等等,但是作為改寫(xiě)來(lái)說(shuō),由于同為微軟的產(chǎn)品,改寫(xiě)成sql server應(yīng)該是最省力的辦法。[/align][/p]
[p][align=left]一、改寫(xiě)前提:[/align][/p]
[p][align=left]系統(tǒng)已經(jīng)安裝好sql server2000并且打上了sp3補(bǔ)丁;安裝好office套件里面的access;使用一個(gè)支持純文本編輯并且?guī)в行刑?hào)顯示的編輯器,推薦ultra edit,當(dāng)然也可以使用frontpage2003,不過(guò)以前的版本行號(hào)顯示不太好用。[/align][/p]
[p][align=left]個(gè)人能力要求:會(huì)基本的asp語(yǔ)法、access數(shù)據(jù)庫(kù)的操作、sqlserver企業(yè)管理器的基本操作。[/align][/p]
[p][align=left]二、數(shù)據(jù)庫(kù)的準(zhǔn)備[/align][/p]
[p][align=left]一般來(lái)說(shuō)有兩種情況: [br]1、程序提供了sql數(shù)據(jù)庫(kù)格式:有一個(gè)mdf文件,或者提供了創(chuàng)建sql數(shù)據(jù)庫(kù)的sql腳本文件(后綴名為.sql)。 [br]如果有mdf文件,可以用企業(yè)管理器直接附加上,如果提供的是sql腳本文件,那么就先用企業(yè)管理器自己創(chuàng)建一個(gè)sql數(shù)據(jù)庫(kù),然后數(shù)據(jù)庫(kù)用企業(yè)管理器中的查詢分析器運(yùn)行這個(gè)腳本創(chuàng)建數(shù)據(jù)庫(kù)表。 [br]這樣建立的數(shù)據(jù)庫(kù)基本不用再去改寫(xiě)什么了。 [br]2、更多的是沒(méi)有提供sql數(shù)據(jù)庫(kù)或腳本文件的,這時(shí),就要自己來(lái)做這一切了,這也是我們這個(gè)帖子主要解決的問(wèn)題。一般這樣的程序會(huì)提供一個(gè)access數(shù)據(jù)庫(kù),這樣你就用企業(yè)管理器導(dǎo)入access數(shù)據(jù)庫(kù),導(dǎo)入后需要改寫(xiě)下面一些東西: [br]對(duì)照原來(lái)的access,改寫(xiě)下面的部分: [br](1)sql數(shù)據(jù)庫(kù)表是沒(méi)有自動(dòng)字段的,因此原來(lái)access中的自動(dòng)字段被轉(zhuǎn)換成了普通字段,需要手工改成標(biāo)識(shí)類(lèi)型,增量為1。 [br](2)所有的時(shí)間字段,如果定義了默認(rèn)值,那么原來(lái)肯定是now(),需要改成getdate() [br](3)原來(lái)字段的默認(rèn)值一般都不會(huì)自動(dòng)引入,需要對(duì)照原表的字段手工添加。 [br](4)由于數(shù)據(jù)庫(kù)的不同,access和sql的字段類(lèi)型很多轉(zhuǎn)換后就變化了,比如原來(lái)的《是否》字段會(huì)被轉(zhuǎn)換成bit或者int,備注字段被轉(zhuǎn)換成longtext,text字段轉(zhuǎn)換成varchar等等,一般來(lái)說(shuō)不會(huì)影響程序運(yùn)行,如果有問(wèn)題,我們?cè)谙旅娴某绦蚋膶?xiě)部分再說(shuō)。 [br](5)如果你要用一個(gè)for sql的程序,里面用到了存儲(chǔ)過(guò)程,那么你應(yīng)該有這個(gè)程序本身建立sql數(shù)據(jù)庫(kù)的方法:有其本身的sql數(shù)據(jù)庫(kù)文件,或者sql腳本;如果沒(méi)有的話,采用導(dǎo)入access數(shù)據(jù)庫(kù)的方式是無(wú)法建立存儲(chǔ)過(guò)程的,這樣你最好放棄這個(gè)for sql的程序版本,使用同樣版本的for access的程序,導(dǎo)入access數(shù)據(jù)庫(kù),然后用下面的改寫(xiě)方法自己改成sql版本的程序。[/align][/p]
[p][align=left]三、連接字符串的改寫(xiě)[/align][/p]
[p][align=left]可參考動(dòng)網(wǎng)的這段,分別是針對(duì)access和sql的 [br]dim connstr [br]if issqldatabase = 1 then [br]'sql數(shù)據(jù)庫(kù)連接參數(shù):數(shù)據(jù)庫(kù)名、用戶密碼、用戶名、連接名(本地用local,外地用ip) [br]dim sqldatabasename,sqlpassword,sqlusername,sqllocalname [br]sqldatabasename = "dvbbs7" [br]sqlpassword = "" [br]sqlusername = "dvbbs" [br]sqllocalname = "(local)" [br]connstr = "provider = sqloledb; user id = " & sqlusername & "; password = " & sqlpassword & "; initial catalog = " & sqldatabasename & "; data source = " & sqllocalname & ";" [br]else [br]'免費(fèi)用戶第一次使用請(qǐng)修改本處數(shù)據(jù)庫(kù)地址并相應(yīng)修改data目錄中數(shù)據(jù)庫(kù)名稱(chēng),如將dvbbs6.mdb修改為dvbbs6.asp [br]db = "data/fengerqingqing.mdb" [br]connstr = "provider = microsoft.jet.oledb.4.0;data source = " & server.mappath(db) [br]end if [br]on error resume next [br]set conn = server.createobject("adodb.connection") [br]conn.open connstr[/align][/p]
[p][align=left]當(dāng)然你使用sql的話,有關(guān)access的使用語(yǔ)句可以刪除,就是else后面到on error resume next前面,變成這樣:[/align][/p]
[p][align=left]dim connstr [br]'sql數(shù)據(jù)庫(kù)連接參數(shù):數(shù)據(jù)庫(kù)名、用戶密碼、用戶名、連接名(本地用local,外地用ip) [br]dim sqldatabasename,sqlpassword,sqlusername,sqllocalname [br]sqldatabasename = "dvbbs7" [br]sqlpassword = "" [br]sqlusername = "dvbbs" [br]sqllocalname = "(local)" [br]connstr = "provider = sqloledb; user id = " & sqlusername & "; password = " & sqlpassword & "; initial catalog = " & sqldatabasename & "; data source = " & sqllocalname & ";" [br]on error resume next [br]set conn = server.createobject("adodb.connection") [br]conn.open connstr[/align][/p]
[p][align=left]也可以簡(jiǎn)潔一些,寫(xiě)成這樣: [br]set conn = server.createobject("adodb.connection") [br]conn.open "provider = sqloledb; user id = sa; password = 1234567; initial catalog = dvbbs7; data source = (local);" [br]里面的數(shù)據(jù)庫(kù)名稱(chēng)、數(shù)據(jù)源、用戶、密碼根據(jù)自己的實(shí)際情況改寫(xiě)一下。[/align][/p]
[p][align=left]四、程序的改寫(xiě)[/align][/p]
[p][align=left]這也有兩種情況 [br]1、如果你幸運(yùn),拿到的是for sql的程序,那么如果上面的數(shù)據(jù)庫(kù)建立過(guò)程沒(méi)有遇到麻煩,程序基本上就可以運(yùn)行了,出錯(cuò)的話,只是程序本身的bug,如何修改不是這個(gè)帖子討論的內(nèi)容,就不贅述了。 [br]2、大多數(shù)情況,程序本身是for access的,與for sql的程序差別主要是程序中使用到的sql查詢語(yǔ)句。注意,sql查詢語(yǔ)句是數(shù)據(jù)庫(kù)應(yīng)用不可缺少的部分,不管是for sql還是for aceess的程序使用的語(yǔ)法大體差不多,但是有一些微妙的差別,正是這些差別,造成了程序的不通用,也是我們需要修改的主要內(nèi)容。這樣一般要修改的部分如下: [br](1)時(shí)間函數(shù)的問(wèn)題:sql數(shù)據(jù)庫(kù)的時(shí)間函數(shù)與access不同,最常見(jiàn)的是取現(xiàn)在時(shí)間的函數(shù),access是now(),sql是getdate()。因此凡是在where子句中使用了now()的地方都要改成getdate();注意,now()函數(shù)在asp程序本身也要使用,凡是不在數(shù)據(jù)庫(kù)查詢或執(zhí)行語(yǔ)句中使用的now()函數(shù)千萬(wàn)不要改。 [br](2)時(shí)間比較函數(shù):datediff('d','時(shí)間1',‘時(shí)間2’)這是access查詢用的格式,sql中這些引號(hào)都要去掉,同時(shí)時(shí)間格式的前后可能加上了#,這也要去掉。同樣這也是指在sql語(yǔ)句中的,在asp語(yǔ)句中的要保持原樣。 [br](3)空值的表示:在access中,判斷空值一般用是否=""來(lái)表示,但是這在sql中往往出錯(cuò),如果遇到出錯(cuò)的問(wèn)題或者程序運(yùn)行不正常,可以改成如這樣判斷:where (name is null) [br](4)真假值判斷:access中可以用=true、=false來(lái)判斷,但是在sql中就會(huì)出錯(cuò),因此在sql查詢或執(zhí)行語(yǔ)句中這類(lèi)判斷要分別改成=1、=0。注意一點(diǎn):有些程序雖然寫(xiě)成=“true”,但是由于有引號(hào),所以這個(gè)字段是字符類(lèi)型的,你不能改成=1,保持原樣即可。[/align][/p]
[p][align=left]以上是比較常見(jiàn)的改寫(xiě)的地方,還有一些不太常見(jiàn),如果遇到了可以在此回帖討論。[/align][/p]
[p][align=left]五、程序的調(diào)試[/align][/p]
[p][align=left]前面推薦使用帶有行號(hào)的編輯器,是因?yàn)樯鲜龅母膶?xiě)不大可能是直接搜索程序源碼來(lái)做,很難找全。 [br]我采取的方式一般這樣:數(shù)據(jù)庫(kù)改寫(xiě)完成,直接調(diào)試程序,出錯(cuò)后,看看出錯(cuò)的提示,找到相應(yīng)文件的代碼行,但是根源往往不是那行,比如出錯(cuò)的語(yǔ)句是:conn.execute(sql),但是這句本身是沒(méi)有錯(cuò)的,錯(cuò)誤原因是里面的這個(gè)sql字符串,那就向上看這個(gè)sql字符串是如何生成的,按照上面所說(shuō)的程序修改辦法修改。[/align][/p]
[p][align=left]數(shù)據(jù)庫(kù)導(dǎo)入以后,自動(dòng)增加字段需要重寫(xiě),所有的數(shù)字類(lèi)型需要增加長(zhǎng)度,最好用decimal。[/align][/p]
[p][align=left]所有的默認(rèn)值都丟失了。主要是數(shù)字類(lèi)型和日期類(lèi)型。[/align][/p]
[p][align=left]所有now(),time(),date()要改成getdate()。[/align][/p]
[p][align=left]所有datediff('d', time1, time2)要改成datediff(day, time1, time2)[/align][/p]
[p][align=left]有可能一些true/false類(lèi)型不能使用,要變?yōu)?/0。[/align][/p]
[p][align=left]備注類(lèi)型要通過(guò)cast(column as varchar)來(lái)使用。[/align][/p]
[p][align=left]cursortype要改成1,也就是打開(kāi)數(shù)據(jù)庫(kù)時(shí)要給出第一個(gè)數(shù)字參數(shù)為1,否則記錄可能顯示不完整。[/align][/p]
[p][align=left]isnull(rowname)要改成rowname = null[/align][/p]
[p][align=left]access的數(shù)據(jù)庫(kù)中的自動(dòng)編號(hào)類(lèi)型在轉(zhuǎn)化時(shí),sql server并沒(méi)有將它設(shè)為自動(dòng)編號(hào)型,我們需在sql創(chuàng)建語(yǔ)句中加上identity,表示自動(dòng)編號(hào)![/align][/p]
[p][align=left]轉(zhuǎn)化時(shí),跟日期有關(guān)的字段,sql server默認(rèn)為smalldatetime型,我們最好將它變?yōu)閐atetime型,因?yàn)閐atetime型的范圍比smalldatetime型大。有時(shí)用smalldatetime型時(shí),轉(zhuǎn)化失敗,而用datetime型時(shí),轉(zhuǎn)化成功。[/align][/p]
[p][align=left]對(duì)此兩種數(shù)據(jù)庫(kù)進(jìn)行操作的sql語(yǔ)句不全相同,例如:在對(duì)access數(shù)據(jù)庫(kù)進(jìn)行刪除紀(jì)錄時(shí)用:"delete * from user where id=10",而對(duì)sql server數(shù)據(jù)庫(kù)進(jìn)行刪除是用:"delete user where id=10".[/align][/p]
[p][align=left]日期函數(shù)不相同,在對(duì)access數(shù)據(jù)庫(kù)處理中,可用date()、time()等函數(shù),但對(duì)sql server數(shù)據(jù)庫(kù)處理中,只能用datediff,dateadd等函數(shù),而不能用date()、time()等函數(shù)。[/align][/p]
[p][align=left]在對(duì)access數(shù)據(jù)庫(kù)處理中,sql語(yǔ)句中直接可以用一些vb的函數(shù),像cstr()函數(shù),而對(duì)sql server數(shù)據(jù)庫(kù)處理中,卻不能用。 [br]下表比較了microsoftaccess數(shù)據(jù)庫(kù)(microsoftaccess數(shù)據(jù)庫(kù):數(shù)據(jù)和對(duì)象(如表、查詢或窗體)組成的集合,與特定的主題或用途有關(guān)。microsoftjet數(shù)據(jù)庫(kù)引擎用于管理數(shù)據(jù)。)和microsoftaccess項(xiàng)目(microsoftaccess項(xiàng)目:與microsoftsqlserver數(shù)據(jù)庫(kù)連接且用于創(chuàng)建客戶/服務(wù)器應(yīng)用程序的access文件。項(xiàng)目文件中不包含任何數(shù)據(jù)或基于數(shù)據(jù)定義的對(duì)象(如表或視圖)。)的數(shù)據(jù)類(lèi)型(數(shù)據(jù)類(lèi)型:決定字段可擁有的數(shù)據(jù)類(lèi)型的字段特征。數(shù)據(jù)類(lèi)型包括boolean、integer、long、currency、single、double、date、string和variant(默認(rèn)))。[/align][/p]
[p][align=left][br]microsoftaccess數(shù)據(jù)類(lèi)型sqlserver數(shù)據(jù)類(lèi)型 [br]是/否(“是/否”數(shù)據(jù)類(lèi)型:一種字段數(shù)據(jù)類(lèi)型,用于只有兩種可能值(如是或否、true或false)的字段。不允許有null值。)bit(bit數(shù)據(jù)類(lèi)型:在access項(xiàng)目中,一種存儲(chǔ)值為1或0的數(shù)據(jù)類(lèi)型。接受1和0以外的整數(shù)值,但總是將其解釋為1。) [br]數(shù)字(“數(shù)字”數(shù)據(jù)類(lèi)型:microsoftaccess數(shù)據(jù)庫(kù)中的一種字段數(shù)據(jù)類(lèi)型,用于將在數(shù)學(xué)運(yùn)算中使用的數(shù)值數(shù)據(jù)。但是,若要顯示或計(jì)算貨幣值,則應(yīng)使用“貨幣”數(shù)據(jù)類(lèi)型。)(字節(jié))tinyint(tinyint數(shù)據(jù)類(lèi)型:access項(xiàng)目中的一種占一個(gè)字節(jié)(8位)的數(shù)據(jù)類(lèi)型,用于存儲(chǔ)從0到255范圍內(nèi)的整數(shù)。) [br]數(shù)字(整型)smallint(smallint數(shù)據(jù)類(lèi)型:access項(xiàng)目中的一種2字節(jié)(16位)數(shù)據(jù)類(lèi)型,存儲(chǔ)位于-2^15(-32,768)與2^15-1(32,767)之間的數(shù)字。) [br]數(shù)字(長(zhǎng)整型)int(int數(shù)據(jù)類(lèi)型:access項(xiàng)目中的一種4字節(jié)(32位)數(shù)據(jù)類(lèi)型,存儲(chǔ)位于-2^31(-2,147,483,648)與2^31-1(2,147,483,647)之間的數(shù)字。) [br]數(shù)字(單精度浮點(diǎn)型)real(real數(shù)據(jù)類(lèi)型:在access項(xiàng)目中,一種近似的數(shù)值數(shù)據(jù)類(lèi)型,精度為7位,正值取值范圍大致從1.18e-38到3.40e+38,負(fù)值取值范圍大致從-1.18e-38到-3.40e+38,也可以取0。) [br](無(wú)等價(jià)的數(shù)據(jù)類(lèi)型)bigint(bigint數(shù)據(jù)類(lèi)型:access項(xiàng)目中的一種8字節(jié)(64位)數(shù)據(jù)類(lèi)型,存儲(chǔ)位于-2^63(-9,223,372,036,854,775,808)與2^63-1(9,223,372,036,854,775,807)之間的數(shù)字。) [br]數(shù)字(雙精度浮點(diǎn)型)float(float數(shù)據(jù)類(lèi)型:在access項(xiàng)目中,一種近似的數(shù)值數(shù)據(jù)類(lèi)型,精度為15位。它所存儲(chǔ)的正值范圍大致是從2.23e-308到1.79e+308,負(fù)值范圍大致是從-2.23e-308到-1.79e+308,也可以為0。) [br]貨幣(“貨幣”數(shù)據(jù)類(lèi)型:microsoftaccess數(shù)據(jù)庫(kù)中的一種數(shù)據(jù)類(lèi)型,用于與貨幣有關(guān)的計(jì)算或其精確度極其重要的定點(diǎn)計(jì)算。)money(money數(shù)據(jù)類(lèi)型:在access項(xiàng)目中,用于存儲(chǔ)貨幣值的數(shù)據(jù)類(lèi)型,取值范圍從-922,337,203,685,477.5707到922,337,203,685,477.5807,精確度為萬(wàn)分之一個(gè)貨幣單位。)[/align][/p]
[p][align=left]smallmoney(smallmoney數(shù)據(jù)類(lèi)型:access項(xiàng)目中的一種存儲(chǔ)貨幣值的數(shù)據(jù)類(lèi)型,取值范圍從-214,748.3648到214,748.3647,精確度為萬(wàn)分之一個(gè)貨幣單位。當(dāng)顯示smallmoney值時(shí),會(huì)將它們四舍五入為兩個(gè)小數(shù)位。) [br]小數(shù)/數(shù)值(decimal數(shù)據(jù)類(lèi)型(access數(shù)據(jù)庫(kù)):精確的數(shù)值數(shù)據(jù)類(lèi)型,用于存儲(chǔ)-10^38-1到10^38-1的值。可以指定數(shù)值范圍(最大總位數(shù))和精度(小數(shù)點(diǎn)右邊的最大位數(shù))。)decimal(decimal數(shù)據(jù)類(lèi)型(access項(xiàng)目):精確的數(shù)值數(shù)據(jù)類(lèi)型,用于存儲(chǔ)-10^38-1到10^38-1的值。可以指定數(shù)值范圍(最大總位數(shù))和精度(小數(shù)點(diǎn)右邊的最大位數(shù))。)[/align][/p]
[p][align=left]numeric(numeric數(shù)據(jù)類(lèi)型:在access項(xiàng)目中,一種精確的數(shù)值數(shù)據(jù)類(lèi)型,取值從-10^38-1到10^38-1。可以指定數(shù)值范圍(最大總位數(shù))和精度(小數(shù)點(diǎn)右邊的最大位數(shù))。) [br]日期/時(shí)間(“日期/時(shí)間”數(shù)據(jù)類(lèi)型:access數(shù)據(jù)庫(kù)的一種數(shù)據(jù)類(lèi)型,用來(lái)存放日期和時(shí)間信息。)datetime(datetime數(shù)據(jù)類(lèi)型:在access項(xiàng)目中,日期和時(shí)間的數(shù)據(jù)類(lèi)型,范圍從1753年1月1日到9999年12月31日,精確度為三百分之一秒,即3.33毫秒。)[/align][/p]
[p][align=left]smalldatetime(smalldatetime數(shù)據(jù)類(lèi)型:access項(xiàng)目中的一種日期和時(shí)間數(shù)據(jù)類(lèi)型,精度不如datetime時(shí)間數(shù)據(jù)類(lèi)型。數(shù)據(jù)取值范圍從1900年1月1日到2079年6月6日,精確度為一分鐘。) [br]自動(dòng)編號(hào)(“自動(dòng)編號(hào)”數(shù)據(jù)類(lèi)型:microsoftaccess數(shù)據(jù)庫(kù)中的一種字段數(shù)據(jù)類(lèi)型,當(dāng)向表中添加一條新記錄時(shí),這種數(shù)據(jù)類(lèi)型會(huì)自動(dòng)為每條記錄存儲(chǔ)一個(gè)唯一的編號(hào)。可以產(chǎn)生三種編號(hào):順序號(hào)、隨機(jī)號(hào)和同步復(fù)制id。)(遞增)int(int數(shù)據(jù)類(lèi)型:access項(xiàng)目中的一種4字節(jié)(32位)數(shù)據(jù)類(lèi)型,存儲(chǔ)位于-2^31(-2,147,483,648)與2^31-1(2,147,483,647)之間的數(shù)字。)(定義了identity屬性) [br]文本(“文本”數(shù)據(jù)類(lèi)型:microsoftaccess數(shù)據(jù)庫(kù)中的一種字段數(shù)據(jù)類(lèi)型。“文本”數(shù)據(jù)類(lèi)型最多可以包含255個(gè)字符,或者是由fieldsize屬性指定的一個(gè)小一些的字符數(shù)。)(n)varchar(n)(varchar(n)數(shù)據(jù)類(lèi)型:access項(xiàng)目中的一種可變長(zhǎng)度的數(shù)據(jù)類(lèi)型,最大長(zhǎng)度為8,000個(gè)ansi字符。)[/align][/p]
[p][align=left]nvarchar(n)(nvarchar(n)數(shù)據(jù)類(lèi)型:在access項(xiàng)目中,一種可變長(zhǎng)度的數(shù)據(jù)類(lèi)型,最多可含4,000個(gè)unicode字符。unicode字符每字符占兩個(gè)字節(jié),而且支持所有國(guó)際字符。) [br]備注(“備注”數(shù)據(jù)類(lèi)型:在microsoftaccess數(shù)據(jù)庫(kù)中的一種字段數(shù)據(jù)類(lèi)型。“備注”字段最多可以包含65,535個(gè)字符。)text(text數(shù)據(jù)類(lèi)型:access項(xiàng)目中的一種長(zhǎng)度可變的數(shù)據(jù)類(lèi)型,最多可存儲(chǔ)2^31-1(2,147,483,647)個(gè)字符;默認(rèn)長(zhǎng)度為16。) [br]ole對(duì)象(“ole對(duì)象”數(shù)據(jù)類(lèi)型:字段的數(shù)據(jù)類(lèi)型之一,用于在其他應(yīng)用程序中創(chuàng)建的、可鏈接或嵌入(插入)到access數(shù)據(jù)庫(kù)中的對(duì)象。)image(image數(shù)據(jù)類(lèi)型:在access項(xiàng)目中,一種長(zhǎng)度可變的數(shù)據(jù)類(lèi)型,最多可存儲(chǔ)2^31-1(2,147,483,647)字節(jié)的二進(jìn)制數(shù)據(jù)。image數(shù)據(jù)類(lèi)型用來(lái)存儲(chǔ)blob(二進(jìn)制大對(duì)象),如圖片、文檔、聲音和已編譯代碼。) [br]同步復(fù)制id(又名全局唯一標(biāo)識(shí)符(guid:在access數(shù)據(jù)庫(kù)中,一種用于建立同步復(fù)制唯一標(biāo)識(shí)符的16字節(jié)字段。guid用于標(biāo)識(shí)副本、副本集、表、記錄和其他對(duì)象。在access數(shù)據(jù)庫(kù)中,guid是指同步復(fù)制id。)(guid))uniqueidentifier(uniqueidentifier數(shù)據(jù)類(lèi)型:在access項(xiàng)目中,16字節(jié)的全局唯一標(biāo)識(shí)符(guid)。)(僅適于sqlserver7.0或更高版本) [br]超鏈接(“超鏈接”數(shù)據(jù)類(lèi)型:存儲(chǔ)超鏈接地址的access數(shù)據(jù)庫(kù)字段的數(shù)據(jù)類(lèi)型。地址最多可以包含四部分,用以下語(yǔ)法格式編寫(xiě):displaytext#address#subaddress#。)char(char數(shù)據(jù)類(lèi)型:在access項(xiàng)目中,一種固定長(zhǎng)度的數(shù)據(jù)類(lèi)型,最多可含8,000個(gè)ansi字符。),[/align][/p]
[p][align=left]nchar(nchar數(shù)據(jù)類(lèi)型:在access項(xiàng)目中,一種固定長(zhǎng)度的數(shù)據(jù)類(lèi)型,最多可含4,000個(gè)unicode字符。unicode字符每字符占兩個(gè)字節(jié),而且支持所有國(guó)際字符。),varchar,nvarchar(hyperlink屬性設(shè)為yes) [br](無(wú)等價(jià)的數(shù)據(jù)類(lèi)型)varbinary(varbinary數(shù)據(jù)類(lèi)型:access項(xiàng)目中的一種可變長(zhǎng)度的數(shù)據(jù)類(lèi)型,最多可存儲(chǔ)8,000字節(jié)的二進(jìn)制數(shù)據(jù)。) [br](無(wú)等價(jià)的數(shù)據(jù)類(lèi)型)smallint(smallint數(shù)據(jù)類(lèi)型:access項(xiàng)目中的一種2字節(jié)(16位)數(shù)據(jù)類(lèi)型,存儲(chǔ)位于-2^15(-32,768)與2^15-1(32,767)之間的數(shù)字。) [br](無(wú)等價(jià)的數(shù)據(jù)類(lèi)型)timestamp(timestamp數(shù)據(jù)類(lèi)型:在access項(xiàng)目中,一種每插入或更新一行就會(huì)自動(dòng)更新的數(shù)據(jù)類(lèi)型。timestamp列中的值不是datetime數(shù)據(jù),而是binary(8)或varbinary(8),標(biāo)明了數(shù)據(jù)修改的順序。) [br](無(wú)等價(jià)的數(shù)據(jù)類(lèi)型)charnchar [br](無(wú)等價(jià)的數(shù)據(jù)類(lèi)型)sql_variant(sql_variant數(shù)據(jù)類(lèi)型:access項(xiàng)目中的一種數(shù)據(jù)類(lèi)型,存儲(chǔ)除text、ntext、image、timestamp和sql_variant類(lèi)型以外的多種數(shù)據(jù)類(lèi)型的值。在列、參數(shù)、變量或用戶定義函數(shù)的返回值中使用。) [br](無(wú)等價(jià)的數(shù)據(jù)類(lèi)型)用戶定義(用戶定義的數(shù)據(jù)類(lèi)型:在microsoftsqlserver數(shù)據(jù)庫(kù)中,允許某列包含的數(shù)據(jù)的類(lèi)型定義,由用戶利用現(xiàn)有的系統(tǒng)數(shù)據(jù)類(lèi)型定義。規(guī)則和默認(rèn)值僅可以綁定到用戶定義的數(shù)據(jù)類(lèi)型。)[/align][/p]
[p][align=left]注釋在access項(xiàng)目或sqlserver數(shù)據(jù)庫(kù)中,前綴“n”代表“國(guó)家/地區(qū)”,意思是這個(gè)數(shù)據(jù)類(lèi)型是啟用unicode的。在access數(shù)據(jù)庫(kù)中,全部文本列在默認(rèn)情況下都是啟用unicode的。 [br]access轉(zhuǎn)sql需要注意的問(wèn)題 [br]2006-2-13 16:01:20 [br]很多朋友想用sql2000數(shù)據(jù)庫(kù)的編程方法,但是卻又苦于自己是學(xué)access的,對(duì)sql只是一點(diǎn)點(diǎn)的了解而已,這里我給大家提供以下參考---將access轉(zhuǎn)化成sql2000的方法和注意事項(xiàng) [br]一,首先,我說(shuō)的是在access2000,sql2000之間轉(zhuǎn)換,其他的我也還沒(méi)有嘗試過(guò),希望大家多多試驗(yàn),肯定是有辦法的; [br]二,轉(zhuǎn)換的方法 [br]1,打開(kāi)”控制面板“下”管理工具“中的”數(shù)據(jù)庫(kù)源“; [br]2,按”添加“添加一個(gè)新的數(shù)據(jù)源,在選擇欄里選”driverdomicrosoftaccess [br](*.mdb)”,完成后將出現(xiàn)一個(gè)框,[/align][/p]
[p][align=left]在”數(shù)據(jù)庫(kù)源“里面輸入你想寫(xiě)的名稱(chēng),我取名叫“abc”,說(shuō)明不需要填,接著,按下面的選擇,尋找你的數(shù)據(jù)庫(kù)地址和選中(注意,請(qǐng)先備份自己的access數(shù)據(jù)庫(kù)),然后確定。 [br]數(shù)據(jù)源在這里建好了,剩下轉(zhuǎn)換了。[/align][/p]
[p][align=left]3,打開(kāi)sql2000企業(yè)管理器,進(jìn)入數(shù)據(jù)庫(kù),新建一個(gè)空的數(shù)據(jù)庫(kù)“abc”; [br]4,選擇新建立的數(shù)據(jù)庫(kù),按鼠標(biāo)右鍵,選擇“所有任務(wù)”下“導(dǎo)入數(shù)據(jù)”,按“下一步”繼續(xù); [br]5,在數(shù)據(jù)庫(kù)源下拉但中選擇”driverdomicrosoftaccess(*.mdb)“,在”用戶/系統(tǒng)dsn“中,選種你剛才添加的”abc“,按”下一步“; [br]6,“目的”不需要修改,選擇服務(wù)器(一般下為自己的本機(jī)"local",也可以選擇服務(wù)器地址或者局域網(wǎng)地址,確定你的權(quán)限是否可以操作,),"使用windows身份驗(yàn)證"指用自己的系統(tǒng)管理員身份操作,"使用sql身份操作驗(yàn)證"可以用于網(wǎng)站的操作,推薦用后者; [br]7,選上"使用sql身份操作驗(yàn)證"后,填寫(xiě)你的用戶名和密碼,我自己選擇的是系統(tǒng)默認(rèn)號(hào)碼"sa","****",數(shù)據(jù)庫(kù)選擇剛新建的"abc",按"下一步"; [br]8,這一步的兩個(gè)單項(xiàng)選擇,"從數(shù)據(jù)源復(fù)制表和視圖"與"用一條查詢指令指定要傳輸?shù)臄?shù)據(jù)",選擇前者,按"下一步"繼續(xù); [br]9,這里將出現(xiàn)你自己access數(shù)據(jù)庫(kù)的表,按"全選"后,下一步; [br]10,"dts導(dǎo)入/導(dǎo)出向?qū)?,看"立即運(yùn)行"被選中按"下一步", [br]11,按"完成"繼續(xù); [br]12,這個(gè)步驟你將看到你的數(shù)據(jù)被導(dǎo)入sql2000里面,當(dāng)出現(xiàn)"已經(jīng)成功把xxx個(gè)表導(dǎo)入到數(shù)據(jù)庫(kù)"的字樣,而且所有的表前面都有綠色的勾,就表示成功導(dǎo)入所有數(shù)據(jù),如果中途出現(xiàn)問(wèn)題或者表前面有紅色的*的話,說(shuō)明該表沒(méi)有成功導(dǎo)入,這時(shí)就要回去查看自己的操作是否正確了.[/align][/p]
[p][align=left]三,數(shù)據(jù)修改 [br]1,由于sql2000里面沒(méi)有"自動(dòng)編號(hào)",所以你的以"自動(dòng)編號(hào)"設(shè)置的字段都會(huì)變成非空的字段,這就必須手工修改這些字段,并把他的"標(biāo)示"選擇"是",種子為"1",增量為"1", [br]2,另外,access2000轉(zhuǎn)換成sql2000后,原來(lái)屬性為"是/否"的字段將被轉(zhuǎn)換成非空的"bit",這時(shí)候你必須修改成自己想要的屬性了; [br]3,另外,大家要注意對(duì)時(shí)間函數(shù)的把握.access與sql是有很多不同的.[/align][/p]
[p][align=left][br]四、相關(guān)的字段問(wèn)題 [br]1.access的數(shù)據(jù)庫(kù)中的自動(dòng)編號(hào)類(lèi)型在轉(zhuǎn)化時(shí),sqlserver并沒(méi)有將它設(shè)為自動(dòng)編號(hào)型,我們需在sql創(chuàng)建語(yǔ)句中加上identity,表示自動(dòng)編號(hào)! [br]2.轉(zhuǎn)化時(shí),跟日期有關(guān)的字段,sqlserver默認(rèn)為smalldatetime型,我們最好將它變?yōu)閐atetime型,因?yàn)閐atetime型的范圍比smalldatetime型大。我遇見(jiàn)這種情況,用smalldatetime型時(shí),轉(zhuǎn)化失敗,而用datetime型時(shí),轉(zhuǎn)化成功。 [br]3.對(duì)此兩種數(shù)據(jù)庫(kù)進(jìn)行操作的sql語(yǔ)句不全相同,例如:在對(duì)access數(shù)據(jù)庫(kù)進(jìn)行刪除紀(jì)錄時(shí)用:"delete*fromuserwhereid=10",而對(duì)sqlserver數(shù)據(jù)庫(kù)進(jìn)行刪除是用:"deleteuserwhereid=10". [br]4.日期函數(shù)不相同,在對(duì)access數(shù)據(jù)庫(kù)處理中,可用date()、time()等函數(shù),但對(duì)sqlserver數(shù)據(jù)庫(kù)處理中,只能用datediff,dateadd等函數(shù),而不能用date()、time()等函數(shù)。 [br]5.在對(duì)access數(shù)據(jù)庫(kù)處理中,sql語(yǔ)句中直接可以用一些vb的函數(shù),像cstr()函數(shù),而對(duì)sqlserver數(shù)據(jù)庫(kù)處理中,卻不能用。[/align][/p]
[p][align=left]五、相關(guān)語(yǔ)句問(wèn)題 [br]自動(dòng)增加字段需要重寫(xiě)。在access中經(jīng)常使用的自動(dòng)編號(hào)字段,導(dǎo)入到mssql后,他并不是自增型的int,需要手工設(shè)置,把導(dǎo)入后的自動(dòng)編號(hào)字段的標(biāo)識(shí)的“否”改為“是”,“種子”和“遞增量”都為“1”,才能成為自動(dòng)編號(hào)[/align][/p]
[p][align=left][br]所有的默認(rèn)值都丟失了。主要是數(shù)字類(lèi)型和日期類(lèi)型[/align][/p]
[p][align=left][br]所有now(),time(),date()要改成getdate()[/align][/p]
[p][align=left][br]所有datediff('d',time1,time2)要改成datediff(day,time1,time2)[/align][/p]
[p][align=left][br]所有datediff('ww',time1,time2)要改成datediff(week,time1,time2)[/align][/p]
[p][align=left][br]所有datediff('d',time1,time2)要改成datediff(day,time1,time2)[/align][/p]
[p][align=left][br]在mssqlserver中,有許多保留字,在access中是沒(méi)有的,當(dāng)你把數(shù)據(jù)導(dǎo)入到mssql的時(shí)候,問(wèn)題就出來(lái)了。mssql在導(dǎo)入的時(shí)候,會(huì)自動(dòng)給這些字段(包括數(shù)據(jù)庫(kù)中的表名)加上“[字段名]”,因此,你必須修改你的腳本,把相應(yīng)的字段名字(或者表名字)加上中括號(hào),或改變字段名字為不是mssql的保留字[/align][/p]
[p][align=left][br]在用access關(guān)于時(shí)間的使用,大家喜歡使用“select*fromaaaawhiletime="&now()”這樣的sql語(yǔ)句,然而,在mssql中沒(méi)有“now()”這個(gè)函數(shù),而是使用“getdate()”,所以,所有的sql語(yǔ)句中的“now()”必須換成“getdate()”。[/align][/p]
[p][align=left][br]日期函數(shù)不相同,在對(duì)access數(shù)據(jù)庫(kù)處理中,可用date()、time()等函數(shù),但對(duì) [br]sqlserver數(shù)據(jù)庫(kù)處理中,只能用datediff,dateadd等函數(shù),而不能用date()、time()等函數(shù)。[/align][/p]
[p][align=left]轉(zhuǎn)化時(shí),跟日期有關(guān)的字段,sqlserver默認(rèn)為smalldatetime型,我們最好將它變?yōu)閐atetime型。[/align][/p]

該文章在 2010/7/22 22:59:51 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專(zhuān)業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車(chē)隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類(lèi)企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷(xiāo)售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved