Analytics

2010年7月1日 星期四

[MS Access](魔鬼藏在細節裡)OleDb存取Access語法小細節 - 參數順序((Devil is in the details) OleDb access Access Syntax small details - the order parameter)


問題

OleDb存取Access語法小細節 - 參數順序
在寫ASP.NET配合Access存取資料時,發現一直無法更新內容!




解決方法

測了好久!才發現問題原來在參數的順序
帳號(@id)="admin"
密碼(@psw)="12345"
變更後的密碼(@newpsw)="11111"
語法:UPDATE User SET psw=@newpsw Where id=@id AND psw=@psw
參數順序:@newpsw@id@psw
參數值順序:@id,@newpsw@psw
在Microsoft SQL Server裡,參數順序是無關緊要的,因為DB會去比對給的參數根語法裡的參數是否相同!並且將相同的參數對應起來

但是在Access裡面,很明顯的並沒有去將參數值對應,而是用參數給的順序去對應,造成當語法在WHERE的條件裡,第2個參數@id與第3個參數@psw給的值卻是"11111","12345",造成查不到資料已致沒有更新資料!!!


那,如果資料庫好死不死有這筆資料哩。。。。

我想。。。。你會被客戶罵死吧!!!


所以順序要改成這樣
參數順序:@newpsw@id@psw
參數值順序:@newpsw@id@psw
這樣就可以了!!

以上

沒有留言:

熱門文章