1.ASP與Access資料庫連接: 
<%@language=VBscript%> 
<% 
dimconn,mdbfile 
mdbfile=server.mappath("資料庫名稱.mdb") 
setconn=server.createobject("adodb.connection") 
conn.open"driver={microsoft access driver 
(*.mdb)};uid=admin;pwd=資料庫密碼;dbq="&mdbfile 
%> 
2.ASP與SQL資料庫連接: 
<%@language=VBscript%> 
<% 
dimconn 
setconn=server.createobject("ADODB.connection") 
con.open"PROVIDER=SQLOLEDB;DATA 
SOURCE=SQL服務器名稱或IP地址;UID=sa;PWD=資料庫密碼;DATABASE=資料庫名稱 
%> 

建立記錄集對像: 

setrs=server.createobject("adodb.recordset") 
rs.openSQL語句,conn,3,2 

3.SQL常用命令使用方法: 
(1)資料記錄篩選: 
sql="select*from資料表where字段名=字段值orderby字段名[desc]" 
sql="select*from資料表where字段名like'%字段值%'orderby字段名[desc]" 
sql="selecttop10*from資料表where字段名orderby字段名[desc]" 
sql="select*from資料表where字段名in('值1','值2','值3')" 
sql="select*from資料表where字段名between值1and值2" 

(2)更新資料記錄: 
sql="update資料表set字段名=字段值where條件表達式" 
sql="update資料表set字段1=值1,字段2=值2……字段n=值nwhere條件表達式" 

(3)刪除資料記錄: 
sql="deletefrom資料表where條件表達式" 
sql="deletefrom資料表"(將資料表所有記錄刪除) 

(4)增加資料記錄: 
sql="insertinto資料表(字段1,字段2,字段3…)values(值1,值2,值3…)" 
sql="insertinto目標資料表select*from源資料表"(把源資料表的記錄增加到目標資料表) 

(5)資料記錄統計函數: 
AVG(字段名)得出一個表格欄平均值 
COUNT(*&brvbar;字段名)對資料行數的統計或對某一欄有值的資料行數統計 
MAX(字段名)取得一個表格欄最大的值 
MIN(字段名)取得一個表格欄最小的值 
SUM(字段名)把資料欄的值相加 
引用以上函數的方法: 
sql="selectsum(字段名)as別名from資料表where條件表達式" 
setrs=conn.excute(sql) 
用rs("別名")獲取統的計值,其它函數運用同上。 

(5)資料表的建立和刪除: 
CREATETABLE資料表名稱(字段1類型1(長度),字段2類型2(長度)……) 
例:CREATETABLEtab01(namevarchar(50),datetimedefaultnow()) 

DROPTABLE資料表名稱(永久性刪除一個資料表) 
4.記錄集對象的方法: 
rs.movenext將記錄指針從目前的位置向下移一行 
rs.moveprevious將記錄指針從目前的位置向上移一行 
rs.movefirst將記錄指針移到資料表第一行 
rs.movelast將記錄指針移到資料表最後一行 
rs.absoluteposition=N將記錄指針移到資料表第N行 
rs.absolutepage=N將記錄指針移到第N頁的第一行 
rs.pagesize=N設置每頁為N條記錄 
rs.pagecount根據pagesize的設置返回總頁數 
rs.recordcount返回記錄總數 
rs.bof返回記錄指針是否超出資料表首端,true表示是,false為否 
rs.eof返回記錄指針是否超出資料表末端,true表示是,false為否 
rs.delete刪除目前記錄,但記錄指針不會向下移動 
rs.addnew增加記錄到資料表末端 
rs.update更新資料表記錄 
--------------------------------------- 
Recordset對像方法 
Open方法 
recordset.OpenSource,ActiveConnection,CursorType,LockType,Options 
Source 
Recordset對象可以通過Source屬性來連接Command對象。Source參數可以是一個Command對像名稱、一段SQL命令、一個指定的資料表名稱或是一個Stored 
Procedure。假如省略這個參數,系統則採用Recordset對象的Source屬性。 

ActiveConnection 
Recordset對象可以通過ActiveConnection屬性來連接Connection對象。這裡的ActiveConnection可以是一個Connection對像或是一串包含資料庫連接訊息(ConnectionString)的字元串參數。 

