中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Access數(shù)據(jù)庫怎么改成SQLServer數(shù)據(jù)庫

本篇內容主要講解“Access數(shù)據(jù)庫怎么改成SQLServer數(shù)據(jù)庫”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Access數(shù)據(jù)庫怎么改成SQLServer數(shù)據(jù)庫”吧!

創(chuàng)新互聯(lián)主營新民網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,重慶APP開發(fā),新民h5小程序定制開發(fā)搭建,新民網(wǎng)站營銷推廣歡迎新民等地區(qū)企業(yè)咨詢

一、改寫前提:

系統(tǒng)已經(jīng)安裝好SQLServer2000并且打上了SP3補丁;安裝好Office套件里面的Access;使用一個支持純文本編輯并且?guī)в行刑栵@示的編輯器,推薦UltraEdit,當然也可以使用FrontPage2003,不過以前的版本行號顯示不太好用。

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

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

一般來說有兩種情況:

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

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

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

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

對照原來的access,改寫下面的部分:

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

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

(3)原來字段的默認值一般都不會自動引入,需要對照原表的字段手工添加。

(4)由于數(shù)據(jù)庫的不同,access和sql的字段類型很多轉換后就變化了,比如原來的《是否》字段會被轉換成bit或者int,備注字段被轉換成longtext,text字段轉換成varchar等等,一般來說不會影響程序運行,假如有問題,我們在下面的程序改寫部分再說。

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

三、連接字符串的改寫

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

DimConnStrIfIsSqlDataBase=1Then'sql數(shù)據(jù)庫連接參數(shù):數(shù)據(jù)庫名、用戶密碼、用戶名、連接名(本地用local,外地用IP)DimSqlDatabaseName,SqlPassword,SqlUsername,SqlLocalNameSqlDatabaseName="dvbbs7"SqlPassword=""SqlUsername="dvbbs"SqlLocalName="(local)"ConnStr="Provider=Sqloledb;UserID="&SqlUsername&";Password="&SqlPassword&";InitialCatalog="&SqlDatabaseName&";DataSource="&SqlLocalName&";"Else'免費用戶第一次使用請修改本處數(shù)據(jù)庫地址并相應修改data目錄中數(shù)據(jù)庫名稱,如將dvbbs6.mdb修改為dvbbs6.aspDb="data/fengerqingqing.mdb"ConnStr="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath(db)EndIfOnErrorResumeNextSetconn=Server.CreateObject("ADODB.Connection")conn.openConnStr當然你使用SQL的話,有關access的使用語句可以刪除,就是else后面到onerrorresumenext前面,變成這樣:DimConnStr'sql數(shù)據(jù)庫連接參數(shù):數(shù)據(jù)庫名、用戶密碼、用戶名、連接名(本地用local,外地用IP)DimSqlDatabaseName,SqlPassword,SqlUsername,SqlLocalNameSqlDatabaseName="dvbbs7"SqlPassword=""SqlUsername="dvbbs"SqlLocalName="(local)"ConnStr="Provider=Sqloledb;UserID="&SqlUsername&";Password="&SqlPassword&";InitialCatalog="&SqlDatabaseName&";DataSource="&SqlLocalName&";"OnErrorResumeNextSetconn=Server.CreateObject("ADODB.Connection")conn.openConnStr

也可以簡潔一些,寫成這樣:

Setconn=Server.CreateObject("ADODB.Connection")conn.open"Provider=Sqloledb;UserID=sa;Password=1234567;InitialCatalog=dvbbs7;DataSource=(local);"

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

ASP網(wǎng)站Access數(shù)據(jù)庫改成SQLServer數(shù)據(jù)庫怎么實現(xiàn)

四、程序的改寫

這也有兩種情況:

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

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

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

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

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

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

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

五、程序的調試

前面推薦使用帶有行號的編輯器,是因為上述的改寫不大可能是直接搜索程序源碼來做,很難找全。

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

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

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

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

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

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

備注類型要通過cast(columnasvarchar)來使用。

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

isnull(rowname)要改成rowname=null

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

轉化時,跟日期有關的字段,SQLServer默認為smalldatetime型,我們最好將它變?yōu)閐atetime型,因為datetime型的范圍比smalldatetime型大。有時用smalldatetime型時,轉化失敗,而用datetime型時,轉化成功。

對此兩種數(shù)據(jù)庫進行操作的sql語句不全相同,例如:在對ACCESS數(shù)據(jù)庫進行刪除紀錄時用:"delete*fromuserwhereid=10",而對SQLSERVER數(shù)據(jù)庫進行刪除是用:"deleteuserwhereid=10".

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

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

到此,相信大家對“Access數(shù)據(jù)庫怎么改成SQLServer數(shù)據(jù)庫”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!

本文題目:Access數(shù)據(jù)庫怎么改成SQLServer數(shù)據(jù)庫
網(wǎng)站URL:http://www.rwnh.cn/article20/jgpsco.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供域名注冊、營銷型網(wǎng)站建設、全網(wǎng)營銷推廣、ChatGPT、移動網(wǎng)站建設、網(wǎng)站內鏈

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網(wǎng)站建設
石渠县| 靖宇县| 安仁县| 峨眉山市| 河曲县| 乾安县| 西峡县| 台山市| 临潭县| 曲靖市| 甘谷县| 大足县| 金门县| 封丘县| 鄢陵县| 延川县| 台山市| 治多县| 宜阳县| 威宁| 唐河县| 镇赉县| 广饶县| 杭州市| 灌云县| 马边| 东港市| 恩平市| 松潘县| 保定市| 罗甸县| 温泉县| 平邑县| 甘德县| 井冈山市| 澄江县| 建平县| 云南省| 浦江县| 开平市| 图木舒克市|