SqlParameterCollection只接受非null的SqlParameter类型对象,而不接受String对象 [英] SqlParameterCollection only accepts non-null SqlParameter type objects, not String objects
问题描述
亲爱的所有
i搜索谷歌但没有找到确切的解决方案..请帮助解决这个问题..
我有一个程序,我用来在table..like下面插入值
但我得到的错误如下: -
SqlParameterCollection只接受非null的SqlParameter类型对象,而不是String对象。
此程序
alter PROCEDURE ReadInsert
(
@HSCP_FILE_NAME char (50)
)
as
开始
声明@PLANT_CD char (10)
声明@NEW_SUPP_CD char(20)
声明@NEW_SUPP_LOC char(10)
声明@SUPP_LOC_PROV_STAT char(10)
声明@SUPP_INVOICE_DT字符(20)
声明@NEWINVOICENO字符(20)
声明@PART_RCV_DT字符(10)
声明@OE_INVOICE_NUM字符(20)
声明@ FORM31NO字符(20)
声明@FINYEAR字符(10)
声明@ AvgD19浮动
声明@ SumD16浮动
声明@SumD24浮动
声明@DlaD24浮动
声明@DallD16浮动
声明@ValueSalesTxNw浮动
声明@ RoundD21浮动
@OEFILE char(50)= null
@VATFILE char( 50)= null
从HSCP_DETAIL_CSV中选择TOP 1 @PLANT_CD = D4_PLANT_CODE,其中HSCP_FILE_NAME = @HSCP_FILE_NAME
从HSCP_DETAIL_CSV中选择TOP 1 @NEW_SUPP_CD = D5_VENDOR_CODE,其中HSCP_FILE_NAME = @HSCP_FILE_NAME
选择TOP 1 @来自HSCP_DETAIL_CSV的NEW_SUPP_LOC = D6_VENDOR_LOC,其中HSCP_FILE_NAME = @HSCP_FILE_NAME
从HSCP_DETAIL_CSV中选择TOP 1 @SUPP_LOC_PROV_STAT = D7_VENDOR_SUPPLY_STATE,其中HSCP_FILE_NAME = @HSCP_FILE_NAME
选择TOP 1 @SUPP_INVOICE_DT = D8_INVOICE _DATE来自HSCP_DETAIL_CSV,其中HSCP_FILE_NAME = @HSCP_FILE_NAME
从HSCP_DETAIL_CSV中选择TOP 1 @NEWINVOICENO = D26_INVOICE_NO,其中HSCP_FILE_NAME = @HSCP_FILE_NAME
从HSCP_DETAIL_CSV中选择TOP 1 @PART_RCV_DT = D14_PART_RECEIVED_DATE_AT_HCIL其中HSCP_FILE_NAME = @HSCP_FILE_NAME
从HSCP_DETAIL_CSV中选择TOP 1 @OE_INVOICE_NUM = D9_INVOICE_NO_OF_THE_SUPPLIER其中HSCP_FILE_NAME = @HSCP_FILE_NAME
从HSCP_DETAIL_CSV中选择TOP 1 @ FORM31NO = D28_FORM31_NO,其中HSCP_FILE_NAME = @HSCP_FILE_NAME
选择TOP 1 @FINYEAR =来自HSCP_DETAIL_CSV的D27_FIN_YEAR,其中HSCP_FILE_NAME = @HSCP_FILE_NAME
从HSCP_DETAIL_CSV组中选择@ AvgD19 = avg(D16_BASIC_PART_COST),D26_INVOICE_NO,HSCP_FILE_NAME,HSCP_FILE_NAME = @HSCP_FILE_NAME
选择@ SumD16 =来自HSCP_DETAIL_CSV组的总和(D16_BASIC_PART_COST)D26_IN VCPICE_NO,HSCP_FILE_NAME有HSCP_FILE_NAME = @HSCP_FILE_NAME
选择@ SumD24 =来自HSCP_DETAIL_CSV组的总和(D24_EXCISE_AMOUNT)D26_INVOICE_NO,HSCP_FILE_NAME有HSCP_FILE_NAME = @HSCP_FILE_NAME
$ / b $ b选择来自HSCP_DETAIL_CSV组的@ RoundD24 = round(总和(D24_EXCISE_AMOUNT),0)D26_INVOICE_NO,HSCP_FILE_NAME有HSCP_FILE_NAME = @HSCP_FILE_NAME
选择来自HSCP_DETAIL_CSV组的@ RoundD16 = round(总和(D16_BASIC_PART_COST),0)D26_INVOICE_NO,HSCP_FILE_NAME有HSCP_FILE_NAME = @HSCP_FILE_NAME
选择@ RoundD21 =圆形(总和(D21_PURCHASE_COST),0)来自HSCP_DETAIL_CSV组D26_INVOICE_NO,HSCP_FILE_NAME有HSCP_FILE_NAME = @HSCP_FILE_NAME
INSERT INTO MAIN_OE_HEADER(PLANT_CD,NEW_SUPP_CD,NEW_SUPP_LOC,SUPP_LOC_PROV_STAT,SUPP_INVOICE_DT,NEWINVOICENO,PART_RCV_DT,PART_DESC,SALES_TAX_RATE ,
INVENTORY,TOTAL_EXCISE,TOTAL_EXCISE1,INVENTORY_NEW,TOTAL_EXCISE_NEW,SALES_TAX_NEW,TOTAL_INVOICE_AMT,STATUS,OE_INVOICE_NUM,FORM31NO,FINYEAR,OEFILE
,VATFILE)VALUES
(@ PLANT_CD,@ NEW_SUPP_CD,@ NEW_SUPP_LOC,@ SUNP_LOC_PROV_STAT,@ SUNP_INVOICE_DT,@ NEWWOICENO,@ POP_RCV_DT,'AUTOPARTS',@ AvgD19,@ SumD16, @ SumD24,
@ RoundD24,@ RoundD16,@ RoundD24,10,@ RoundD21,0,@ OE_INVOICE_NUM,@ FORM31NO,@ FINYEAR,@ OFFILE,@ VATFILE)
结束
GO
这个Frontant调用程序
con.Open();
cmd = new sqlCammadn();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText =ReadInsert;
cmd.Parameters.Add(@ HSCP_FILE_NAME,SqlDbType.Char,50).Value = FileName;
cmd。 ExecuteNonQuery();
con.Close();
sr.Close();
错误生成如下: -
SqlParameterCollection只接受非null的SqlParameter类型对象,而不接受String对象。
请帮助解决此问题...
Dear All
i searched on google but did not find exact solution.. pls help to resolve this problem..
I have a procedure and i am using to insert values in table..like below
but i got error like:-
The SqlParameterCollection only accepts non-null SqlParameter type objects, not String objects.
This PROCEDURE
alter PROCEDURE ReadInsert
(
@HSCP_FILE_NAME char(50)
)
as
Begin
declare @PLANT_CD char(10)
declare @NEW_SUPP_CD char(20)
declare @NEW_SUPP_LOC char(10)
declare @SUPP_LOC_PROV_STAT char(10)
declare @SUPP_INVOICE_DT char(20)
declare @NEWINVOICENO char(20)
declare @PART_RCV_DT char(10)
declare @OE_INVOICE_NUM char(20)
declare @FORM31NO char(20)
declare @FINYEAR char(10)
declare @AvgD19 float
declare @SumD16 float
declare @SumD24 float
declare @RoundD24 float
declare @RoundD16 float
declare @ValueSalesTxNw float
declare @RoundD21 float
@OEFILE char(50)=null
@VATFILE char(50)=null
select TOP 1 @PLANT_CD = D4_PLANT_CODE from HSCP_DETAIL_CSV where HSCP_FILE_NAME = @HSCP_FILE_NAME
select TOP 1 @NEW_SUPP_CD = D5_VENDOR_CODE from HSCP_DETAIL_CSV where HSCP_FILE_NAME = @HSCP_FILE_NAME
select TOP 1 @NEW_SUPP_LOC = D6_VENDOR_LOC from HSCP_DETAIL_CSV where HSCP_FILE_NAME = @HSCP_FILE_NAME
select TOP 1 @SUPP_LOC_PROV_STAT = D7_VENDOR_SUPPLY_STATE from HSCP_DETAIL_CSV where HSCP_FILE_NAME = @HSCP_FILE_NAME
select TOP 1 @SUPP_INVOICE_DT = D8_INVOICE_DATE from HSCP_DETAIL_CSV where HSCP_FILE_NAME = @HSCP_FILE_NAME
select TOP 1 @NEWINVOICENO = D26_INVOICE_NO from HSCP_DETAIL_CSV where HSCP_FILE_NAME = @HSCP_FILE_NAME
select TOP 1 @PART_RCV_DT = D14_PART_RECEIVED_DATE_AT_HCIL from HSCP_DETAIL_CSV where HSCP_FILE_NAME = @HSCP_FILE_NAME
select TOP 1 @OE_INVOICE_NUM = D9_INVOICE_NO_OF_THE_SUPPLIER from HSCP_DETAIL_CSV where HSCP_FILE_NAME = @HSCP_FILE_NAME
select TOP 1 @FORM31NO = D28_FORM31_NO from HSCP_DETAIL_CSV where HSCP_FILE_NAME = @HSCP_FILE_NAME
select TOP 1 @FINYEAR = D27_FIN_YEAR from HSCP_DETAIL_CSV where HSCP_FILE_NAME = @HSCP_FILE_NAME
select @AvgD19 = avg(D16_BASIC_PART_COST)from HSCP_DETAIL_CSV group by D26_INVOICE_NO , HSCP_FILE_NAME having HSCP_FILE_NAME = @HSCP_FILE_NAME
select @SumD16 = sum(D16_BASIC_PART_COST)from HSCP_DETAIL_CSV group by D26_INVOICE_NO , HSCP_FILE_NAME having HSCP_FILE_NAME = @HSCP_FILE_NAME
select @SumD24 = sum(D24_EXCISE_AMOUNT)from HSCP_DETAIL_CSV group by D26_INVOICE_NO , HSCP_FILE_NAME having HSCP_FILE_NAME = @HSCP_FILE_NAME
select @RoundD24 = round (sum(D24_EXCISE_AMOUNT),0) from HSCP_DETAIL_CSV group by D26_INVOICE_NO , HSCP_FILE_NAME having HSCP_FILE_NAME = @HSCP_FILE_NAME
select @RoundD16 = round (sum(D16_BASIC_PART_COST),0) from HSCP_DETAIL_CSV group by D26_INVOICE_NO , HSCP_FILE_NAME having HSCP_FILE_NAME = @HSCP_FILE_NAME
select @RoundD21 = round (sum(D21_PURCHASE_COST),0) from HSCP_DETAIL_CSV group by D26_INVOICE_NO , HSCP_FILE_NAME having HSCP_FILE_NAME = @HSCP_FILE_NAME
INSERT INTO MAIN_OE_HEADER ( PLANT_CD , NEW_SUPP_CD , NEW_SUPP_LOC , SUPP_LOC_PROV_STAT , SUPP_INVOICE_DT , NEWINVOICENO , PART_RCV_DT , PART_DESC , SALES_TAX_RATE ,
INVENTORY , TOTAL_EXCISE , TOTAL_EXCISE1 , INVENTORY_NEW , TOTAL_EXCISE_NEW , SALES_TAX_NEW , TOTAL_INVOICE_AMT , STATUS , OE_INVOICE_NUM , FORM31NO , FINYEAR , OEFILE
, VATFILE) VALUES
(@PLANT_CD , @NEW_SUPP_CD , @NEW_SUPP_LOC , @SUPP_LOC_PROV_STAT , @SUPP_INVOICE_DT , @NEWINVOICENO , @PART_RCV_DT , 'AUTOPARTS' , @AvgD19 , @SumD16 , @SumD24 ,
@RoundD24 , @RoundD16 , @RoundD24 , 10 , @RoundD21 , 0 , @OE_INVOICE_NUM , @FORM31NO , @FINYEAR , @OEFILE , @VATFILE )
End
GO
This Frontant to call the Procedure
con.Open();
cmd=new sqlCammadn();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "ReadInsert";
cmd.Parameters.Add("@HSCP_FILE_NAME", SqlDbType.Char,50).Value = FileName;
cmd.ExecuteNonQuery();
con.Close();
sr.Close();
Error Generate is like below:-
The SqlParameterCollection only accepts non-null SqlParameter type objects, not String objects.
Please help to resolve this problem...
推荐答案
改变这个:
Change this:
cmd.Parameters.Add("@HSCP_FILE_NAME", SqlDbType.Char,50).Value = FileName;
对此:
To this:
cmd.Parameters.AddWithValue("@HSCP_FILE_NAME", FileName);
这篇关于SqlParameterCollection只接受非null的SqlParameter类型对象,而不接受String对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!