【问题标题】:Update table record from sqlcommand从 sqlcommand 更新表记录
【发布时间】:2016-01-16 22:45:52
【问题描述】:

我有这种情况:在 DataEntryForm 我有一个下拉列表,用户选择一个字母数字,并据此插入其他相关数据。

我打算通过自动在下拉列表中选择来更改其他表中的字母状态。

我正在使用此代码:

SqlParameter answertoparam = new SqlParameter("answerto", ansTo);

string commandText = "update IncomeLetters set IncomeLetters.docState_ID ='2' where income_number=('" + ansTo + "' )";

SqlCommand findincomelett = new SqlCommand(commandText, conn);
comm.Parameters.Add(answertoparam);
conn.Open();

findincomelett.ExecuteNonQuery();
comm.ExecuteNonQuery();

不幸的是,结果什么都没有。

服务器没有给出错误,它只是刷新页面。

【问题讨论】:

    标签: c# asp.net sql-server sql-update


    【解决方案1】:

    在您发布的代码中,您将传递 SqlParameter 并将值作为原始数据传递。做任何一个,最好将其作为 SqlParameter 传递,如

            SqlParameter answertoparam = new SqlParameter("answertoparam", ansTo);
            string commandText = "update IncomeLetters set IncomeLetters.docState_ID = '2' where income_number = @answertoparam";
            SqlCommand findincomelett = new SqlCommand(commandText, conn);
            findincomelett.Parameters.Add(answertoparam);
            conn.Open();
            findincomelett.ExecuteNonQuery();
    

    此外,您有两个SqlCommand 对象并在它们上调用两个ExecuteNonQuery()。更正...见下文

            SqlCommand findincomelett = new SqlCommand(commandText, conn); --1
            comm.Parameters.Add(answertoparam); --2
    
            conn.Open();
    
            findincomelett.ExecuteNonQuery(); --1
            comm.ExecuteNonQuery(); --2
    

    【讨论】:

      【解决方案2】:

      据我了解,问题在于正确的IncomeLetters.docState_ID 未更新为“2”。

      您可能想要调试并查看您获得的价值:

      string ansTo = ddlAnswerTo.SelectedItem.Value;
      

      您希望更新的数据库中的记录可能没有满足 where 子句 'income_number = @answertoparam' 的记录

      【讨论】:

        【解决方案3】:

        我想给你带来页面的完整代码。

        想法是:我有注册页面。我正在通过存储过程 (DataInserter) 将数据传递给数据库。

        问题就在这里:在注册过程中,用户从下拉列表中选择他想回复的信件的编号,最后,DB其他表(IncomeLetters.tbl)上的信件状态会从“待处理“('1')到“已发布”('2')。

        我想,我可以向你澄清我的观点,感谢你的支持!

        protected void Button1_Click(object sender, EventArgs e)
        {
           SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["MaktubhoConnectionString2"].ConnectionString);
            using (SqlCommand comm = new SqlCommand("DataInserter", conn))
            {
                comm.CommandType = CommandType.StoredProcedure;
                comm.Connection = conn;
                SqlParameter employeeparam = new SqlParameter("EmployeeSentIndex", int.Parse(ddlemployee.SelectedItem.Value));
                SqlParameter doctypeparam = new SqlParameter("doctype_ID", int.Parse(ddldoctype.SelectedItem.Value));
                SqlParameter doccharparam = new SqlParameter("docchar_ID", int.Parse(ddldocchar.SelectedItem.Value));
                SqlParameter authorityparam = new SqlParameter("authority", txtauthority.Text);
                SqlParameter subjectparam = new SqlParameter("subject", txtsubject.Text);
        
                DateTime dt = DateTime.Now;
                string todasdate = dt.ToString("d", CultureInfo.CreateSpecificCulture("de-DE"));
                SqlParameter entrydateparam = new SqlParameter("entrydate", todasdate);
        
                string Pathname = "UploadImages/" + Path.GetFileName(FileUpload1.PostedFile.FileName);
                SqlParameter imagepathparam = new SqlParameter("image_path",  Pathname);
                SqlParameter loginparam = new SqlParameter("login", "jsomon");
        
                comm.Parameters.Add(employeeparam);
                comm.Parameters.Add(doctypeparam);
                comm.Parameters.Add(doccharparam);
                comm.Parameters.Add(authorityparam);
                comm.Parameters.Add(subjectparam);
                comm.Parameters.Add(entrydateparam);
                comm.Parameters.Add(imagepathparam);
                comm.Parameters.Add(loginparam);
                comm.Parameters.Add("@forlabel", SqlDbType.VarChar, 100);
                comm.Parameters["@forlabel"].Direction = ParameterDirection.Output;
                FileUpload1.SaveAs(Server.MapPath("~/UploadImages/" + FileUpload1.FileName));
                string ansTo = ddlAnswerTo.SelectedItem.Value;
                SqlParameter answertoparam = new SqlParameter("answertoparam", ansTo);
                string commandText = "update IncomeLetters set IncomeLetters.docState_ID = '2' where income_number = @answertoparam";
                SqlCommand findincomelett = new SqlCommand(commandText, conn);
                findincomelett.Parameters.Add(answertoparam);
                    conn.Open();
                    findincomelett.ExecuteNonQuery();
                    comm.ExecuteNonQuery();
                    lblresult.Visible = true;
                    Image1.Visible = true;
                    lblresult.Text = "Document number:";
                    lblnumber.Visible = true;
                    lblnumber.Text = (string)comm.Parameters["@forlabel"].Value; ;
                    conn.Close();
                }
        
            txtauthority.Text = "";
            txtsubject.Text = "";
        }
        

        【讨论】:

        • 如果您需要修改您的问题,编辑您的问题 - 不要发布 dummy 回答您自己的问题.....
        猜你喜欢
        • 2020-10-31
        • 2012-07-18
        • 2012-11-22
        • 2021-12-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多