自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

ASP網(wǎng)站Access數(shù)據(jù)庫改成SQL Server數(shù)據(jù)庫的實(shí)現(xiàn)過程

數(shù)據(jù)庫 SQL Server
本文我們主要介紹了ASP網(wǎng)站Access數(shù)據(jù)庫改成SQL Server數(shù)據(jù)庫的實(shí)現(xiàn)過程以及改寫過程中的注意事項(xiàng)等,希望能夠?qū)δ兴鶐椭?/div>

ASP網(wǎng)站Access數(shù)據(jù)庫改成SQL Server數(shù)據(jù)庫的實(shí)現(xiàn)過程是本文我們主要要介紹的內(nèi)容,接下來就讓我們一起來了解一下這部分內(nèi)容吧。

一、改寫前提:

系統(tǒng)已經(jīng)安裝好SQL Server 2000并且打上了SP3補(bǔ)?。话惭b好Office套件里面的Access;使用一個(gè)支持純文本編輯并且?guī)в行刑?hào)顯示的編輯器,推薦Ultra Edit,當(dāng)然也可以使用FrontPage2003,不過以前的版本行號(hào)顯示不太好用。

個(gè)人能力要求:會(huì)基本的asp語法、access數(shù)據(jù)庫的操作、SQLServer企業(yè)管理器的基本操作。

二、數(shù)據(jù)庫的準(zhǔn)備

一般來說有兩種情況:

1、程序提供了SQL數(shù)據(jù)庫格式:有一個(gè)MDF文件,或者提供了創(chuàng)建SQL數(shù)據(jù)庫的SQL腳本文件(后綴名為.sql)。

如果有mdf文件,可以用企業(yè)管理器直接附加上,如果提供的是sql腳本文件,那么就先用企業(yè)管理器自己創(chuàng)建一個(gè)sql數(shù)據(jù)庫,然后數(shù)據(jù)庫用企業(yè)管理器中的查詢分析器運(yùn)行這個(gè)腳本創(chuàng)建數(shù)據(jù)庫表。

這樣建立的數(shù)據(jù)庫基本不用再去改寫什么了。

2、更多的是沒有提供SQL數(shù)據(jù)庫或腳本文件的,這時(shí),就要自己來做這一切了,這也是我們這個(gè)帖子主要解決的問題。一般這樣的程序會(huì)提供一個(gè)access數(shù)據(jù)庫,這樣你就用企業(yè)管理器導(dǎo)入access數(shù)據(jù)庫,導(dǎo)入后需要改寫下面一些東西:

對(duì)照原來的access,改寫下面的部分:

(1)sql數(shù)據(jù)庫表是沒有自動(dòng)字段的,因此原來access中的自動(dòng)字段被轉(zhuǎn)換成了普通字段,需要手工改成標(biāo)識(shí)類型,增量為1。

(2)所有的時(shí)間字段,如果定義了默認(rèn)值,那么原來肯定是now(),需要改成getdate()

(3)原來字段的默認(rèn)值一般都不會(huì)自動(dòng)引入,需要對(duì)照原表的字段手工添加。

(4)由于數(shù)據(jù)庫的不同,access和sql的字段類型很多轉(zhuǎn)換后就變化了,比如原來的《是否》字段會(huì)被轉(zhuǎn)換成bit或者int,備注字段被轉(zhuǎn)換成longtext,text字段轉(zhuǎn)換成varchar等等,一般來說不會(huì)影響程序運(yùn)行,如果有問題,我們?cè)谙旅娴某绦蚋膶懖糠衷僬f。

(5)如果你要用一個(gè)For SQL的程序,里面用到了存儲(chǔ)過程,那么你應(yīng)該有這個(gè)程序本身建立SQL數(shù)據(jù)庫的方法:有其本身的SQL數(shù)據(jù)庫文件,或者sql腳本;如果沒有的話,采用導(dǎo)入access數(shù)據(jù)庫的方式是無法建立存儲(chǔ)過程的,這樣你最好放棄這個(gè)For SQL的程序版本,使用同樣版本的For Access的程序,導(dǎo)入access數(shù)據(jù)庫,然后用下面的改寫方法自己改成SQL版本的程序。

三、連接字符串的改寫

