C# 文本框中的值未插入到数据库C中

C# 文本框中的值未插入到数据库C中,c#,asp.net,database,insert,add,C#,Asp.net,Database,Insert,Add,文本框中的值从未插入数据库。只有 现在,可以插入imageName、contentType和数据。 是否应在btncapture处插入文本框查询 有人能告诉我哪里出了问题吗?这个代码至少应该在一个按钮点击中 当在中调用page_load事件时,文本框将被清除。只有在不是回发的情况下才向DB提交 由于您仅在Page_Load中运行此功能,文本字段可能没有任何用户输入,因此为空。或者你可以在回邮时做 if (!this.IsPostBack) 或者,更好的做法是,按照Jeremy Thompson

文本框中的值从未插入数据库。只有 现在,可以插入imageName、contentType和数据。 是否应在btncapture处插入文本框查询

有人能告诉我哪里出了问题吗?

这个代码至少应该在一个按钮点击中


当在中调用page_load事件时,文本框将被清除。

只有在不是回发的情况下才向DB提交

由于您仅在Page_Load中运行此功能,文本字段可能没有任何用户输入,因此为空。或者你可以在回邮时做

if (!this.IsPostBack)
或者,更好的做法是,按照Jeremy Thompson的建议,在用户单击按钮时分配一个事件处理程序。在Page_Load中执行这种逻辑通常会在以后困扰您。当其他开发人员添加UpdatePanel或其他回发事件时会发生什么?然后,此代码将在每次回发时运行。它的伸缩性不太好。看起来你已经有了一个事件处理程序-btnCapture_Click,我建议你使用它

例如:

在HTML中:

if (this.IsPostBack)
{
    // Do stuff
}
如果您在绑定按钮时遇到问题,可以查看

首先,检查您的aspx声明中是否有AutoEventWireup=true

您还可以尝试手动分配代理

protected void btnCapture_Click(object sender, EventArgs e)
{
    if (Request.InputStream.Length > 0)
        {
            using (StreamReader reader = new StreamReader(Request.InputStream))
            {
                string hexString = Server.UrlEncode(reader.ReadToEnd());
                string imageName = DateTime.Now.ToString("dd-MM-yy hh-mm-ss");
                string imagePath = string.Format("~/losefound/{0}.png", imageName);
                string ItemName = txtItemName.Text;
                string Place = txtPlace.Text;
                byte[] bytes = ConvertHexToBytes(hexString);
                File.WriteAllBytes(Server.MapPath(imagePath), bytes);
                string VisitorManagementConnectionString = ConfigurationManager.ConnectionStrings["VisitorManagementConnectionString"].ConnectionString;
                using (SqlConnection con = new SqlConnection(VisitorManagementConnectionString))
                {
                    string query = "INSERT INTO LostFound (ItemName, FoundAt, TimeIn, ImageName, ContentType, Data) VALUES(@ItemName, @FoundAt, @TimeIn, @ImageName, @ContentType, @Data);SELECT SCOPE_IDENTITY()";
                    using (SqlCommand cmd = new SqlCommand(query))
                    {
                        cmd.Connection = con;
                        cmd.Parameters.AddWithValue("@ItemName", ItemName);
                        cmd.Parameters.AddWithValue("@FoundAt", Place);
                        cmd.Parameters.AddWithValue("@TimeIn", DateTime.Now);
                        cmd.Parameters.AddWithValue("@ImageName", imageName);
                        cmd.Parameters.AddWithValue("@ContentType", "image/png");
                        cmd.Parameters.AddWithValue("@Data", bytes);
                        con.Open();

                        Session["CapturedImageId"] = cmd.ExecuteScalar();

                        con.Close();

                    }
                }
            }
        }
}  

你能分享一下存储过程吗?问题可能就在那里。ItemName和Place看起来像关键字,将其更改为不同的名称和位置check@smoksnes我已经复制粘贴了所有的代码你解决了吗?如果不是,请仔细阅读两个答案。您需要将保存到数据库的代码移动到按钮单击事件中。我看到您在问题中发布的其他代码,您确实意识到受保护的void btnCapture_Clickobject sender、EventArgs e event中没有任何内容,如@smoksnes所示。如果您在Visual Studio中使用调试器。txtItemName.Text的值是多少?一旦我调试直接跳转回发回,它就不会跳转到按钮
<asp:Button ID="Button1" runat="server" onclick="btnCapture_Click" Text="Button" />  
protected void btnCapture_Click(object sender, EventArgs e)
{
    if (Request.InputStream.Length > 0)
        {
            using (StreamReader reader = new StreamReader(Request.InputStream))
            {
                string hexString = Server.UrlEncode(reader.ReadToEnd());
                string imageName = DateTime.Now.ToString("dd-MM-yy hh-mm-ss");
                string imagePath = string.Format("~/losefound/{0}.png", imageName);
                string ItemName = txtItemName.Text;
                string Place = txtPlace.Text;
                byte[] bytes = ConvertHexToBytes(hexString);
                File.WriteAllBytes(Server.MapPath(imagePath), bytes);
                string VisitorManagementConnectionString = ConfigurationManager.ConnectionStrings["VisitorManagementConnectionString"].ConnectionString;
                using (SqlConnection con = new SqlConnection(VisitorManagementConnectionString))
                {
                    string query = "INSERT INTO LostFound (ItemName, FoundAt, TimeIn, ImageName, ContentType, Data) VALUES(@ItemName, @FoundAt, @TimeIn, @ImageName, @ContentType, @Data);SELECT SCOPE_IDENTITY()";
                    using (SqlCommand cmd = new SqlCommand(query))
                    {
                        cmd.Connection = con;
                        cmd.Parameters.AddWithValue("@ItemName", ItemName);
                        cmd.Parameters.AddWithValue("@FoundAt", Place);
                        cmd.Parameters.AddWithValue("@TimeIn", DateTime.Now);
                        cmd.Parameters.AddWithValue("@ImageName", imageName);
                        cmd.Parameters.AddWithValue("@ContentType", "image/png");
                        cmd.Parameters.AddWithValue("@Data", bytes);
                        con.Open();

                        Session["CapturedImageId"] = cmd.ExecuteScalar();

                        con.Close();

                    }
                }
            }
        }
}  
btnCapture += new EventHandler(btnCapture_Click);