CursorType 
Recordset對像Open方法的CursorType參數表示將以什麼樣的游標類型啟動資料,包括adOpenForwardOnly、adOpenKeyset、adOpenDynamic及adOpenStatic,分述如下: 
-------------------------------------------------------------- 
常數常數值說明 
------------------------------------------------------------- 
adOpenForwardOnly0預設值,啟動一個只能向前移動的游標(ForwardOnly)。 
adOpenKeyset1啟動一個Keyset類型的游標。 
adOpenDynamic2啟動一個Dynamic類型的游標。 
adOpenStatic3啟動一個Static類型的游標。 
------------------------------------------------------------- 
以上幾個游標類型將直接影響到Recordset對像所有的屬性和方法,以下列表說明他們之間的區別。 
------------------------------------------------------------- 
Recordset屬性adOpenForwardOnlyadOpenKeysetadOpenDynamicadOpenStatic 
------------------------------------------------------------- 
AbsolutePage不支持不支持可讀寫可讀寫 
AbsolutePosition不支持不支持可讀寫可讀寫 
ActiveConnection可讀寫可讀寫可讀寫可讀寫 
BOF只讀只讀只讀只讀 
Bookmark不支持不支持可讀寫可讀寫 
CacheSize可讀寫可讀寫可讀寫可讀寫 
CursorLocation可讀寫可讀寫可讀寫可讀寫 
CursorType可讀寫可讀寫可讀寫可讀寫 
EditMode只讀只讀只讀 
只讀 
EOF只讀只讀只讀 
只讀 
Filter可讀寫可讀寫可讀寫可讀寫 
LockType可讀寫可讀寫可讀寫可讀寫 
MarshalOptions可讀寫可讀寫可讀寫可讀寫 
MaxRecords可讀寫可讀寫可讀寫可讀寫 
PageCount不支持不支持只讀只讀 
PageSize可讀寫可讀寫可讀寫可讀寫 
RecordCount不支持不支持只讀只讀 
Source可讀寫可讀寫可讀寫可讀寫 
State只讀只讀只讀只讀 
Status只讀只讀只讀只讀 
AddNew支持支持支持支持 
CancelBatch支持支持支持支持 
CancelUpdate支持支持支持支持 
Clone不支持不支持 
Close支持支持支持支持 
Delete支持支持支持支持 
GetRows支持支持支持支持 
Move不支持支持支持支持 
MoveFirst支持支持支持支持 
MoveLast不支持支持支持支持 
MoveNext支持支持支持支持 
MovePrevious不支持支持支持支持 
NextRecordset支持支持支持支持 
Open支持支持支持支持 
Requery支持支持支持支持 
Resync不支持不支持支持支持 
Supports支持支持支持支持 
Update支持支持支持支持 
UpdateBatch支持支持支持支持 
-------------------------------------------------------------- 
其中NextRecordset方法並不適用於MicrosoftAccess資料庫。 

LockType 
Recordset對像Open方法的LockType參數表示要採用的Lock類型,如果忽略這個參數,那麼系統會以Recordset對象的LockType屬性為預設值。LockType參數包含adLockReadOnly、adLockPrssimistic、adLockOptimistic及adLockBatchOptimistic等,分述如下: 
------------------------------------------------------------- 
常數常數值說明 
-------------------------------------------------------------- 
adLockReadOnly1預設值,Recordset對像以只讀方式啟動,無法執行AddNew、Update及Delete等方法 
adLockPrssimistic2當資料源正在更新時,系統會暫時鎖住其他使用者的動作,以保持資料一致性。
adLockOptimistic3當資料源正在更新時,系統並不會鎖住其他使用者的動作,其他使用者可以對資料進行增、刪、改的操作。 
adLockBatchOptimistic4當資料源正在更新時,其他使用者必須將CursorLocation屬性改為adUdeClientBatch才能對資料進行增、 
刪、改的操作。 
Sqlserver資料庫asp調用的特殊部分 
<% 
response.writews2(1) 
w2=ws2(2) 
response.write"a" 
response.write"b"&ws2(3)&"c" 
response.write"d"&w2 
%> 

建立一個表 
createtablefriends(name1varchar(10),phonevarchar(15)) 


跟access不同,sqlserver默認的資料庫只能向後讀取,非常嚴格。 

在資料庫之間拷貝複製表格 
select*intocoolhe.dbo.mainfrommain 

刪除資料庫 
dropdatabasecoolhe 

查找替換功能 

updatecommend 
setGIF圖片=stuff(GIF圖片,1,21,"http://192.168.1.2")//替換GIF圖片字段從頭開始的21個字元為<http://192.168.1.2> 

更改記錄 
自動增加的字段無法更改 
解決辦法如下 

CREATETABLEnew_employees 

id_numintIDENTITY(1,1), 
fnamevarchar(20), 
minitchar(1), 
lnamevarchar(30) 


INSERTnew_employees 
(fname,minit,lname) 
valueS 
('Karin','F','Josephs') 


修改某個記錄 
updatemain 
setGIF圖片=』新的』whereid=4331 

