c# web表单提交的数据无法插入sql数据库

本文关键字:插入 sql 数据库 数据 web 表单提交 | 更新日期: 2023-09-27 18:04:51

我只是一个试图遵循教程的初学者。我确实找了一些最接近的问题,试了好几个。它们都不适合我。我只是需要一些可能出错的线索。谢谢。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
namespace Company
{
    public partial class ContactUs : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }
        public void update(string FirstName, string LastName, string EmailAddress, string MobileNumber, string category, string message)
        {
            SqlConnection conn = new SqlConnection(GetConnectionString());
            string sql = "INSERT INTO ContactInformation (GUID,FirstName, LastName, EmailAddress, Number, Category, Message) VALUES "
                        + " (@GUID,@FirstName,@LastName,@EmailAddress,@Number,@category,@message)";
              Guid guid = Guid.NewGuid();
              string guidString = guid.ToString();
            try
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand(sql, conn);
                SqlParameter[] p = new SqlParameter[7];
                p[0] = new SqlParameter("@GUID", SqlDbType.UniqueIdentifier,50);
                p[1] = new SqlParameter("@FirstName", SqlDbType.VarChar,50);
                p[2] = new SqlParameter("@LastName", SqlDbType.VarChar,50);
                p[3] = new SqlParameter("@EmailAddress", SqlDbType.VarChar,50);
                p[4] = new SqlParameter("@Number", SqlDbType.VarChar,50);
                p[5] = new SqlParameter("@Category", SqlDbType.VarChar,50);
                p[6] = new SqlParameter("@Message", SqlDbType.VarChar,50);
                p[0].Value = guid;
                p[1].Value = FirstName;
                p[2].Value = LastName;
                p[3].Value = EmailAddress;
                p[4].Value = MobileNumber;
                p[5].Value = category;
                p[6].Value = message;
                for (int i = 0; i < p.Length; i++)
                {
                    cmd.Parameters.Add(p[i]);
                }
                cmd.CommandType = CommandType.Text;
                cmd.ExecuteNonQuery();
            }
            catch (System.Data.SqlClient.SqlException ex)
            {
                string msg = "Insert Error:";
                msg += ex.Message;
                throw new Exception(msg);
            }
            finally
            {
                conn.Close();
            }
        }
        public string GetConnectionString()
        {
            return System.Configuration.ConfigurationManager.ConnectionStrings["ContactInformation"].ConnectionString;
        }
        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            if (!IsPostBack) 
            {
                Validate();
                update(txtFirstName.Text,
                                  txtLastName.Text,
                                  txtEmail.Text,
                                  txtNumber.Text,
                                  DropDownList1.SelectedItem.Text,
                                  txtMessage.Text);
                Response.Write("Record was successfully added!");
                //ClearForm(Page);
            }
        }
        public static void ClearForm(Control Parent)
        {
            if (Parent is TextBox)
            { (Parent as TextBox).Text = string.Empty; }
            else
            {
                foreach (Control c in Parent.Controls)
                    ClearForm(c);
            }
        }
    }
}

连接字符串在web中。配置文件。

<connectionStrings>
    <add name="ContactInformation" connectionString="datasource=database;initial catalog=ContactInformation;Integrated Security=SSPI;userid=xxx;password=xxx;"/>
</connectionStrings>

我在本地机器上部署了网站,并尝试在Internet Explorer上进行测试。而在另一边,我打开数据库管理工具,表仍然是空的。

c# web表单提交的数据无法插入sql数据库

您正在测试按钮单击中的回发。这可能是真的,而不是假的。把你的方法改成这样。如果你看到它写的是"postback"字符串,你需要将你的check改为IsPostBack而不是!IsPostBack另外,我不确定Validate()是什么,也没有看到它的定义。可能会导致异常。如果有问题,请将其注释掉,只是为了测试插入。

protected void btnSubmit_Click(object sender, EventArgs e)
        {
            if (!IsPostBack) 
            {
                Validate();
                update(txtFirstName.Text,
                                  txtLastName.Text,
                                  txtEmail.Text,
                                  txtNumber.Text,
                                  DropDownList1.SelectedItem.Text,
                                  txtMessage.Text);
                Response.Write("Record was successfully added!");
                //ClearForm(Page);
            } 
            else Response.Write("Postback");
        }