很久没有遇到过这种情况,当我搜索解决方案时,我找不到。我认为它在 SQL 中称为重载。基本上,当我在这个 SQL 中的任何参数都有“”(一个空字符串)时,我不想在数据库中设置一个值......
注意:我想在 SQL 级别做而不是在 C# 级别做,因为那样马虎。
string Sql = "IF NOT EXISTS (SELECT * FROM tbl_FileSystemReferences) "
+ "INSERT INTO tbl_FileSystemReferences (UploadDir) VALUES (null) "
+ "UPDATE tbl_FileSystemReferences SET "
+ "UploadDir=@UploadDir, "
+ "ThumbnailDir=@ThumbnailDir, "
+ "ArchiveDir=@ArchiveDir, "
+ "RealDir=@RealDir, "
+ "FlashDir=@FlashDir, "
+ "AssociatedFilesDir=@AssociatedFilesDir, "
+ "EnableArchiving=@EnableArchiving, "
+ "AppWideDir=@AppWideDir, "
+ "FFmpegDir=@FFmpegDir, "
+ "InstallationDir=@InstallationDir ";
SqlCommand Command = new SqlCommand(Sql);
Command.Parameters.AddWithValue("@UploadDir", f.UploadDir);
Command.Parameters.AddWithValue("@ThumbnailDir", f.ThumbnailDir);
Command.Parameters.AddWithValue("@ArchiveDir", f.ArchiveDir);
Command.Parameters.AddWithValue("@RealDir", f.RealDir);
Command.Parameters.AddWithValue("@FlashDir", f.FlashDir);
Command.Parameters.AddWithValue("@AssociatedFilesDir", f.AssociatedFilesDir);
Command.Parameters.AddWithValue("@EnableArchiving", f.EnableArchiving);
Command.Parameters.AddWithValue("@AppWideDir", f.AppWideDir);
Command.Parameters.AddWithValue("@FFmpegDir", f.FFmpegDir);
Command.Parameters.AddWithValue("@InstallationDir", f.InstallationDir);
ExecuteNonQuery(Command);
我知道我曾经有一种方法可以使用存储过程来做到这一点,我只是不记得是如何做到的(我认为它被称为重载)......
干杯,