所以我不知道这是否可能,甚至是否可取,但我试图弄清楚如何在我的网络服务中创建一个可由用户动态构建的更新命令。基本上,目标是有一个包含 x 个列的表,并且用户应该能够更新任意数量的列,而不必为未更新的列传递 null 或现有值。例如,一个人可能想跑步
UPDATE calendar_table
SET title = 'Some new Title'
WHERE (id = 12344)
而另一个用户可能想要执行此操作
UPDATE calendar_table
SET title = 'New Event', type = 'Meeting', note = 'Meet with new client'
WHERE (id = 12344)
所以下面是我试图使用的,但我不断收到一个异常,指出“WHERE”附近有一个问题,这让我相信这与我试图处理更新字符串的方式有关
String MyConnStr = ConfigurationManager.ConnectionStrings["MainConnStr"].ConnectionString;
SqlConnection connection = new SqlConnection(MyConnStr);
SqlCommand Query = new SqlCommand("UPDATE dbo.calendar_table " +
"SET @newText " +
"WHERE (id = @appointmentID)", connection);
Query.Parameters.Add("@newText", SqlDbType.VarChar).Value = note;
Query.Parameters.Add("@appointmentID", SqlDbType.VarChar).Value = appointment;
Query.CommandType = CommandType.Text;
try
{
connection.Open();
Query.ExecuteNonQuery();
}
catch (Exception ex)
{
Debug.WriteLine(ex);
}
finally
{
connection.Close();
Query.Dispose();
}
任何帮助或想法将不胜感激,因为我能想到的唯一其他选择就是创建具有所有可能值的 Web 服务,然后将未更改的现有值与值一起传递。