整晚我尝试了很多方法但是带参数的sql Update命令没有更新数据表。我完全消失了。执行成功并返回1行影响但旧数据未被替换。请帮帮我。
conn.Open();
string updateSql = "UPDATE tbl_cust SET fname=@fname, lname=@lname WHERE email=@email";
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 fname=@fname, lname=@lname, addrs=@address WHERE email=@email";
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 :(得分:0)
我会通过创建一个接受参数的存储过程来调试它,然后我将从SSMS(SQL Server Management Studio)手动运行该过程。在给定正确的参数的情况下确认过程本身是可行的,然后从前端调用过程而不是内联SQL(无论如何这是一种更好的方法)。
即
CREATE PROCEDURE usp_UpdateCustTable
@fname varchar(50),
@lname varchar (50),
@email varchar(50)
AS
--EXEC usp_UpdateCustTable 'Joe', 'Blow', 'joe.blow@acmecompany.com'
UPDATE tbl_cust SET fname=@fname, lname=@lname WHERE email=@email
创建proc后,运行示例的注释掉的EXEC部分。一旦您知道该过程正在运行,该问题只能归结为Session变量为空,无效的连接字符串或一些相关问题。您是否设置了断点并监控代码?
让我知道;我感觉到你的痛苦,: - )
答案 1 :(得分:0)
魔术就是......问题解决了。谢谢大家。你们都非常乐于助人。这是我在这里的第一篇文章,我很高兴看到专家组的迅速回复。再次感谢。
if (!IsPostBack)
{
}