如果不存在,我正在尝试插入'声明,我没有收到任何错误,并且数据库中不存在该行,但它仍然不会添加它。执行普通'插入'但是,如果“不存在”,则不起作用。已添加。
我也尝试过包括BEGIN&结束,它不起作用。
我哪里出错?
string getStudentModuleId = "SELECT ModuleId FROM StudentModuleMarks WHERE Mark < 40";
SqlCommand myCommand = new SqlCommand(getStudentModuleId, MyConnection3);
try
{
moduleid = (int)myCommand.ExecuteScalar();
string addRepeat = "IF NOT EXISTS (SELECT * FROM StudentModules WHERE ModuleId = @moduleid AND SchoolYear = '2018') INSERT INTO StudentModules(StudentDegreeId, ModuleId, Repeat, SchoolYear, EnrolledStatus) VALUES (1,@moduleid,1,'2018','Active')";
SqlCommand command = new SqlCommand(addRepeat, MyConnection3);
command.Parameters.AddWithValue("@moduleid", moduleid);
command.ExecuteNonQuery();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
答案 0 :(得分:1)
看来你正在使用sql server,对于MySQL,你可以按照这种技术插入记录,如果它不存在:
INSERT INTO StudentModules(StudentDegreeId, ModuleId, Repeat, SchoolYear, EnrolledStatus)
select 1,@moduleid, 1, '2018', 'Active' from dual
where NOT EXISTS (SELECT * FROM StudentModules WHERE ModuleId = @moduleid AND SchoolYear = '2018')
请注意,在MySQL中,您并不需要存在一个名为dual的表:它是一个特殊的表名,可用于从中选择任何内容。并且它将始终使用SELECT
查询输出单个记录。