當表名或字段名,與SQL server系統(tǒng)的保留字段一樣時,就一定樣要用中括號括起來。

專注于為中小企業(yè)提供成都網(wǎng)站制作、成都網(wǎng)站設(shè)計服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)昭通免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
如,表名為use,其中有字段名為user
use與user都是sqlserver的保留字,非常不推薦這樣命名表結(jié)構(gòu)。
在查詢時,如果你寫
select * from use where user='myname'
百分之一萬的會報錯。必須
select * from [use] where [user]='myname'
把ACCESS轉(zhuǎn)成SQL數(shù)據(jù)庫
很多朋友想用SQL2000數(shù)據(jù)庫的編程方法,但是卻又苦于自己是學(xué)ACCESS的,對SQL只是一點點的了解而已,這里我給大家提供以下參考---將ACCESS轉(zhuǎn)化成SQL2000的方法和注意事項
一,首先,我說的是在ACCESS2000,SQL2000之間轉(zhuǎn)換,其他的我也還沒有嘗試過,希望大家多多試驗,肯定是有辦法的;
二,轉(zhuǎn)換的方法
1,打開”控制面板“下”管理工具“中的”數(shù)據(jù)庫源“;
2,按”添加“添加一個新的數(shù)據(jù)源,在選擇欄里選”Driver do microsoft Access
(*.mdb)”,完成后將出現(xiàn)一個框,
在”數(shù)據(jù)庫源“里面輸入你想寫的名稱,我取名叫“ABC”,說明不需要填,接著,按下面的選擇,尋找你的數(shù)據(jù)庫地址和選中(注意,請先備份自己的ACCESS數(shù)據(jù)庫),然后確定。
數(shù)據(jù)源在這里建好了,剩下轉(zhuǎn)換了。
3,打開SQL2000企業(yè)管理器,進入數(shù)據(jù)庫,新建一個空的數(shù)據(jù)庫“ABC”;
4,選擇新建立的數(shù)據(jù)庫,按鼠標右鍵,選擇“所有任務(wù)”下“導(dǎo)入數(shù)據(jù)”,按“下一步”繼續(xù);
5,在數(shù)據(jù)庫源下拉但中選擇”Driver do microsoft Access(*.mdb)“,在”用戶/系統(tǒng)DSN“中,選種你剛才添加的”ABC“,按 ”下一步“;
6,“目的”不需要修改,選擇服務(wù)器(一般下為自己的本機“l(fā)ocal“,也可以選擇服務(wù)器地址或者局域網(wǎng)地址,確定你的權(quán)限是否可以操作,),“使用WINDOWS 身份驗證“指用自己的系統(tǒng)管理員身份操作,“使用SQL身份操作驗證“可以用于網(wǎng)站的操作,推薦用后者;
7,選上“使用SQL身份操作驗證“后,填寫你的用戶名和密碼,我自己選擇的是系統(tǒng)默認號碼“sa“,“****“,數(shù)據(jù)庫選擇剛新建的“ABC“,按“下一步“;
8,這一步的兩個單項選擇,“從數(shù)據(jù)源復(fù)制表和視圖“與“用一條查詢指令指定要傳輸?shù)臄?shù)據(jù)“,選擇前者,按“下一步“繼續(xù);
9,這里將出現(xiàn)你自己ACCESS數(shù)據(jù)庫的表,按“全選“后,下一步;
10,“DTS導(dǎo)入/導(dǎo)出向?qū)А?看“立即運行“被選中按“下一步“,
11,按“完成“繼續(xù);
12,這個步驟你將看到你的數(shù)據(jù)被導(dǎo)入SQL2000里面,當出現(xiàn)“已經(jīng)成功把XXX個表導(dǎo)入到數(shù)據(jù)庫“的字樣,而且所有的表前面都有綠色的勾,就表示成功導(dǎo)入所有數(shù)據(jù),如果中途出現(xiàn)問題或者表前面有紅色的叉的話,說明該表沒有成功導(dǎo)入,這時就要回去查看自己的操作是否正確了.
三,數(shù)據(jù)修改
1,由于SQL2000里面沒有“自動編號“,所以你的以“自動編號“設(shè)置的字段都會變成非空的字段,這就必須手工修改這些字段,并把他的“標示“選擇“是“,種子為“1“,增量為“1“,
2,另外,ACCESS2000轉(zhuǎn)換成SQL2000后,原來屬性為“是/否“的字段將被轉(zhuǎn)換成非空的“bit“,這時候你必須修改成自己想要的屬性了;
3,另外,大家要注意對時間函數(shù)的把握.ACCESS與SQL是有很多不同的.
ACCESS改為SQL需要注意哪幾個地方
數(shù)據(jù)庫導(dǎo)入以后,自動增加字段需要重寫,所有的數(shù)字類型需要增加長度,最好用decimal。
所有的默認值都丟失了。主要是數(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ù)字參數(shù)為1,否則記錄可能顯示不完整。
isnull(rowname)要改成rowname = null
ACCESS的數(shù)據(jù)庫中的自動編號類型在轉(zhuǎn)化時,sql server并沒有將它設(shè)為自動編號型,我們需在SQL創(chuàng)建語句中加上identity,表示自動編號!
轉(zhuǎn)化時,跟日期有關(guān)的字段,SQL SERVER默認為smalldatetime型,我們最好將它變?yōu)閐atetime型,因為datetime型的范圍比smalldatetime型大。有時用smalldatetime型時,轉(zhuǎn)化失敗,而用datetime型時,轉(zhuǎn)化成功。
對此兩種數(shù)據(jù)庫進行操作的sql語句不全相同,例如:在對ACCESS數(shù)據(jù)庫進行刪除紀錄時用:“delete * from user where id=10“,而對SQL SERVER數(shù)據(jù)庫進行刪除是用:“delete user where id=10“.
日期函數(shù)不相同,在對ACCESS數(shù)據(jù)庫處理中,可用date()、time()等函數(shù),但對SQL SERVER數(shù)據(jù)庫處理中,只能用datediff,dateadd等函數(shù),而不能用date()、time()等函數(shù)。
在對ACCESS數(shù)據(jù)庫處理中,sql語句中直接可以用一些VB的函數(shù),像cstr()函數(shù),而對SQL SERVER數(shù)據(jù)庫處理中,卻不能用。
ACCESS轉(zhuǎn)SQL SERVER的數(shù)據(jù)庫的幾點經(jīng)驗
1.ACCESS的數(shù)據(jù)庫中的自動編號類型在轉(zhuǎn)化時,sql server并沒有將它設(shè)為自動編號型,我們需在SQL創(chuàng)建語句中加上identity,表示自動編號!
2.轉(zhuǎn)化時,跟日期有關(guān)的字段,SQL SERVER默認為smalldatetime型,我們最好將它變?yōu)閐atetime型,因為datetime型的范圍比smalldatetime型大。我遇見這種情況,用smalldatetime型時,轉(zhuǎn)化失敗,而用datetime型時,轉(zhuǎn)化成功。
3.對此兩種數(shù)據(jù)庫進行操作的sql語句不全相同,例如:在對ACCESS數(shù)據(jù)庫進行刪除紀錄時用:“delete * from user where id=10“,而對SQL SERVER數(shù)據(jù)庫進行刪除是用:“delete user where id=10“.
4.日期函數(shù)不相同,在對ACCESS數(shù)據(jù)庫處理中,可用date()、time()等函數(shù),但對SQL SERVER數(shù)據(jù)庫處理中,只能用datediff,dateadd等函數(shù),而不能用date()、time()等函數(shù)。
5.在對ACCESS數(shù)據(jù)庫處理中,sql語句中直接可以用一些VB的函數(shù),像cstr()函數(shù),而對SQL SERVER數(shù)據(jù)庫處理中,卻不能用。
access轉(zhuǎn)mssql需要注意的問題
自動增加字段需要重寫。在access中經(jīng)常使用的自動編號字段,導(dǎo)入到mssql后,他并不是自增型的int,需要手工設(shè)置,把導(dǎo)入后的自動編號字段的標識的“否”改為“是”,“種子”和“遞增量”都為“1”,才能成為自動編號
所有的默認值都丟失了。主要是數(shù)字類型和日期類型
所有now(),time(),date()要改成getdate()
所有datediff('d', time1, time2)要改成datediff(day, time1, time2)
所有datediff('ww', time1, time2)要改成datediff(week, time1, time2)
所有datediff('d', time1, time2)要改成datediff(day, time1, time2)
在mssql server中,有許多保留字,在access中是沒有的,當你把數(shù)據(jù)導(dǎo)入到mssql的時候,問題就出來了。mssql在導(dǎo)入的時候,會自動給這些字段(包括數(shù)據(jù)庫中的表名)加上“[字段名]”,因此,你必須修改你的腳本,把相應(yīng)的字段名字(或者表名字)加上中括號,或改變字段名字為不是mssql的保留字
在用access關(guān)于時間的使用,大家喜歡使用“select * from aaaa while time="now()”這樣的sql語句,然而,在mssql中沒有“now()”這個函數(shù),而是使用“getdate()”,所以,所有的sql語句中的“now()”必須換成“getdate()”。
日期函數(shù)不相同,在對ACCESS數(shù)據(jù)庫處理中,可用date()、time()等函數(shù),但對
SQL SERVER數(shù)據(jù)庫處理中,只能用datediff,dateadd等函數(shù),而不能用date()、time()等函數(shù)。
轉(zhuǎn)化時,跟日期有關(guān)的字段,SQL SERVER默認為smalldatetime型,我們最好將它變?yōu)閐atetime型,因為datetime型的范圍比smalldatetime型大。有時用smalldatetime型時,轉(zhuǎn)化失敗,而用datetime型時,轉(zhuǎn)化成功
isnull(rowname)要改成rowname = null
CursorType要改成1,也就是打開數(shù)據(jù)庫時要給出第一個數(shù)字參數(shù)為1,否則記錄可能
顯示不完整
備注類型要通過cast(column as varchar)來使用
true/false類型不能使用,要變?yōu)?/0
對此兩種數(shù)據(jù)庫進行操作的sql語句不全相同,例如:在對ACCESS數(shù)據(jù)庫進行刪除紀錄時用:"delete * from user where id=10",而對SQL SERVER數(shù)據(jù)庫進行刪除是用:"delete user where id=10".
在對ACCESS數(shù)據(jù)庫處理中,sql語句中直接可以用一些VB的函數(shù),像cstr()函數(shù),而對SQL SERVER數(shù)據(jù)庫處理中,卻不能用
在access的sql語句中的時間使用變量查詢的時候,大家一般使用"select * from aaaa while time=#"變量名"#",在mssql中是不行的,他的語法是“select * from aaaa while time='"變量名"'"”。(意思是讓你把日期時間變量當成字符串來使用,呵呵~~~)
原來ASP里的“DELETE * FROM ……”要改為“DELETE FROM ……”
有可能rs.update失敗,修改成update 表名 set 字段=‘值’ 這樣通過(遇到的情況,提示為:
Microsoft OLE DB Provider for SQL Server 錯誤 '80040e38'
樂觀并發(fā)檢查失敗。已在此游標之外修改了該行。
/Admin_ClassOrder.asp,行 164 )
access里面除法可以使用"\"或者"/",MSSQL里面只能使用"/"
1、自動增加字段需要重寫。在access中經(jīng)常使用的自動編號字段,導(dǎo)入到mssql后,他并不是自增型的int,需要手工設(shè)置,把導(dǎo)入后的自動編號字段的標識的“否”改為“是”,“種子”和“遞增量”都為“1”,才能成為自動編號。
2、所有的默認值都丟失了。主要是數(shù)字類型和日期類型
3、所有now(),time(),date()要改成getdate()
4、所有datediff('d', time1, time2)要改成datediff(day, time1, time2)
5、所有datediff('ww', time1, time2)要改成datediff(week, time1, time2)
6、所有datediff('d', time1, time2)要改成datediff(day, time1, time2)
7、在mssql server中,有許多保留字,在access中是沒有的,當你把數(shù)據(jù)導(dǎo)入到mssql的時候,問題就出來了。mssql在導(dǎo)入的時候,會自動給這些字段(包括數(shù)據(jù)庫中的表名)加上“[字段名]”,因此,你必須修改你的腳本,把相應(yīng)的字段名字(或者表名字)加上中括號,或改變字段名字為不是mssql的保留字
8、在用access關(guān)于時間的使用,大家喜歡使用“select * from aaaa while time="now()”這樣的sql語句,然而,在mssql中沒有“now()”這個函數(shù),而是使用“getdate()”,所以,所有的sql語句中的“now()”必須換成“getdate()”。
9、日期函數(shù)不相同,在對ACCESS數(shù)據(jù)庫處理中,可用date()、time()等函數(shù),但對
SQL SERVER數(shù)據(jù)庫處理中,只能用datediff,dateadd等函數(shù),而不能用date()、time()等函數(shù)。
10、轉(zhuǎn)化時,跟日期有關(guān)的字段,SQL SERVER默認為smalldatetime型,我們最好將它變?yōu)閐atetime型,因為datetime型的范圍比smalldatetime型大。有時用smalldatetime型時,轉(zhuǎn)化失敗,而用datetime型時,轉(zhuǎn)化成功
11、isnull(rowname)要改成rowname = null
12、CursorType要改成1,也就是打開數(shù)據(jù)庫時要給出第一個數(shù)字參數(shù)為1,否則記錄可能顯示不完整
13、備注類型要通過cast(column as varchar)來使用
14、true/false類型不能使用,要變?yōu)?/0
15、對此兩種數(shù)據(jù)庫進行操作的sql語句不全相同,例如:在對ACCESS數(shù)據(jù)庫進行刪除紀錄時用:"delete * from user where id=10",而對SQL SERVER數(shù)據(jù)庫進行刪除是用:"delete user where id=10".
16、在對ACCESS數(shù)據(jù)庫處理中,sql語句中直接可以用一些VB的函數(shù),像cstr()函數(shù),而對SQL SERVER數(shù)據(jù)庫處理中,卻不能用
17、在access的sql語句中的時間使用變量查詢的時候,大家一般使用"select * from aaaa while time=#"變量名"#",在mssql中是不行的,他的語法是“select * from aaaa while time='"變量名"'"”。(意思是讓你把日期時間變量當成字符串來使用)
18、原來ASP里的“DELETE * FROM ……”要改為“DELETE FROM ……”
19、有可能rs.update失敗,修改成update 表名 set 字段=‘值’ 這樣通過
20、access里面除法可以使用"\"或者"/",MSSQL里面只能使用"/"
21、在SqlServer中建立主鍵
22、如果還有問題用:rs.open sql,conn,3,2試試
有兩種可能:
第一、你寫的字段和你數(shù)據(jù)庫實際的數(shù)量不對。
第二、user是sql server中的關(guān)鍵字要使用[user]這樣
[id]和[user]這兩個字段與SQLSERVER的保留字重復(fù)。加方括號
select
[id]
from
[user]
這個是SQLSERVER的查詢
方括號在此處并不是必須的,方括號一般是用來括用戶表中涉及的數(shù)據(jù)庫的保留字的。比如USER, ID等等之類的SQLSERVER的保留字。因為數(shù)據(jù)庫本身有這些關(guān)鍵字,而用戶創(chuàng)建自己的表時,又創(chuàng)建了這些字段,使用的時候,就需要把用戶表的這些名字的字段用方括號括起來,其他的時候不是必要的。
select * from master.dbo.spt_monitor
master表示數(shù)據(jù)庫名,dbo是數(shù)據(jù)庫用戶,spt_monitor是用戶下的表結(jié)構(gòu)。
這個語句就是查詢master庫中,dbo用戶下的spt_monitor表的數(shù)據(jù)。
而不使用前綴,select * from spt_monitor,對比上面,缺少了數(shù)據(jù)庫的指定,缺少了用戶名。
這就需要你當前執(zhí)行連接的數(shù)據(jù)庫是master庫才可以,而且登陸的用戶具備操作spt_monitor的權(quán)限。而上一個語句,指定了數(shù)據(jù)庫,所以是可以跨庫操作的。比如當前連接數(shù)據(jù)庫為northwind數(shù)據(jù)庫,第一個select * from master.dbo.spt_monitor因為指定了明確的數(shù)據(jù)庫,所以不會報錯,可是select * from spt_monitor,因為spt_monitor不屬于庫northwind,所以會報錯,找不到表。
網(wǎng)站題目:保留字sqlserver,java保留字
本文路徑:http://chinadenli.net/article24/dsejhce.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司、響應(yīng)式網(wǎng)站、動態(tài)網(wǎng)站、云服務(wù)器、商城網(wǎng)站、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)