Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用存储过程的多个插入查询不起作用_C#_Sql Server_Stored Procedures - Fatal编程技术网

C# 使用存储过程的多个插入查询不起作用

C# 使用存储过程的多个插入查询不起作用,c#,sql-server,stored-procedures,C#,Sql Server,Stored Procedures,当我插入一条记录时,它已成功插入,但无法插入多条记录。我收到以下错误消息 错误:说明:在执行当前web请求期间发生未经处理的异常。请查看堆栈跟踪 有关错误以及错误来源的详细信息,请参阅 代码。异常详细信息:System.Data.SqlClient.SqlException:错误 正在将数据类型nvarchar转换为datetime。 我的Sql表 create table railbkg ( [type] nvarchar(50), sr nvarchar(50), tran_no varc

当我插入一条记录时,它已成功插入,但无法插入多条记录。我收到以下错误消息

错误:说明:在执行当前web请求期间发生未经处理的异常。请查看堆栈跟踪 有关错误以及错误来源的详细信息,请参阅 代码。异常详细信息:System.Data.SqlClient.SqlException:错误 正在将数据类型nvarchar转换为datetime。

我的Sql表

create table railbkg
(

[type] nvarchar(50),
sr nvarchar(50),
tran_no varchar(50),
pnr varchar(50),
trainno varchar(50),
fromstn varchar(50),
fromstn1 varchar(50),
boardingst nvarchar(50),
tostn varchar(50),
tostn1 varchar(50),
doj datetime,
currentstatus varchar(50),
chartprepared varchar(50),
seatno varchar(50),
status varchar(50),
dob varchar(50),
bookid varchar(50),
mth varchar(50),
basicamt nvarchar(50),
fullname1 nvarchar(50),
fullname nvarchar(50),
pax varchar(50),
class varchar(50),
btc varchar(50),
pgc_waiver nvarchar(50),
c nvarchar(50),
ichg nvarchar(50),
stonichg nvarchar(50),
bist nvarchar(50),
pgc nvarchar(50),
stonpg nvarchar(50),
netcc nvarchar(50),
pnr nvarchar(50),
pgcwamt nvarchar(50),
pgcwamtst nvarchar(50),
camt nvarchar(50),
finalamt nvarchar(50),
cancel nvarchar(50),
refund nvarchar(50),
refamt nvarchar(50),
rcptamt nvarchar(50),
refdate varchar(50),
moj varchar(50),
remarks varchar(50),
temp varchar(50),
asignstatus nvarchar(50),
id int not null,
cc_Id int,
rfid int,
statementid nvarchar(50)

)
我的存储过程

我的C代码

我不明白这段代码有什么问题

更改这些行:

comm.Parameters.AddWithValue("@dob",lb8.Text);
comm.Parameters.AddWithValue("@doj",lb6.Text);
对这些:

comm.Parameters.Add("@dob", SqlDbType.DateTime).Value = Convert.ToDateTime(lb8.Text);
comm.Parameters.Add("@doj", SqlDbType.DateTime).Value = Convert.ToDateTime(lb6.Text);
当从文本框(默认情况下返回字符串值)接收值时,所有datetime列都应转换为datetime

或者,在insert查询中将dob和doj转换为datetime来编辑SP:

CREATE procedure SPInsrailbkgCY (
-- simplified for brevity --     
@doj datetime,          
@dob datetime,
-- simplified for brevity --        
as          
begin
-- simplified for brevity --        
insert into railbkg (  
-- simplified for brevity --
,doj   
,dob 
-- simplified for brevity --         
)          
values           
( 
-- simplified for brevity --
,convert(datetime,@doj)    
,convert(datetime,@dob) 
-- simplified for brevity --
)       

嗯,错误消息实际上告诉你出了什么问题。您试图将nvarchar放入datetime,这意味着您的数据格式不可转换或映射不正确。您的
dob
类型为varchar,但存储过程为datetime。@Ibibo
@doj
SP
中的
datetime
,但是您正在
C#
code@AllanS.Hansen但是单次查询的传递没有任何错误,单次查询和多次查询的数据不同。我的cs命令运行成功,我还需要更改StoredProcess吗?只需选择一个:如果不想更改C#code,请更改SP,反之亦然,然后确保以正确的日期/时间格式插入日期时间值。或者,您可以将所有datetime文本框设置为显示日期格式掩码,因此用户需要遵守预设格式,而无需同时更改C代码和SP。
comm.Parameters.Add("@dob", SqlDbType.DateTime).Value = Convert.ToDateTime(lb8.Text);
comm.Parameters.Add("@doj", SqlDbType.DateTime).Value = Convert.ToDateTime(lb6.Text);
CREATE procedure SPInsrailbkgCY (
-- simplified for brevity --     
@doj datetime,          
@dob datetime,
-- simplified for brevity --        
as          
begin
-- simplified for brevity --        
insert into railbkg (  
-- simplified for brevity --
,doj   
,dob 
-- simplified for brevity --         
)          
values           
( 
-- simplified for brevity --
,convert(datetime,@doj)    
,convert(datetime,@dob) 
-- simplified for brevity --
)