作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将大约 500 000 个对象插入到数据库中,其中许多对象是相同的(在数据库中具有相同的主键表示),但其他字段可能不同,所以我使用方法“更新 - 如果没有行受影响 - 插入” .问题是有时一个对象的某些字段设置为 null(无法从文件中读取)并且已经在数据库中设置了一些值,因此我将其更新为 null = 删除它。)如何实现场景,您将只更新字段不为空?
这是我现在如何做的一个简单示例:
private const string UpdateKun = "UPDATE pde.Kun SET Jmeno=@Jmeno WHERE Licence=@Licence";
private const string InsertKun = "INSERT INTO pde.Kun ([Licence], [Jmeno], [VykonnostniStupen]) VALUES (@Licence, @Jmeno, @VykonnostniStupen)";
var cmd = new SqlCommand(UpdateKun, conn, tran);
cmd.Parameters.AddWithValue("@Licence", kun.Licence);
cmd.Parameters.AddWithValue("@Jmeno", kun.Jmeno);
RepairNulls(cmd.Parameters);
if (cmd.ExecuteNonQuery() > 0) return;
cmd = new SqlCommand(InsertKun, conn, tran);
cmd.Parameters.AddWithValue("@Licence", kun.Licence);
cmd.Parameters.AddWithValue("@Jmeno", kun.Jmeno);
cmd.Parameters.AddWithValue("@VykonnostniStupen", 0);
RepairNulls(cmd.Parameters);
cmd.ExecuteNonQuery();
private void RepairNulls(SqlParameterCollection col)
{
foreach (SqlParameter param in col.Cast<SqlParameter>().Where(param => param.Value == null))
{
param.Value = DBNull.Value;
}
}
最佳答案
将更新更改为:
UPDATE pde.Kun
SET Jmeno=@Jmeno
WHERE Licence=@Licence
AND @Jmeno IS NOT NULL
如果您有多个列要更新:
UPDATE pde.Kun
SET Jmeno = COALESCE(@Jmeno, Jmeno)
, ColumnB = COALESCE(@ColumnB, ColumnB)
WHERE Licence=@Licence
关于c# - 带有可选参数的 SQL 更新命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8995754/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!