程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 談談Access和MS SQL的區別

談談Access和MS SQL的區別

編輯:關於SqlServer

這段時間沒有什麼項目做比較閒,但隔三岔五的老板又會安排我做點小事情,總是靜不下心來認真學習。想了想,算了學習理論知識還不如嘗試去點做沒有以前接觸過的東西,這樣即學了知識又長了經驗,一舉兩得。

前幾個月我女朋友老是唠叨錢不知道用到哪裡去了,我自己也這麼認為。感覺沒有怎麼花錢,但錢又不知不覺沒了,於是我想了個辦法去整個記賬軟件把每天的開支及收入都一一記錄下來,以後就有據可依啦!用那個記賬軟件用了段日子,說實話弄的挺好的,尤其是報表統計那塊非常的棒,直到有天軟件突然彈出提示“您的試用期限已到,請注冊”。都怪自己沒有看清楚,我還以為是共享版的呢,自己又不願意花錢去注冊(我想搞軟件的人都不願意吧,當然我絕對支持正版哈),就想自己琢磨著設計一套出來。正好現在可支配的時間比較充裕,雖然我之前沒有做過Winform的程序,但是我覺得整套小的個人記賬軟件應該不是問題吧,更何況我有一個很好的幫手,我女朋友是做Winform軟件的,嘿嘿。

說干就干,花了點時間來分析之前使用的那套軟件,再加了點我們自己的需求,開始啦!為了便於維護我采用的是工廠模式來設計,該有的都有。數據庫用的是Access,不用安裝數據庫服務端,方便。我想沒有哪個會用MS SQL或其它需要安裝服務段的數據庫來做數據容器吧,要是你拿去賣的話估計一套都賣不了。在制作的過程中遇到了很多納悶的問題,比如插入數據失敗(非常簡單的數據插入),我跟蹤來跟蹤去總是找不出原因,查看SQL語句又都是對,我整了很長的時間都沒有解決。後來跟同事交流了會,他估計了下原因,可能是我Access中字段的問題。我之前用MS SQL時都有一套我自己認為比較合理的字段命名規范,難道在Access中就不行。於是我就輪流把字段名該了下,經測試真的是字段名的問題,我的用戶表中密碼字段用的是“PassWord”,我把它改成“PWD”之後馬上就能正常運行了。在網上查了下看是怎麼回事,原來“PassWord”是Access中的保留關鍵字不能使用,但是MS SQL中也有關鍵字啊,我以前怎麼從來就沒有遇到過類似的問題,難道是Access智能型不夠強?

為了不讓大家犯同樣的錯誤,我把Access的關鍵字列出來,朋友們多多注意哈。

代碼
-A
ADD
ALL
Alphanumeric
ALTER
AND
ANY
Application
AS
ASC
Assistant
AUTOINCREMENT
Avg
-B
BETWEEN
BINARY
BIT
BOOLEAN
BY
BYTE
-C
CHAR, CHARACTER
COLUMN
CompactDatabase
CONSTRAINT
Container
Count
COUNTER
CREATE
CreateDatabase
CreateFIEld
CreateGroup
CreateIndex
Createobject
CreateProperty
CreateRelation
CreateTableDef
CreateUser
CreateWorkspace
CURRENCY
CurrentUser
-D
DATABASE
DATE
DATETIME
delete
DESC
Description
DISALLOW
DISTINCT
DISTINCTROW
Document
DOUBLE
drop
-E
Echo
Else
End
Eqv
Error
EXISTS
Exit
-F
FALSE
Field, FIElds
FillCache
FLOAT, FLOAT4, FLOAT8
FOREIGN
Form, Forms
FROM
Full
FUNCTION
-G
GENERAL
Getobject
GetOption
GotoPage
GROUP
GROUP BY
GUID
-H
HAVING
-I
Idle
IEEEDOUBLE, IEEESINGLE
If
IGNORE
Imp
IN
INDEX
Index, Indexes
INNER
INSERT
InsertText
INT, INTEGER, INTEGER1, INTEGER2, INTEGER4
INTO
IS
-J
JOIN
-K
KEY
-L
LastModifIEd
LEFT
Level
Like
LOGICAL, LOGICAL1
LONG, LONGBINARY, LONGTEXT

-M
Macro
Match
Max, Min, Mod
MEMO
Module
MONEY
Move
-N
NAME
NewPassWord
NO
Not
Note
NULL
NUMBER, NUMERIC
-O
object
OLEobject
OFF
ON
OpenRecordset
OPTION
OR
ORDER
OrIEntation
Outer
OWNERAccess
-P
Parameter
PARAMETERS
Partial
PERCENT
PIVOT
PRIMARY
PROCEDURE
Property
-Q
QuerIEs
Query
Quit
-R
REAL
Recalc
Recordset
REFERENCES
Refresh
RefreshLink
RegisterDatabase
Relation
Repaint
RepairDatabase
Report
Reports
Requery
RIGHT
-S
SCREEN
SECTION
SELECT
SET
SetFocus
SetOption
SHORT
SINGLE
SMALLINT
SOME
SQL
StDev, StDevP
STRING
Sum
-T
TABLE
TableDef, TableDefs
TableID
TEXT
TIME, TIMESTAMP
TOP
TRANSFORM
TRUE
Type
-U
UNION
UNIQUE
update
USER
-V
VALUE
VALUES
Var, VarP
VARBINARY, VARCHAR
-W
WHERE
WITH
Workspace
-X
Xor
-Y
Year
YES
YESNO

另外一個問題就是,Access中的數據類型沒有MS SQL中的那麼全,習慣了用MS SQL在使用Access時經常會出現數據類型的錯誤。Access中時間類型字段在C#中是被定義為string類型的,剛剛我就出現了這樣的問題,我在給一條SQL語句中時間類型的參數設置DBType時就報錯了,因為我把它設置為DateTime類型。同樣又花了我很長時間來找錯誤,郁悶,後來把它設為string類型就成功啦!

總之Access和MS SQL還是有一定差別的,除了上面所講的兩方面還有其它不同的地方,比如一些內置函數、SQL語句的差別。要是以後所有的數據庫都有一套標准就好了,所有數據庫廠商都必須遵循該標准,到時候學會了其中一種比較流行的數據庫,其它的也就觸類旁通了,再也不用花很多心思去學什麼Oracle、DB2、MySQL等不同的數據庫,只是學習下各個數據庫軟件操作方法就行,在轉移數據庫時也不會存在不兼容的問題。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved