通过存储过程插入数据将返回"到指定的许多参数"错误



我正试图通过存储过程将数据插入数据库:

Dim connectionString As String
connectionString = ConfigurationManager.ConnectionStrings("AIConnectionString").ConnectionString.ToString()
Dim cmd As New SqlClient.SqlCommand
Dim con As New SqlClient.SqlConnection(connectionString)
con.Open()
cmd.Connection = con
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = "AIAaronInsertQ"
cmd.Parameters.Add(New SqlParameter("@Questions", tBoxQuestion1.Text))
cmd.ExecuteNonQuery()
con.Close()
con.Open()
cmd.Connection = con
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = "AIAaronInsertA"
cmd.Parameters.Add(New SqlParameter("@Answers", tBoxAnswer1.Text))
cmd.ExecuteNonQuery()
con.Close()

基本上,当有人在tBoxQuestion1和tBoxAnswer1/tBoxAnswer2中输入文本并单击"完成"时,它会通过存储过程"AIAronInsertA和AIAronInsertQ"将文本上传到我的数据库中。以下是AIAronInsertA存储过程:

USE [AIAaronDatabase]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[AIAaronInsertA] 
(
@Answers varchar(200)
)
AS
begin
insert into AIAnswers
(
Answers
)
values
(
@Answers
)
end
GO

另一个存储过程几乎相同。但当我点击"完成"时,会出现以下错误:

System.Data.SqlClient.SqlException:"过程或函数AIARonInsertA指定的参数太多。">

有人知道解决方案吗?

您不断向现有的SQLCommand对象添加参数。

尝试制作一个新的:

...
cmd = New SqlClient.SqlCommand
cmd.Connection = con

或清除现有参数:

cmd.Parameters.Clear()
cmd = New SqlClient.SqlCommand
cmd.Connection = con

我更喜欢放置在Using-End Using块中的新对象。