SqlParameterCollection只接受非null的SqlParameter类型对象,而不接受String对象 [英] SqlParameterCollection only accepts non-null SqlParameter type objects, not String objects

查看:56
本文介绍了SqlParameterCollection只接受非null的SqlParameter类型对象,而不接受String对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

亲爱的所有



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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