Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2012 使用vb.net中的存储过程将datagridview数据插入数据库_Sql Server 2012_Vb.net 2010 - Fatal编程技术网

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

Sql server 2012 使用vb.net中的存储过程将datagridview数据插入数据库,sql-server-2012,vb.net-2010,Sql Server 2012,Vb.net 2010,我在如何使用存储过程在数据库中插入数据方面遇到了问题。每次运行我的代码时,都会出现此消息 “过程或函数'ScheduleOfficeInsert'需要参数'@SchoolYear',但未提供参数。” 以下是我的vb代码: Private Sub btnSet_Click(sender As Object, e As EventArgs) Handles btnSet.Click Dim strConn As String = "Data Source=Jansen;Initial

我在如何使用存储过程在数据库中插入数据方面遇到了问题。每次运行我的代码时,都会出现此消息 “过程或函数'ScheduleOfficeInsert'需要参数'@SchoolYear',但未提供参数。”

以下是我的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)

(“@academyyear”,My.Settings.schoolyar),改成(“@schoolyar”,My.Settings.schoolyar)哇!我没看到那张。。哈哈,谢谢你,兄弟,你帮了我大忙。哦……对不起,兄弟,我只是个初学者,我刚接触stackoverflow。请教我如何将这个问题标记为已回答。谢谢,先生在回答部分,有两个箭头按钮。向上箭头和向下箭头。你可以投票并接受答案。遵循或选择一个你认为是解决问题最好的答案。要将答案标记为已接受,请单击答案旁边的复选标记,将其从灰显切换为已填写。您可以随时更改接受的答案,或者干脆取消接受答案。