Sql server 2012 使用vb.net中的存储过程将datagridview数据插入数据库
我在如何使用存储过程在数据库中插入数据方面遇到了问题。每次运行我的代码时,都会出现此消息 “过程或函数'ScheduleOfficeInsert'需要参数'@SchoolYear',但未提供参数。” 以下是我的vb代码: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
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。请教我如何将这个问题标记为已回答。谢谢,先生在回答部分,有两个箭头按钮。向上箭头和向下箭头。你可以投票并接受答案。遵循或选择一个你认为是解决问题最好的答案。要将答案标记为已接受,请单击答案旁边的复选标记,将其从灰显切换为已填写。您可以随时更改接受的答案,或者干脆取消接受答案。