Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 从SQL读取数据后无法更新数据_Asp.net_Sql_Database_Textbox - Fatal编程技术网

Asp.net 从SQL读取数据后无法更新数据

Asp.net 从SQL读取数据后无法更新数据,asp.net,sql,database,textbox,Asp.net,Sql,Database,Textbox,我在一个ASP.NETC网站上工作,我对它相当陌生,在用文本框更新SQL数据库时遇到了麻烦 如果页面加载时文本框为空,我可以使用文本框更新数据库,但如果我添加代码以最初将SQL数据从数据库拖到文本框中,则无法在提交时更改数据 protected void updatebutton_Click(object sender, EventArgs e) { SqlConnection con = new SqlConnection(ConfigurationManag

我在一个ASP.NETC网站上工作,我对它相当陌生,在用文本框更新SQL数据库时遇到了麻烦

如果页面加载时文本框为空,我可以使用文本框更新数据库,但如果我添加代码以最初将SQL数据从数据库拖到文本框中,则无法在提交时更改数据

protected void updatebutton_Click(object sender, EventArgs e)
    {

            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["overlandconnectionstring2"].ConnectionString);
            con.Open();
            string insCmd = "UPDATE Stock SET [make] = @make, [model] = @model where SID ='" + Label1.Text + "'";

            SqlCommand editUser = new SqlCommand(insCmd, con);

            editUser.Parameters.AddWithValue("@make", make.Text);
            editUser.Parameters.AddWithValue("@model", model.Text);

            try
            {

                editUser.ExecuteNonQuery();

                con.Close();
                Response.Redirect("../stockkey1.aspx");


            }
            catch (Exception)
            {
                Response.Write("<br/>Something really bad happened, Please try again<br/>");
            }

            finally
            {
                con.Close();
            }
        }
我有它,所以页面需要一个登录会话,这是会话,可以忽略

使用这段代码,它从我希望更改的字段的SQL数据库中获取数据,并将其输入到页面加载时的文本框中

protected void Page_Load(object sender, EventArgs e)
    {

        if (Session["New"] != null)
        {

            Label2.Text = Session["New"].ToString();


            SqlConnection con1 = new SqlConnection(ConfigurationManager.ConnectionStrings["overlandconnectionstring2"].ConnectionString);
            con1.Open();
            SqlDataReader myReader = null;
            SqlCommand myCommand = new SqlCommand("select * from Stock where SID='" + Label1.Text + "'", con1);
            myReader = myCommand.ExecuteReader();

            while (myReader.Read())
            {
                make.Text = (myReader["make"].ToString());
                model.Text = (myReader["model"].ToString());
            }
            con1.Close();
如果我在输入页面加载数据后编辑文本框并单击submit,代码将转到

 try
    {

        editUser.ExecuteNonQuery();

        con.Close();
        Response.Redirect("../stockkey1.aspx");


    }
    catch (Exception)
    {
        Response.Write("<br/>Something really bad happened, Please try again<br/>");
    }

    finally
    {
        con.Close();
    }
已检查但未失败,并显示响应,但未显示editUser.ExecuteOnQuery;命令并直接重定向到重定向

我唯一的想法是.ToString转换导致了这种情况,但我不确定

如果你有什么想法我很想听听

谢谢

你试过了吗
@模型,其中SID='+Label1.Text.Trim+'

检查页面是否正在页面加载事件中发回。仅在isPostback为false时加载文本框。如果没有,那么每次回发都会重新加载文本框,在更新之前丢失更改

protected void Page_Load(object sender, EventArgs e)
{ 
if (!Page.IsPostBack)
{
    if (Session["New"] != null)
    {

        Label2.Text = Session["New"].ToString();
        SqlConnection con1 = new SqlConnection(ConfigurationManager.ConnectionStrings["overlandconnectionstring2"].ConnectionString);
        con1.Open();
        SqlDataReader myReader = null;
        SqlCommand myCommand = new SqlCommand("select * from Stock where SID='" + Label1.Text + "'", con1);
        myReader = myCommand.ExecuteReader();

        while (myReader.Read())
        {
            make.Text = (myReader["make"].ToString());
            model.Text = (myReader["model"].ToString());
        }
        con1.Close();
}
}

您遇到了什么异常?没有一个异常,它忽略了异常并直接转到响应。重定向,就像它工作正常一样,只是不更新字段。您可以在Sql Server工具组件中运行Sql Profiler并检查正在触发的Sql查询吗?不要像这样将数据放入Sql字符串中:选择*from Stock,其中SID='+Label1.Text+',这是邪恶的、错误的,并将导致您的应用被黑客攻击。您已经有了在代码中使用查询参数的示例。继续做,谢谢!我一整天都在看我的博客!只需要在正确的地方输入正确的代码。