可參考動(dòng)網(wǎng)的這段,分別是針對(duì)access和SQL的

  1. Dim ConnStr  
  2. If IsSqlDataBase = 1 Then  
  3. 'sql數(shù)據(jù)庫連接參數(shù):數(shù)據(jù)庫名、用戶密碼、用戶名、連接名(本地用local,外地用IP)  
  4. Dim SqlDatabaseName,SqlPassword,SqlUsername,SqlLocalName  
  5. SqlDatabaseName = "dvbbs7" 
  6. SqlPassword = "" 
  7. SqlUsername = "dvbbs" 
  8. SqlLocalName = "(local)" 
  9. ConnStr = "Provider = Sqloledb; User ID = " & SqlUsername & "; Password = " & SqlPassword & "; Initial Catalog = " & SqlDatabaseName & "; Data Source = " & SqlLocalName & ";"  
  10. Else  
  11. '免費(fèi)用戶第一次使用請(qǐng)修改本處數(shù)據(jù)庫地址并相應(yīng)修改data目錄中數(shù)據(jù)庫名稱,如將dvbbs6.mdb修改為dvbbs6.asp  
  12. Db = "data/fengerqingqing.mdb" 
  13. ConnStr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath(db)  
  14. End If  
  15. On Error Resume Next  
  16. Set conn = Server.CreateObject("ADODB.Connection")  
  17. conn.open ConnStr  
  18.  
  19. 當(dāng)然你使用SQL的話,有關(guān)access的使用語句可以刪除,就是else后面到on error resume next前面,變成這樣:  
  20.  
  21. Dim ConnStr  
  22. 'sql數(shù)據(jù)庫連接參數(shù):數(shù)據(jù)庫名、用戶密碼、用戶名、連接名(本地用local,外地用IP)  
  23. Dim SqlDatabaseName,SqlPassword,SqlUsername,SqlLocalName  
  24. SqlDatabaseName = "dvbbs7" 
  25. SqlPassword = "" 
  26. SqlUsername = "dvbbs" 
  27. SqlLocalName = "(local)" 
  28. ConnStr = "Provider = Sqloledb; User ID = " & SqlUsername & "; Password = " & SqlPassword & "; Initial Catalog = " & SqlDatabaseName & "; Data Source = " & SqlLocalName & ";"  
  29. On Error Resume Next  
  30. Set conn = Server.CreateObject("ADODB.Connection")  
  31. conn.open ConnStr 

 

也可以簡(jiǎn)潔一些,寫成這樣:

 

  1. Set conn = Server.CreateObject("ADODB.Connection")  
  2. conn.open "Provider = Sqloledb; User ID = saPassword = 1234567; Initial Catalog = dvbbs7; Data Source = (local);" 

 

里面的數(shù)據(jù)庫名稱、數(shù)據(jù)源、用戶、密碼根據(jù)自己的實(shí)際情況改寫一下。

四、程序的改寫

這也有兩種情況:

1、如果你幸運(yùn),拿到的是For SQL的程序,那么如果上面的數(shù)據(jù)庫建立過程沒有遇到麻煩,程序基本上就可以運(yùn)行了,出錯(cuò)的話,只是程序本身的bug,如何修改不是這個(gè)帖子討論的內(nèi)容,就不贅述了。

2、大多數(shù)情況,程序本身是For Access的,與For SQL的程序差別主要是程序中使用到的SQL查詢語句。注意,SQL查詢語句是數(shù)據(jù)庫應(yīng)用不可缺少的部分,不管是For SQL還是For Aceess的程序使用的語法大體差不多,但是有一些微妙的差別,正是這些差別,造成了程序的不通用,也是我們需要修改的主要內(nèi)容。這樣一般要修改的部分如下:

(1)時(shí)間函數(shù)的問題:SQL數(shù)據(jù)庫的時(shí)間函數(shù)與access不同,最常見的是取現(xiàn)在時(shí)間的函數(shù),access是now(),SQL是getdate()。因此凡是在where子句中使用了now()的地方都要改成getdate();注意,now()函數(shù)在asp程序本身也要使用,凡是不在數(shù)據(jù)庫查詢或執(zhí)行語句中使用的now()函數(shù)千萬不要改。

(2)時(shí)間比較函數(shù):datediff('d','時(shí)間1',‘時(shí)間2’)這是access查詢用的格式,SQl中這些引號(hào)都要去掉,同時(shí)時(shí)間格式的前后可能加上了#,這也要去掉。同樣這也是指在sql語句中的,在asp語句中的要保持原樣。

(3)空值的表示:在access中,判斷空值一般用是否=""來表示,但是這在SQL中往往出錯(cuò),如果遇到出錯(cuò)的問題或者程序運(yùn)行不正常,可以改成如這樣判斷:where (name is null)

(4)真假值判斷:access中可以用=true、=false來判斷,但是在SQL中就會(huì)出錯(cuò),因此在SQL查詢或執(zhí)行語句中這類判斷要分別改成=1、=0。注意一點(diǎn):有些程序雖然寫成=“true”,但是由于有引號(hào),所以這個(gè)字段是字符類型的,你不能改成=1,保持原樣即可。

以上是比較常見的改寫的地方,還有一些不太常見,如果遇到了可以在此回帖討論。

五、程序的調(diào)試

