如果我有一個從數據庫中什麼是更新數據庫列表的最佳方式?
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