【问题标题】:INSERT INTO error message插入错误信息
【发布时间】:2012-08-29 20:40:30
【问题描述】:

我用 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”。

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

非常感谢!

【问题讨论】:

    标签: asp.net sql-server insert


    【解决方案1】:

    用这个查询替换

    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)">
    

    【讨论】:

    • 现在看起来不错,但我有错误:'nvarchar' 附近的语法不正确。:-) 在表中我使用名称 - nvarchar(50) 邮件 - nvarchar(200) 消息 - nvarchar(MAX)我也写给 ViewForm 的相同值...
    • 中删除(昵称)
    • 完成了。新版本是:
    • 我回来了 user1634313 对不起
    【解决方案2】:

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

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

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

    【讨论】:

    • 好吧,我用 Name 代替 Name(nick) 和 Message 代替 Text 和 InsertCommand="INSERT INTO [Table1] ([Name], [E-mail], [Message]) VALUES (@Name, @E-mail, @Message)"> 现在我在“-”附近有错误消息语法不正确。必须声明标量变量“@E”。
    • @user1634313:不要在参数名称中使用任何方括号(())或破折号(-)或类似的东西 - 只使用普通字符 - 使用@name@nickname@email(没有破折号、没有括号、没有“有趣”的东西!)
    • 正如@marc_s 所说,参数名称是t-sql 的标识符。你可以在你的 Sql Books 上找到命名标识符的规则,或者在this MSDN link
    【解决方案3】:

    包含方括号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" />
    

    【讨论】:

      猜你喜欢
      • 2014-01-03
      • 1970-01-01
      • 1970-01-01
      • 2017-09-13
      • 1970-01-01
      • 1970-01-01
      • 2014-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多