2014-01-23 32 views
1

嘗試在asp.net中的SqlDataSource中運行更新查詢時,我總是收到語法錯誤。從asp.net中的SqlDataSource獲取更新語法錯誤

UPDATE User 
SET userName = @userName, 
    password = @password, 
    UserType = @UserType, 
    datejoined = @datejoined, 
    email = @email, 
    loggedIn = @loggedIn, 
    picFilePath = @picFilePath 
WHERE 
    userName = @userName 

所有的表都保存在MS Access 2010中的文件和所有的參數保存在會話中,但我不認爲這是相關的,因爲這僅僅是一個語法錯誤。

任何幫助,將不勝感激。

+1

真的是有一個** **空間在這裏? 'loggedIn = @ loggedIn' - 應該在'@'和'loggedIn'之間有一個空格嗎? –

+0

謝謝。我沒有看到那一個。 – EatEmAll

+0

嗯,我仍然因爲某些原因出現語法錯誤。 – EatEmAll

回答

3

UserpasswordMS Access reserved words,我建議使用方括號表名和所有的列名:

UPDATE [User] 
SET [userName] = @userName, 
    [password] = @password, 
    [UserType] = @UserType, 
    [datejoined] = @datejoined, 
    [email] = @email, 
    [loggedIn] = @loggedIn, 
    [picFilePath] = @picFilePath 
WHERE 
    [userName] = @userName 
+0

謝謝,顯然密碼也是一個保留關鍵字。 – EatEmAll

+0

如果您使用表名和(理想情況下)別名,則可以避免幾乎所有保留字的問題,並且它更適合SQL,例如'SELECT t.User FROM MyTable t' – Fionnuala

2

這裏真的有空間嗎?

loggedIn = @ loggedIn 
      ^
      | 
      +---> should there be a space here? 

我不認爲應該有@loggedIn

此外之間的空間:在SQL Server中,User是保留關鍵字 - 所以在SQL Server中,你需要使用[User]代替你的表名。不知道這是否也適用於MS Access。

+0

是的,我修好了,出於某種原因,我仍然得到一個語法錯誤。 – EatEmAll