INSERT INTO错误消息

时间:2012-08-29 20:40:30

标签: asp.net sql-server insert

我使用ASP.NET中的Visual Web Developer和SQL Server数据库创建了一个Web应用程序。在SqlDataSource我与INSERT 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>  

一切看起来都没有任何错误。当我在网络浏览器中查看我的项目或我开始调试时,我有正常的网页。然后我输入一些文本,点击发送按钮并在应用程序中出错。

  

描述:'('附近的语法不正确。必须声明标量   变量“@Name”。

     

规格:System.Data.SqlClient.SqlException:语法不正确   '('。必须声明标量变量“@Name”。

在我的表格中,我拥有所有这些价值观,在我的网页中我也使用它。你能帮我解决什么问题吗?

非常感谢!

3 个答案:

答案 0 :(得分:2)

替换此查询

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

(nick)在您的查询中创建问题

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

答案 1 :(得分:2)

语法似乎不正确。 您需要列出字段名称,然后列出参数名称
我认为正确的字段是Name,你有一个名为@nick的参数,但据我所知,也可能是相反的。

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

作为旁注,尽量避免使用数据类型名称(TEXT)作为字段名称

答案 2 :(得分: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" />