首页 > 解决方案 > Inserting data through a stored procedure returns 'to many arguments specified' error

问题描述

I am trying to insert data into my database through a stored procedure:

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

Basically when someone enters text into tBoxQuestion1 and tBoxAnswer1/tBoxAnswer2 and they click 'done', it will upload the text into my database through the stored procedures 'AIAaronInsertA, and AIAaronInsertQ. Here is the AIAaronInsertA Stored procedure:

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

The other stored procedure is is almost identical. But when I click 'done' it gives me this error:

System.Data.SqlClient.SqlException: 'Procedure or function AIAaronInsertA has too many arguments specified.'

Anyone know a solution to this?

标签: databasevb.net

解决方案


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

尝试制作一个新的:

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

或清除现有参数:

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

我会偏好放置在 Using - End Using 块中的新对象。


推荐阅读