如果我有一个从数据库中什么是更新数据库列表的最佳方式?
List<User> user = GetUsers(foo);
装在C#下面的列表中,并进行了更新,我要在数据库中存储有什么用SQL做的最好的方式的变化?它应该插入添加到该列表中的记录,更新修改后的记录并删除集合中不存在的记录。
我没有使用EntityFramework,所以我需要使用SQL来做到这一点。
如果我有一个从数据库中什么是更新数据库列表的最佳方式?
List<User> user = GetUsers(foo);
装在C#下面的列表中,并进行了更新,我要在数据库中存储有什么用SQL做的最好的方式的变化?它应该插入添加到该列表中的记录,更新修改后的记录并删除集合中不存在的记录。
我没有使用EntityFramework,所以我需要使用SQL来做到这一点。
复制这个列表,数据表和数据表设置为RowStat(修改,删除,新的) 和更新的数据表使用的SqlDataAdapter
这里是指添加或插入一行的例子。它搜索具有特定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注入。
我正在考虑这样做,但我的问题是与在客户端中删除的项目并被发送到服务器 – groovejet 2011-06-13 16:44:20
那么不是每个人都可以选择他们在工作中使用的技术 – groovejet 2011-06-13 11:31:22
您正在使用哪个版本的SQL Server? – Andomar 2011-06-13 11:32:46
SQL Server 2008 – groovejet 2011-06-13 11:37:11