2012-08-29 85 views
1

我使用Visual Web Developer在ASP.NET和SQL Server數據庫中創建了一個Web應用程序。在SqlDataSource我做了連接INSERT INTOINSERT INTO錯誤消息

所以我的代碼是:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
      ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
      SelectCommand="SELECT * FROM [Table1]" 
      InsertCommand="INSERT INTO [Table1] ([Name(nick)], [E-mail], [Text]) VALUES (@Name(nick), @E-mail, @Text)"> 
     <InsertParameters> 
      <asp:Parameter Name="Name(nick)" /> 
      <asp:Parameter Name="E-mail" /> 
      <asp:Parameter Name="Text" /> 
     </InsertParameters> 
</asp:SqlDataSource> 

一切看起來都很好,沒有任何錯誤。當我在網絡瀏覽器中查看我的項目,或者我開始調試時,我有正常的網頁。然後我鍵入一些文本,點擊發送按鈕和應用程序中的錯誤。

Description: Incorrect syntax near '('. Must declare the scalar variable "@Name".

Specifications: System.Data.SqlClient.SqlException: Incorrect syntax near '('. Must declare the scalar variable "@Name".

在我的表中我有所有這些值,在我的網頁中我也使用它。你能幫我解決什麼問題嗎?

非常感謝!

回答

2

與此查詢

INSERT INTO Table1 (Name, E-mail, Text) VALUES (@Name, @E-mail, @Text) 

(缺口)創建問題更換您的查詢

InsertCommand="INSERT INTO Table1 (Name, E-mail, Text) VALUES (@Name, @E-mail, @Text)"> 
+0

現在看起來很好,但我有錯誤:附近 'nvarchar的' 語法錯誤:-)在表我使用的名稱 - 爲nvarchar(50)郵件 - 爲nvarchar(200)的消息 - 爲nvarchar(MAX) 的相同的值,我也寫了ViewForm ... – astrak

+0

+0

也從(delete)刪除完成。新版本是:」 SelectCommand =「SELECT * FROM [Table1]」 InsertCommand =「INSERT INTO [Table1 ](Name,Mail,Message)VALVE(@Name,@ Mail,@Message)「> astrak

2

的語法似乎不正確。 您需要列出字段名稱,然後參數名稱
我想正確的字段是Name,並且您有一個名爲@nick的參數,但據我所知也可能是相反的。

InsertCommand="INSERT INTO [Table1] ([Name], [E-mail], [Text]) VALUES (@nick, @E-mail, @Text)" 

作爲一個側面說明,儘量避免使用的數據類型(文本)的名稱作爲字段名

+0

嗯,我用Name取代了Name(nick)和Message而不是Text和InsertCommand =「INSERT INTO [Table1]([Name],[E-mail],[Message])VALUES(@Name,@ E-mail,@Message)」>現在我有錯誤消息' - '附近語法不正確。 必須聲明標量變量「@E」。 – astrak

+2

@ user1634313:不要在你的參數名稱中使用任何括號('('和')')或破折號('-')或類似的東西 - 使用**只是簡單的字符** - 使用'@ name','' @暱稱','@電子郵件'(沒有破折號,沒有括號,沒有「有趣」的東西!) –

+0

由於@marc_s表示,參數名稱是t-sql的標識符。你可以在你的Sql Books的在線或[此MSDN鏈接](http://msdn.microsoft.com/en-us/library/ms175874.aspx)上找到規則命名標識符, – Steve

0

含參數括號Name(nick)是不允許的,它是造成問題的原因。 只需在InsertParametersInsertCommand中將其替換即可。

InsertCommand="INSERT INTO [Table1] ([Name], [E-mail], [Text]) VALUES (@Name, @E-mail, @Text)"> 
    -- [Name] is considered as column in the table 
<asp:Parameter Name="Name" />