.net 值不能为null,参数名称:dataTable
我正在使用SQL数据库,并从VB.Net调用一个存储过程,然而,当我尝试并将我的DataTable转换为数据库时,我得到的错误与标题一致 我的代码是:.net 值不能为null,参数名称:dataTable,.net,sql-server,vb.net,.net,Sql Server,Vb.net,我正在使用SQL数据库,并从VB.Net调用一个存储过程,然而,当我尝试并将我的DataTable转换为数据库时,我得到的错误与标题一致 我的代码是: Dim dt As DataTable Using sqlConn As New SqlConnection(_connstr) Dim sqlcmd As New SqlCommand() Dim dateParam = sqlcmd.Parameters.Add("@reportDate", SqlDbType.Date)
Dim dt As DataTable
Using sqlConn As New SqlConnection(_connstr)
Dim sqlcmd As New SqlCommand()
Dim dateParam = sqlcmd.Parameters.Add("@reportDate", SqlDbType.Date)
Dim dateParam2 = sqlcmd.Parameters.Add("@reportDateEndRange", SqlDbType.Date)
'Dim reportType = sqlcmd.Parameters.Add("@reportType", SqlDbType.VarChar)
Dim companyId = sqlcmd.Parameters.Add("@companyID", SqlDbType.Int)
dateParam.Value = DateTime.Now.AddDays(-1)
dateParam2.Value = DateTime.Today
'reportType.Value = "'IRF', 'TRF'"
companyId.Value = 1
sqlcmd.Connection = sqlConn
sqlcmd.CommandType = CommandType.StoredProcedure
sqlcmd.CommandText = "dbo.uspSearchRequest"
Using sqlda As New SqlDataAdapter(sqlcmd)
sqlda.Fill(dt)
End Using
End Using
但是,当我到达行sqlda.Fill(dt)
时,我得到的错误与平铺一致
我已经在存储过程中测试了这些参数,并得到了结果
有没有办法阻止这一切
========================================编辑1
ALTER procedure [dbo].[uspSearchRequest]
@reportDate date,
@reportDateEndRange date,
@companyID int
as
begin
select
null as [Report Manager],
null as [Report Detail],
null as [Form],
null as [Attachment],
req.OverallStatus as [Result],
req.ReportNumber as [Report Number],
req.ReportDate as [Report Date],
req.FormNumber as [Form Number],
req.SubmittedTimestamp as [Submit Date],
req.ApplicantContactPerson as [Applicant] ,
req.Brand as [Brand],
req.Department as [Department]
from ias.dbo.request req
where req.ReportDate between @reportDate and @reportDateEndRange
and req.RequestCompanyID = @companyID
end
go
您必须首先初始化数据表:
Dim dt As DataTable = New DataTable()
很可能
dt
为空(无)。我们不知道您在哪里创建datatable…我的猜测是存储过程需要一些您没有指定的其他值,所以默认值是否为null,而数据库不允许?您可以同时显示存储过程的签名吗?在sqlda.Fill(dt)中放置一个断点,并检查dt=Nothing是否在using语句之前创建了DataTable,我将编辑问题以反映出来,现在我已使用存储的过程进行了更新。我已经设置了一个断点,是的,dt=nothingNo,DataTable是在使用之前声明的。声明和创建实例是两件不同的事情