2012-09-05 80 views
-3

我已經在sql管理工作室中使用過這個查詢,它的工作原理,我試過了一個簡短的查詢,沒有and條件,它工作,爲什麼and條件破壞代碼?更新查詢不起作用c#

string dbQuery = "update log_file set updated = @true where urn = @urn and companyid = @companyid"; 
cmd.Parameters.Add(new SqlParameter("@urn", SqlDbType.Int)).Value = urn; 
cmd.Parameters.Add(new SqlParameter("@companyid", SqlDbType.Int)).Value = companyid; 
cmd.Parameters.Add(new SqlParameter("@true", SqlDbType.Bit)).Value = 0; 

cmd.CommandText = (dbQuery); 
cmd.CommandType = CommandType.Text; 
cmd.Connection = conn; 
cmd.ExecuteNonQuery(); 
+1

清除你的問題取代類型參數。 – SMK

+0

你使用什麼數據庫? –

+1

錯誤說的是什麼? – podiluska

回答

1

用位替換爲false類型

cmd.Parameters.Add(new SqlParameter("@true", SqlDbType.Bit)).Value = false; 

如果你想使用0作爲值,爲int

+2

這將意味着縮短的查詢wouldnt工作,但它的確,再加上我試圖改變類型爲int和位,並改變類型在sql服務器,它仍然無法工作 –

+0

@Candie:你有沒有能夠使用的參考0?我有一個簡短的看法(因爲它讓我感到驚訝),並找不到任何說明......鑑於1/0在SQL中工作,如果.NET驅動程序不允許它,我會感到驚訝... – Chris

2

如果and companyid = @companyid導致它無法正常工作(我假定你的意思的更新並沒有發生,而不是收到錯誤消息,那麼唯一的解釋就是要傳遞的companyid是不正確的。您可能在Management Studio中使用的是您認爲應該使用的值,而不是實際使用的值

您應該確認所有參數在調試會話中都是正確的,然後解決它們爲什麼不行, t。

+0

我已經測試過的值,它們是正確的,我將它們傳遞給manualy,因爲它是一個web服務,所以我知道值是正確的 –

+0

它也不起作用,當我將它縮短到where子句時。 –

+0

使用此方法我測試值System.Web.HttpContext.Current.Response.Write(sqlparameter [「@ urn」] .value);給我的價值,我甚至嘗試過硬編碼它。 –