2014-10-18 86 views
0

整晚我試過很多方法但是帶參數的sql update命令沒有更新數據表。我完全消失了。執行成功並返回1行受影響但舊數據未被替換。請幫助我。帶參數的更新命令沒有更新數據表

conn.Open(); 
string updateSql = "UPDATE tbl_cust SET [email protected], [email protected] WHERE [email protected]"; 
SqlCommand UpdateCmd = new SqlCommand(updateSql, conn); 

UpdateCmd.Parameters.Add("@fname", SqlDbType.NVarChar, 50, "fname"); 
UpdateCmd.Parameters.Add("@lname", SqlDbType.NVarChar, 50, "lname"); 
UpdateCmd.Parameters.Add("@email", SqlDbType.NVarChar, 50, "email"); 

UpdateCmd.Parameters["@fname"].Value = txtFirstName.Text; 
UpdateCmd.Parameters["@lname"].Value = txtLastName.Text; 
UpdateCmd.Parameters["@email"].Value = Session["sesEmail"].ToString();   
UpdateCmd.ExecuteNonQuery(); 

另一種方法:(相同的結果)

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Hib"].ConnectionString); 
string upData = "UPDATE tbl_cust SET [email protected], [email protected], [email protected] WHERE [email protected]"; 

SqlCommand cmd = new SqlCommand(upData, conn); 
conn.Open(); 

cmd.Parameters.AddWithValue("@fname", fName); 
cmd.Parameters.AddWithValue("@lname", lName); 
cmd.Parameters.AddWithValue("@addrs", address); 
cmd.Parameters.AddWithValue("@email", Session["sesEmail"].ToString()); 

int n = cmd.ExecuteNonQuery(); 
Response.Write("<script>alert('rows affected = " + n + "');</script>"); 
Response.Write("<script>alert('sesEmail = " + Session["sesEmail"].ToString() + "');</script>"); 
+0

什麼是您的連接字符串? – 2014-10-18 01:49:17

+0

除此之外,如果您在SSMS中運行相同的查詢,它是否工作?你確定你指向正確的數據庫嗎?你沒有一個用於開發,一個用於生產,你指的是錯誤的? – 2014-10-18 02:01:18

+0

我認爲它是你的連接字符串,你運行後檢查錯誤的數據庫, – 2014-10-18 02:01:49

回答

0

我將通過創建接受參數的存儲過程調試此,那麼我將手動從SSMS運行該過程(SQL服務器管理工作室)。確認程序本身(給定正確的參數),然後調用該過程,而不是從前端調用內聯SQL(這是一種更好的方法)。

I.E.

CREATE PROCEDURE usp_UpdateCustTable 
@fname varchar(50), 
@lname varchar (50), 
@email varchar(50) 

AS 

--EXEC usp_UpdateCustTable 'Joe', 'Blow', '[email protected]' 


UPDATE tbl_cust SET [email protected], [email protected] WHERE [email protected] 

創建proc後,運行樣本的註釋掉的EXEC部分。一旦知道該過程正在運行,該問題只能歸結爲Session變量爲空,無效的連接字符串或一些相關問題。你是否設置了一箇中斷點並監視了代碼?

讓我知道;我感覺你的痛苦,:-)

+0

我也經歷過這種方式,但它在SSMS內工作正常。 – Mahfuzul 2014-10-18 02:29:49

+0

這很簡單,你可以忽略。那些可能是最令人沮喪的!睡一會兒,早上再試一次。 :-) – DanielG 2014-10-18 02:31:42

+0

表中是否有觸發器,即正在取消更新或將值滾回。像一個AgainOf觸發器? – DanielG 2014-10-18 02:32:40

0

而魔法是......問題解決了。謝謝大家。你們都很有幫助。這是我在這裏的第一篇文章,我很高興看到專家組的及時響應。再次感謝。

if (!IsPostBack) 
{ 

}