首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

ASP 與 SQL Server 存取完全手冊:連線字串、記錄集操作與常用 SQL 指令速查

     編輯:關於SqlServer

一、資料庫連線字串

1. ASP 連接 Access (Jet OLEDB)

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Path\Db.mdb;User ID=Admin;Password=;

2. ASP 連接 SQL Server (SQLOLEDB / SQLNCLI)


Provider=SQLOLEDB;Data Source=ServerName;Initial Catalog=DbName;User ID=sa;Password=Pwd;


Provider=SQLOLEDB;Data Source=ServerName;Initial Catalog=DbName;Integrated Security=SSPI;

二、建立與開啟記錄集

Set conn = Server.CreateObject("ADODB.Connection")
conn.Open connStr

Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sqlStr, conn, 3, 2  ' 3=adOpenStatic, 2=adLockOptimistic

常用 CursorType/LockType 組合:

CursorType值LockType值說明
adOpenForwardOnly0adLockReadOnly1唯讀、單向、效能最佳(預設)
adOpenStatic3adLockOptimistic3可移動、樂觀鎖定、支援 RecordCount
adOpenKeyset1adLockOptimistic3可見他人刪除、不可見新增
adOpenDynamic2adLockOptimistic3完全動態、支援書籤、成本最高

三、常用 SQL 指令速查

1. 資料篩選 (SELECT)

-- 精確比對
SELECT * FROM Table WHERE Col = 'Value' ORDER BY Col [DESC];

-- 模糊比對
SELECT * FROM Table WHERE Col LIKE '%Value%' ORDER BY Col [DESC];

-- Top N
SELECT TOP 10 * FROM Table WHERE Col = 'Value' ORDER BY Col [DESC];

-- IN 清單
SELECT * FROM Table WHERE Col IN ('V1','V2','V3');

-- 範圍
SELECT * FROM Table WHERE Col BETWEEN Val1 AND Val2;

2. 更新資料 (UPDATE)

UPDATE Table SET Col = 'Val' WHERE Condition;
UPDATE Table SET Col1='V1', Col2='V2' WHERE Condition;

3. 刪除資料 (DELETE)

DELETE FROM Table WHERE Condition;
DELETE FROM Table;  -- 刪除所有列(慎用!建議配合 TRUNCATE TABLE)

4. 新增資料 (INSERT)

INSERT INTO Table (Col1, Col2, Col3) VALUES (Val1, Val2, Val3);
INSERT INTO TargetTable SELECT * FROM SourceTable;  -- 複製資料

5. 彙總統計函數

AVG(Col)     -- 平均
COUNT(*|Col) -- 筆數 / 非 NULL 筆數
MAX(Col)     -- 最大值
MIN(Col)     -- 最小值
SUM(Col)     -- 總和

-- 使用範例
SELECT SUM(Amount) AS TotalAmt FROM Orders WHERE OrderDate > '2023-01-01';
Set rs = conn.Execute(sql)
total = rs("TotalAmt")

6. 資料表 DDL

CREATE TABLE TableName (
    Col1 VARCHAR(50),
    Col2 DATETIME DEFAULT GETDATE()
);
DROP TABLE TableName;  -- 永久刪除

四、Recordset 核心方法與屬性速查表

方法/屬性說明
MoveNext / MovePrevious游標下移/上移一列
MoveFirst / MoveLast移至第一/最後一列
AbsolutePosition = N移至第 N 列 (1-based)
AbsolutePage = N移至第 N 頁第一列
PageSize = N設定每頁筆數
PageCount回傳總頁數 (需 PageSize)
RecordCount回傳總筆數 (需 Static/Keyset 游標)
BOF / EOF游標是否超出首端/末端 (True/False)
Delete刪除當前列 (游標不自動移動)
AddNew新增列至末端
Update寫入變更

五、Recordset.Open 完整語法

recordset.Open Source, ActiveConnection, CursorType, LockType, Options
Source: SQL 字串、資料表名、預存程序、Command 物件
ActiveConnection: 連線字串或 Connection 物件
Options: adCmdText(1), adCmdTable(2), adCmdStoredProc(4), adCmdUnknown(8)

六、實務提醒

  • 參數化查詢:務必使用 Command.Parameters 防止 SQL Injection,勿拼接字串。
  • 資源釋放:rs.Close: Set rs = Nothing; conn.Close: Set conn = Nothing。
  • 游標選擇:唯讀報表用 adOpenForwardOnly, adLockReadOnly;需分頁/書籤用 adOpenStatic, adLockOptimistic。
  • RecordCount 陷阱:ForwardOnly 游標永遠回傳 -1,需用 SELECT COUNT(*) 獨立查詢。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved