更新数据库列表的最佳方法是什么?

时间:2011-06-13 11:13:07

标签: sql sql-server c#-4.0

如果我在C#中有以下从数据库加载的列表

List<User> user = GetUsers(foo);

并且它已更新,我想将这些更改存储在数据库中,使用SQL执行此操作的最佳方法是什么?它应该插入添加到该列表中的记录,更新修改后的记录并删除集合中不存在的记录。

我没有使用EntityFramework,所以我需要使用SQL。

2 个答案:

答案 0 :(得分:1)

将此列表复制到datatable并将数据表RowStat设置为(已修改,已删除,新增) 并使用sqldataadapter

更新数据表

答案 1 :(得分:1)

这是添加或插入行的示例。它会搜索具有特定UserID的行。如果该行存在,则使用update向用户授予一个点。如果该行不存在,则会使用insert创建一个新行。

var connectionString = "Data Source=myServerAddress;" +
    "Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;"
using (var con = new SqlConnection(connectionString))
{
    con.Open();
    var com = con.CreateCommand();
    com.Parameters.AddWithValue("@UserId", userId);
    com.CommandText = @"
if exists (select * from YourTable where UserId = @UserId)
    update YourTable set TrollPoints = TrollPoints + 1 where UserId = @UserId
else
    insert YourTable (UserId, TrollPoints) values (@UserId, 1)
        ";
    com.ExecuteNonQuery();
}

参数的使用允许服务器处理执行计划,并且还有助于防止SQL注入。