解析Access與Sql Server之ASP代碼比較(3)_Access數(shù)據(jù)庫(kù)教程
推薦:解析ACCESS作為網(wǎng)站數(shù)據(jù)庫(kù)的弊端現(xiàn)在網(wǎng)上絕大多數(shù)網(wǎng)站都是ACCESS+ASP的形式,因?yàn)锳CCESS結(jié)構(gòu)簡(jiǎn)單容易處理,而且也能滿(mǎn)足多數(shù)的網(wǎng)站程序要求。 ACCESS是小型數(shù)據(jù)庫(kù),既然是小型就有他根本的局限性,以下幾種情況下數(shù)據(jù)庫(kù)基本上會(huì)吃不消: 1。數(shù)據(jù)庫(kù)過(guò)大,一般ACCESS數(shù)據(jù)庫(kù)達(dá)到50M左右的時(shí)候
三、連接字符串的改寫(xiě)
可參考動(dòng)網(wǎng)的這段,分別是針對(duì)access和SQL的
Dim ConnStr
If IsSqlDataBase = 1 Then
'sql數(shù)據(jù)庫(kù)連接參數(shù):數(shù)據(jù)庫(kù)名、用戶(hù)密碼、用戶(hù)名、連接名(本地用local,外地用IP)
Dim SqlDatabaseName,SqlPassword,SqlUsername,SqlLocalName
SqlDatabaseName = "dvbbs7"
SqlPassword = ""
SqlUsername = "dvbbs"
SqlLocalName = "(local)"
ConnStr = "Provider = Sqloledb; User ID = " & SqlUsername & "; Password = " & SqlPassword & "; Initial Catalog = " & SqlDatabaseName & "; Data Source = " & SqlLocalName & ";"
Else
'免費(fèi)用戶(hù)第一次使用請(qǐng)修改本處數(shù)據(jù)庫(kù)地址并相應(yīng)修改data目錄中數(shù)據(jù)庫(kù)名稱(chēng),如將dvbbs6.mdb修改為dvbbs6.asp
'http://www.knowsky.com/
Db = "data/fengerqingqing.mdb"
ConnStr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath(db)
End If
On Error Resume Next
Set conn = Server.CreateObject("ADODB.Connection")
conn.open ConnStr
當(dāng)然你使用SQL的話,有關(guān)access的使用語(yǔ)句可以刪除,就是else后面到on error resume next前面,變成這樣:
Dim ConnStr
'sql數(shù)據(jù)庫(kù)連接參數(shù):數(shù)據(jù)庫(kù)名、用戶(hù)密碼、用戶(hù)名、連接名(本地用local,外地用IP)
Dim SqlDatabaseName,SqlPassword,SqlUsername,SqlLocalName
SqlDatabaseName = "dvbbs7"
SqlPassword = ""
SqlUsername = "dvbbs"
SqlLocalName = "(local)"
ConnStr = "Provider = Sqloledb; User ID = " & SqlUsername & "; Password = " & SqlPassword & "; Initial Catalog = " & SqlDatabaseName & "; Data Source = " & SqlLocalName & ";"
On Error Resume Next
Set conn = Server.CreateObject("ADODB.Connection")
conn.open ConnStr
也可以簡(jiǎn)潔一些,寫(xiě)成這樣:
Set conn = Server.CreateObject("ADODB.Connection")
conn.open "Provider = Sqloledb; User ID = sa; Password = 1234567; Initial Catalog = dvbbs7; Data Source = (local);"
里面的數(shù)據(jù)庫(kù)名稱(chēng)、數(shù)據(jù)源、用戶(hù)、密碼根據(jù)自己的實(shí)際情況改寫(xiě)一下。
四、程序的改寫(xiě)
這也有兩種情況
1、如果你幸運(yùn),拿到的是For SQL的程序,那么如果上面的數(shù)據(jù)庫(kù)建立過(guò)程沒(méi)有遇到麻煩,程序基本上就可以運(yùn)行了,出錯(cuò)的話,只是程序本身的bug,如何修改不是這個(gè)帖子討論的內(nèi)容,就不贅述了。
2、大多數(shù)情況,程序本身是For Access的,與For SQL的程序差別主要是程序中使用到的SQL查詢(xún)語(yǔ)句。注意,SQL查詢(xún)語(yǔ)句是數(shù)據(jù)庫(kù)應(yīng)用不可缺少的部分,不管是For SQL還是For Aceess的程序使用的語(yǔ)法大體差不多,但是有一些微妙的差別,正是這些差別,造成了程序的不通用,也是我們需要修改的主要內(nèi)容。這樣一般要修改的部分如下:
(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ù)查詢(xún)或執(zhí)行語(yǔ)句中使用的now()函數(shù)千萬(wàn)不要改。
(2)時(shí)間比較函數(shù):datediff('d','時(shí)間1',‘時(shí)間2’)這是access查詢(xún)用的格式,SQl中這些引號(hào)都要去掉,同時(shí)時(shí)間格式的前后可能加上了#,這也要去掉。同樣這也是指在sql語(yǔ)句中的,在asp語(yǔ)句中的要保持原樣。
(3)空值的表示:在access中,判斷空值一般用是否=""來(lái)表示,但是這在SQL中往往出錯(cuò),如果遇到出錯(cuò)的問(wèn)題或者程序運(yùn)行不正常,可以改成如這樣判斷:where (name is null)
(4)真假值判斷:access中可以用=true、=false來(lái)判斷,但是在SQL中就會(huì)出錯(cuò),因此在SQL查詢(xún)或執(zhí)行語(yǔ)句中這類(lèi)判斷要分別改成=1、=0。注意一點(diǎn):有些程序雖然寫(xiě)成=“true”,但是由于有引號(hào),所以這個(gè)字段是字符類(lèi)型的,你不能改成=1,保持原樣即可。
以上是比較常見(jiàn)的改寫(xiě)的地方,還有一些不太常見(jiàn),如果遇到了可以在此回帖討論。
五、程序的調(diào)試
前面推薦使用帶有行號(hào)的編輯器,是因?yàn)樯鲜龅母膶?xiě)不大可能是直接搜索程序源碼來(lái)做,很難找全。
我采取的方式一般這樣:數(shù)據(jù)庫(kù)改寫(xiě)完成,直接調(diào)試程序,出錯(cuò)后,看看出錯(cuò)的提示,找到相應(yīng)文件的代碼行,但是根源往往不是那行,比如出錯(cuò)的語(yǔ)句是:conn.execute(sql),但是這句本身是沒(méi)有錯(cuò)的,錯(cuò)誤原因是里面的這個(gè)sql字符串,那就向上看這個(gè)sql字符串是如何生成的,按照上面所說(shuō)的程序修改辦法修改。
分享:揭秘Access數(shù)據(jù)庫(kù)過(guò)大問(wèn)題的幾種解決方案問(wèn)題: 1、我的Access數(shù)據(jù)庫(kù)里面沒(méi)存多少數(shù)據(jù),為什么體積很大,別人和我存一樣的數(shù)據(jù)為什么只有我的文件體積的1/10。 2、為什么我刪除了數(shù)據(jù),但是數(shù)據(jù)庫(kù)體積沒(méi)有減小? 3、為什么我存了幾張圖片到ole字段里面數(shù)據(jù)庫(kù)體積就變大,而且變大的速度超過(guò)圖片的總
- Access數(shù)據(jù)庫(kù)安全策略之ASP式
- 第N次被ACCESS的關(guān)鍵字涮
- Access中用Jet SQL語(yǔ)句刪除表關(guān)系
- Access報(bào)表打印如何自動(dòng)分頁(yè)
- Access完成累計(jì)余額的計(jì)算
- 搭建Access為主的Mdb數(shù)據(jù)庫(kù)
- 一句sql更新兩個(gè)表并可更新對(duì)應(yīng)的字段值具體實(shí)現(xiàn)
- MySQL查詢(xún)優(yōu)化:連接查詢(xún)排序limit(join、order by、limit語(yǔ)句)介紹
- 內(nèi)網(wǎng)ssh/mysql登錄緩慢的解決方法
- 使用準(zhǔn)則進(jìn)行條件查詢(xún)--1.4.從窗體中選擇查詢(xún)的條件
- 中文Access2000速成教程--1.1 使用“向?qū)А痹O(shè)計(jì)數(shù)據(jù)庫(kù)
- 中文Access2000速成教程--1.3 在“設(shè)計(jì)”視圖中設(shè)計(jì)表
Access數(shù)據(jù)庫(kù)教程Rss訂閱編程教程搜索
Access數(shù)據(jù)庫(kù)教程推薦
- 向Access數(shù)據(jù)庫(kù)上傳且顯示圖片
- 如何防止ACCESS數(shù)據(jù)庫(kù)被下載
- Access清空表后讓編號(hào)復(fù)位
- 遠(yuǎn)程連接access數(shù)據(jù)庫(kù)的方法
- 數(shù)據(jù)庫(kù)查詢(xún)優(yōu)化的實(shí)用技巧
- 解析在Access中模擬sql server存儲(chǔ)過(guò)程翻頁(yè)
- 解讀Access數(shù)據(jù)庫(kù)支持用戶(hù)同時(shí)在線問(wèn)題
- 中文Access2000速成教程--1.6 定義“主鍵”
- 搭建Access為主的Mdb數(shù)據(jù)庫(kù)
- ACCESS復(fù)合承載性能超越MYSQL
猜你也喜歡看這些
- 如何在Access數(shù)據(jù)庫(kù)中使用通用對(duì)話框
- 中文Access2000速成教程--1.5 使用已有的數(shù)據(jù)自動(dòng)建新表
- Access數(shù)據(jù)庫(kù)操作中出現(xiàn)的怪現(xiàn)象
- 揭秘Access數(shù)據(jù)庫(kù)過(guò)大問(wèn)題的幾種解決方案
- 解析為何Access數(shù)據(jù)庫(kù)的精髓不在VBA之中
- 在Access數(shù)據(jù)庫(kù)中實(shí)現(xiàn)密碼管理的另一種方式
- Access轉(zhuǎn)Sql Server問(wèn)題 實(shí)例說(shuō)明
- 解析在Access中模擬sql server存儲(chǔ)過(guò)程翻頁(yè)
- 當(dāng)Access文件大于指定的大小時(shí)就自動(dòng)壓縮
- Access數(shù)據(jù)庫(kù)開(kāi)發(fā)技巧(一)
- 相關(guān)鏈接:
- 教程說(shuō)明:
Access數(shù)據(jù)庫(kù)教程-解析Access與Sql Server之ASP代碼比較(3)
。