探秘不同尋常的ADO.NET參數介紹
來源:易賢網 閱讀:812 次 日期:2014-08-20 14:09:04
溫馨提示:易賢網小編為您整理了“探秘不同尋常的ADO.NET參數介紹”,方便廣大網友查閱!

在ADO.NET參數中經常需要跟各種數據庫打交道,在不實用存儲過程的情況下,使用參數化SQL語句一定程度上可以防止SQL注入,同時對一些較難賦值的字段使用參數化SQL語句很容易就能賦值。

所以本人經常在ADO.NET參數化SQL語句,近幾年來陸續(xù)跟SQL Server/Oracle/ MySQL/Access打交道,積累了一些心得,現在整理出來供大家參考。我們假設數據可的結構如下圖(設置的數據庫為Oracle10g):

create table S_Admin

(

UserName varchar(60) not null,

Password varchar(60) not null,

Remarkvarchar(50) null,

Mail varchar(120)not null,

AddDate datetime null default GETDATE(),

LoginDatedatetime null default GETDATE(),

LoginIP varchar(50) null,

Activesmallint null default 1,

LoginCount intnull default 1,

Power intnull default 0,

Departid intnull default 0,

constraint PK_S_ADMIN primary key nonclustered (UserId)

)

go 需要說明的是,除了Access之外,操作其它數據庫可以不必要按照參數在SQL語句中出現的順序添加進去一樣可以正確執(zhí)行,但是在Access中一定按照插入的列的順序添加參數,因為“OLE DB.NET Framework 數據提供程序使用標有問號 (?) 的定位參數,而不使用命名參數(MSDN)”,所以給添加參數和賦值一定要按照列的順序。

通過上面的例子,基本上可以總結出一個規(guī)律:在參數化SQL中參數名的格式跟其在存儲過程中生命存儲過程參數一致,例如在Oracle中存儲過程參數一律以”:”開頭,在MS SQL Server中存儲過程參數一律以”@”開頭,而在MySQL中存儲過程(MySQL從5.0以后版本支持存儲過程)參數一律以“?

”開頭,所以在參數化SQL語句中參數名有些不一樣(記得在csdn上有朋友提到過不知道為什么MySQL中參數化SQL語句中要用“?”而不是和SQL Server一樣使用”@”),如果那位朋友看過本文,我想他就會解開這個疑慮了。

更多信息請查看IT技術專欄

更多信息請查看網絡編程
易賢網手機網站地址:探秘不同尋常的ADO.NET參數介紹

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網