2013-02-18 110 views
0

我在我的ASP.NET應用程序中的一個SQL查詢中出現奇怪的錯誤。我試圖更新的MS Access錶行,下面是我的代碼:更新查詢語法不正確:無法找到一個

try 
{ 
strQry = @"Update UserMaster set [email protected], [email protected] where [email protected]"; 
cmd.Parameters.AddWithValue("@Pwd", strUserPwd); 
cmd.Parameters.AddWithValue("@RoleID", intRoleID); 
cmd.Parameters.AddWithValue("@UserID", intUserID); 
cmd.Connection = con; 
cmd.CommandText = strQry; 
con.Open(); 
intReturn = cmd.ExecuteNonQuery(); 
con.Close(); 
} 
catch(Exception ex) 
{ 
    throw new Exception(ex.Message); 
} 

據我,有什麼我能看到的是,有與更新查詢沒有問題,因爲我從相當長的時間以來一直在使用這種方法,但是,這真是奇怪,我得到了一個異常。

任何一個可以幫助我

+0

我知道我已經通過更新參數的方式適合MS Sql,但它也適用於MS Access,直到你保持了參數順序正確。 – Cyberpks 2013-02-18 05:33:35

回答

2

其實password是保留字,你需要封裝在一個支架[]
所以您的查詢就會成爲

strQry = @"Update UserMaster set [Password][email protected], [email protected] where [email protected]"; 

其餘全部如果正確的話:)

請參閱list of reserve keywords in MS Access 2007 Database

提示:使用non-reserved關鍵詞總是值得警惕的,即使你這樣做,然後總是包括[ ]在安全的一面。因爲在你急着你不知道哪個保留關鍵詞你搞砸智慧

+0

感謝朋友,它真的沒有擊中我的頭,雖然我知道這一點。你真的很有幫助。 – Cyberpks 2013-02-18 05:40:42

+0

不客氣@Cyber​​pks :) – asifsid88 2013-02-18 05:43:25

-1

我認爲你正在使用OleDb連接到MSACCESS。

嘗試將您的參數聲明從@parameter更改爲?

更多:OleDbParameter Class

try 
{ 
    strQry = @"Update UserMaster set Password=?, RoleID=? where UserID=?"; 
    var p1 = command.CreateParameter(); 
    p1.Value = strUserPwd; 
    command.Parameters.Add(p1); 

    var p2 = command.CreateParameter(); 
    p2.Value = intRoleID; 
    command.Parameters.Add(p2); 

    var p3 = command.CreateParameter(); 
    p3.Value = intUserID; 
    command.Parameters.Add(p3); 

    cmd.Connection = con; 
    cmd.CommandText = strQry; 
    con.Open(); 
    intReturn = cmd.ExecuteNonQuery(); 
    con.Close(); 
} 
catch(Exception ex) 
{ 
    throw new Exception(ex.Message); 
} 
+0

爲什麼投票下來?可以給我原因嗎? – 2013-02-18 05:39:39

+0

可能因爲你給的答案是錯誤的。正確的答案是'password'是一個保留字。 – Corey 2013-02-18 06:07:24

+0

哦..我看...謝謝 – 2013-02-18 06:09:05