所以我不知道這是否可行,或者甚至是可取的,但我想知道如何在我的web服務中創建一個可以構建的更新命令動態地由用戶。基本上,目標是有一個表具有x列的數量,用戶應該能夠更新任意數量的列,而不必爲沒有更新的列傳遞null或現有值。例如,一個人可能要運行在Web服務中動態創建SQL更新命令
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服務,然後傳遞不隨值更改的現有值。
只是根本不使用任何參數來表示「set」。創建一個這樣的查詢:Query = new SqlCommand(「UPDATE dbo.calendar_table」+ 「SET」+ note + 「WHERE(id = @appointmentID)」,connection); – cha 2013-02-21 23:44:12
通常,您不能使用主變量來準備SQL語句。請注意,動態SQL是最「危險的」(因爲您擁有SQL注入的最高機會)。你在用什麼語言/框架?他們中的一些人有一種'安全'構建語句的方法,像'Query.UpdateColumn(「note」)'等等(我不知道你看起來像什麼)。 – 2013-02-22 00:42:15