Давным-давно не сталкивался с этим, и когда я искал решение, я не мог его найти. Я думаю, что это называется перегрузкой в 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);
Я знаю, что есть способ сделать это с помощью хранимой процедуры, я просто не могу вспомнить, как (я думаю, это называется перегрузкой) ....
Приветствия