前面推薦使用帶有行號(hào)的編輯器,是因?yàn)樯鲜龅母膶懖淮罂赡苁侵苯铀阉鞒绦蛟创a來做,很難找全。

我采取的方式一般這樣:數(shù)據(jù)庫改寫完成,直接調(diào)試程序,出錯(cuò)后,看看出錯(cuò)的提示,找到相應(yīng)文件的代碼行,但是根源往往不是那行,比如出錯(cuò)的語句是:conn.execute(sql),但是這句本身是沒有錯(cuò)的,錯(cuò)誤原因是里面的這個(gè)sql字符串,那就向上看這個(gè)sql字符串是如何生成的,按照上面所說的程序修改辦法修改。

數(shù)據(jù)庫導(dǎo)入以后,自動(dòng)增加字段需要重寫,所有的數(shù)字類型需要增加長度,最好用decimal。

所有的默認(rèn)值都丟失了。主要是數(shù)字類型和日期類型。

所有now(),time(),date()要改成getdate()。

所有datediff('d', time1, time2)要改成datediff(day, time1, time2)

有可能一些true/false類型不能使用,要變?yōu)?/0。

備注類型要通過cast(column as varchar)來使用。

CursorType要改成1,也就是打開數(shù)據(jù)庫時(shí)要給出第一個(gè)數(shù)字參數(shù)為1,否則記錄可能顯示不完整。

isnull(rowname)要改成rowname = null

ACCESS的數(shù)據(jù)庫中的自動(dòng)編號(hào)類型在轉(zhuǎn)化時(shí),SQL Server并沒有將它設(shè)為自動(dòng)編號(hào)型,我們需在SQL創(chuàng)建語句中加上identity,表示自動(dòng)編號(hào)!

轉(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)化成功。

對(duì)此兩種數(shù)據(jù)庫進(jìn)行操作的sql語句不全相同,例如:在對(duì)ACCESS數(shù)據(jù)庫進(jìn)行刪除紀(jì)錄時(shí)用:"delete * from user where id=10",而對(duì)SQL SERVER數(shù)據(jù)庫進(jìn)行刪除是用:"delete user where id=10".

日期函數(shù)不相同,在對(duì)ACCESS數(shù)據(jù)庫處理中,可用date()、time()等函數(shù),但對(duì)SQL Server數(shù)據(jù)庫處理中,只能用datediff,dateadd等函數(shù),而不能用date()、time()等函數(shù)。

在對(duì)ACCESS數(shù)據(jù)庫處理中,sql語句中直接可以用一些VB的函數(shù),像cstr()函數(shù),而對(duì)SQL Server數(shù)據(jù)庫處理中,卻不能用。

關(guān)于ASP網(wǎng)站Access數(shù)據(jù)庫改成SQL Server數(shù)據(jù)庫的實(shí)現(xiàn)過程的相關(guān)知識(shí)就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!

【編輯推薦】

 

  1. 初學(xué)SQL Server數(shù)據(jù)庫的一些常用操作總結(jié)
  2. 初學(xué)SQL Server筆記之修改表結(jié)構(gòu)的示例代碼
  3. SQL Server批量修改字段的數(shù)據(jù)類型的代碼實(shí)例
  4. SQL Server數(shù)據(jù)庫字段說明的添加修改刪除示例
  5. SQL Server 2005數(shù)據(jù)庫中設(shè)置自動(dòng)編號(hào)字段實(shí)例解析
責(zé)任編輯:趙鵬 來源: 百度空間
相關(guān)推薦

2010-11-08 16:04:06

SQL SERVER連

2011-08-25 16:50:20

SQL ServerAccessASP

2010-07-15 17:28:50

SQL Server

2011-04-01 12:58:46

ASPACCESS數(shù)據(jù)庫

2010-10-22 11:22:33

SQL Server數(shù)

2011-07-13 16:19:54

存儲(chǔ)過程SQL Server數(shù)

2009-08-03 14:17:18

C#連接AccessC#連接SQL Ser

2010-07-22 12:53:17

SQL Server數(shù)

2021-05-17 06:57:34

SQLServer數(shù)據(jù)庫

2010-08-27 09:59:51

SQL Server

2010-07-21 14:11:36

SQL Server

2010-07-08 11:05:14

SQL Server數(shù)

2011-04-01 12:32:37

aspaccess數(shù)據(jù)庫

2011-03-30 15:36:31

SQL Server

2009-08-12 11:04:38

ASP.NET和SQL

2011-03-24 09:45:34

SQL Server數(shù)恢復(fù)

2011-03-24 09:07:11

SQL Server數(shù)備份

2011-03-24 09:24:08

SQL Server數(shù)還原

2011-07-06 14:09:40

ASP

2010-04-29 09:35:31

Oracle數(shù)據(jù)庫
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)