我使用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”。
在我的表格中,我拥有所有这些价值观,在我的网页中我也使用它。你能帮我解决什么问题吗?
非常感谢!
答案 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)
的参数,这会导致问题。
只需将其替换为InsertParameters
和InsertCommand
。
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" />