增加一條記錄 
insertarticles 
(category,title,link,updatetime) 
values 
('CPU','AMDAthlonXP處理器技術與架構','20011024/01.asp','10-24-2001') 

從一個表增加記錄道另一個表 
insertmain 
selecta,b,c,dfromnew 

當main有一個字段為自動增加時,新表不能選取自動增加的字段,而避開該字段以上例的形式書寫 

查找資料庫中所有的表 

select*fromsysobjectswherextype='u' 

計算某個字段的和 

select'downloadcount'=sum(下載次數) 

檢索表定義訊息 

sp_help表名 

修改表名 

sp_rename'cool','commend' 

增加表字段(如果一次增加多字段後面不加bit) 

ALTERTABLEmain 
ADD開關bit 

altertablemainadd年齡char(3),姓名varchar(8),性別char(2) 

修改表字段類型 
原先姓名字段的類型是char(10) 
altertabletablenamealtercolumn姓名varchar(20) 

修改密碼 
EXECsp_passwordNULL,'ok','Victoria'(密碼為空時)Victoria為login的使用者名 
EXECsp_password'ok','coffee'密碼從ok改到coffee 

altertabletable_nameaddcolumncolumn_namedatatype 

  說明:增加一個欄位(沒有刪除某個欄位的語法。) 

  altertabletable_nameaddprimarykey(column_name) 

  說明:更改表得的定義把某個欄位設為主鍵。 
   
  altertabletable_namedropprimarykey(column_name) 

  說明:把主鍵的定義刪除 

將一個字段的默認值設置成0 

ALTERTABLEtable_nameADDCONSTRAINTDF_Test_FieldNameDEFAULT(0)FORFieldName 

DF_Test_FieldName不要變動 

更改字段名稱 
sp_rename'tablename.fieldname','newname','column'; 
column不要變動 

註釋 
/*select*fromnews*/或者--select*fromnews-- 
其中橫線用於插入式註釋 

setrs=cn.execute(sql)此語句返回一個SQL語句執行後的結構,把結果賦值給RS 
cn.Executesql此語句只是執行SQL語句 

資料類型+++++++++++++++++++++++++++++++++++++++++++++++++datatypes 
  smallint 
  16位元的整數。 

  interger 
  32位元的整數。 

  decimal(p,s) 
  p精確值和s大小的十進位整數,精確值p是指全部有幾個數(digits)大小值,s是指小數後有幾位數。如果沒有特別指定,則系統會設為p=5;s=0。 

  float 
  32位元的實數。 

  double 
  64位元的實數。 

  char(n) 
  n長度的字串,n不能超過254。 

  varchar(n) 
  長度不固定且其最大長度為n的字串,n不能超過4000。 

  graphic(n) 
  和char(n)一樣,不過其單位是兩個字元double-bytes,n不能超過127。這個形態是為支援兩個字元長度的字體,例如中文字。 

  vargraphic(n) 
  可變長度且其最大長度為n的雙字元字串,n不能超過2000。 

  date 
  包含了年份、月份、日期。 

  time 
  包含了小時、分鐘、秒。 

  timestamp 
  包含了年、月、日、時、分、秒、千分之一秒。 



在SQLServer中提供了這種恢復方式的預存過程。 

1.sp_attach_db[@dbname=]dbname,[@filename1=]filename_n 

  給系統增加一個資料庫,在dbname指定資料庫名稱,filename?n指定資料庫的文件和日誌文件。比如我有一個voogiya的庫,停止SQLServer服務備份voogiya_data.mdf,voogiya_log.ldf,啟動SQLserver,刪除掉這個庫,然後再把這兩上文件拷到sqlserver DATA目錄中,在QueryAnalyzer中執行如下語句: 

EXECsp_attach_db@dbname=Nvoogiya, 
@filename1=Nd:\mssql7\data\voogiya_data.mdf,(不加N時成功) 
@filename2=Nd:\mssql7\data\voogiya_log.ldf(不加N時成功) 

就會把這個庫加入到SQLServerGroup中. 
2.sp_attach_single_file_db[@dbname=]dbname, 
[@physname=]physical_name 

  這個命令和上面的功能一樣,在physical_name中只要寫上據庫的物理文件名就可以了,日誌文件SQLserver會重新建立。這個預存過程的執行要先執行下面的預存過程: 

sp_detach_db@dbname=dbname 

  同樣以上面的為例: 

EXECsp_detach_db@dbname=voogiya 
EXECsp_attach_single_file_db@dbname=voogiya, 
@physname=d:\mssql7\data\voogiya_data.mdf 

  要注意執行以上預存過程的使用者要在sysadmin中

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 share16888 的頭像
    share16888

    TechWayfarer 技術旅者

    share16888 發表在 痞客邦 留言(0) 人氣()