나는 Subject
클래스를가집니다. 먼저null 매개 변수를 저장 프로 시저에 보냄
public bool AddNewNews(News news, List<Subject> subject)
{
SqlParameter[] parameters = new SqlParameter[]
{
new SqlParameter ("@title",news.Title),
new SqlParameter ("@text",news.Text),
new SqlParameter ("@year",news.Year),
new SqlParameter ("@month",news.Month) ,
new SqlParameter ("@day",news.Day) ,
new SqlParameter ("@id_writer",news.Id_writer) ,
new SqlParameter ("@id_subject1",subject[0]!=null? subject[0].Id_subject:null),
new SqlParameter ("@id_subject2",subject[1]!=null? subject[1].Id_subject:null) ,
new SqlParameter ("@id_subject3",subject[2]!=null? subject[2].Id_subject:null),
new SqlParameter ("@id_subject4",subject[3]!=null? subject[3].Id_subject:null),
new SqlParameter ("@id_subject5",subject[4]!=null? subject[4].Id_subject:null)
};
return SqlDBHelper.ExecuteNonQuery("AddNewNews", CommandType.StoredProcedure, parameters);
}
: 그것은 회원 id_subject
(int
)와
그들 subjectName
(string
)
List<Subject> listSubject = new List<Subject>();
를 작성하고이 저장 프로 시저로 보내하다의 사실이 아니다 짧은 경우
개체에 캐스팅하고 저장 프로 시저로 전송
BEGIN TRANSACTION;
DECLARE @last_id_news int
BEGIN TRY
insert into news (title, text, year, month, day, id_writer)
values(@title, @text, @year, @month, @day, @id_writer)
set @last_id_news = SCOPE_IDENTITY()
if(@id_subject1 <> null)
begin
insert into news_subject (id_news, id_subject)
values (@last_id_news, @id_subject1)
end
if(@id_subject2 <> null)
begin
insert into news_subject (id_news, id_subject)
values (@last_id_news, @id_subject2)
end
if(@id_subject3 <> null)
begin
insert into news_subject (id_news, id_subject)
values (@last_id_news, @id_subject3)
end
if(@id_subject4<>null)
begin
insert into news_subject (id_news,id_subject) values (@last_id_news,@id_subject4)
end
if(@id_subject5<>null)
begin
insert into news_subject (id_news,id_subject) values (@last_id_news,@id_subject5)
end
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION;
END CATCH;
RETURN
왜 작동하지 않습니까?
'null'대신 'DBNull.Value'를 사용하십시오 (물론 C# 코드 내부). –
SP가 무엇을 반환하는지 알려주십시오. 아마도 예외일까요? –
'NULL'에 대해 평등 또는 비항 등 연산자를 사용할 수 없습니다. 이것은 ** 작동하지 않습니다 ** : if (@ id_subject4 <> null)'. 대신'IS NULL' 또는'IS NOT NULL'을 확인해야합니다. 따라서 모든 검사를 다음과 같이 바꾸십시오 : IF (@ id_subject4 IS NOT NULL) ..... –