使用 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)
我在如何使用存储过程向我的数据库中插入数据时遇到了问题。每次 运行 我的代码都会出现此消息 "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)