使用 vb.net 中的存储过程将 datagridview 数据插入数据库

insert datagridview data to database using stored procedurein vb.net

我在如何使用存储过程向我的数据库中插入数据时遇到了问题。每次 运行 我的代码都会出现此消息 "Procedure or function 'ScheduleofFeesInsert' expects parameter '@SchoolYear', which was not supplied."。

这是我的 vb 代码:

   Private Sub btnSet_Click(sender As Object, e As EventArgs) Handles btnSet.Click
    Dim strConn As String = "Data Source=Jansen;Initial 
      Catalog=SLCBRegistrarDB;Integrated Security=True"
    Dim sqlCon As SqlConnection = New SqlConnection(strConn)
    Dim i As Integer = 0
    CMD = New SqlCommand
    CMD.Connection = sqlCon
    CMD.CommandText = "ScheduleofFeesInsert"
    CMD.CommandType = CommandType.StoredProcedure
    'Save Current Fees
    sqlCon.Open()
    CMD.Parameters.AddWithValue("@AcademicYear", My.Settings.SchoolYear)
    CMD.Parameters.AddWithValue("@Period", My.Settings.CurrentPeriod)
    CMD.Parameters.Add(New SqlParameter("@FeeID", SqlDbType.Int))
    CMD.Parameters.Add(New SqlParameter("@Amount", SqlDbType.Decimal))
    For Each row As DataGridViewRow In dgvScheduleofFees.Rows
        If Not row.IsNewRow Then
            CMD.Parameters("@Amount").Value = row.Cells(0).Value
            CMD.Parameters("@FeeID").Value = row.Cells(1).Value
            CMD.ExecuteNonQuery()
        End If
    Next
    sqlCon.Close()
    End Sub

和 Sqlserver 存储过程:

USE [SLCBRegistrarDB]
GO/****** Object:  StoredProcedure [dbo].[ScheduleofFeesInsert]    Script 
 Date: 7/10/2017 4:00:34 PM ******/
 SET ANSI_NULLS ON
 GO
 SET QUOTED_IDENTIFIER ON
 GO
 ALTER PROCEDURE [dbo].[ScheduleofFeesInsert]

 @Period nvarchar(50),
 @SchoolYear nvarchar(50),
 @FeeID int,
 @Amount decimal(18,0)

 AS
 Begin
    Declare @PeriodID int
    Declare @SYID int


Select @PeriodID=SemID FROM SemesterList where Description=@Period

Select @SYID=[SY ID] FROM SchoolYear where [School Year]=@SchoolYear

INSERT INTO FEESSetup VALUES (@FeeID,@Amount,@PeriodID,@SYID)

END

我不知道我错过了什么。我试图修改我的代码,但没有任何反应。请帮忙

好吧,你正在传递学年的价值

CMD.Parameters.AddWithValue("@AcademicYear", My.Settings.SchoolYear)

但是在您的存储过程中,给定值的参数名称不同。把上面的代码改成

CMD.Parameters.AddWithValue("@SchoolYear", My.Settings.SchoolYear)